erlang: update to 28.5
authorAlexandru Ardelean <redacted>
Wed, 22 Apr 2026 09:27:22 +0000 (12:27 +0300)
committerAlexandru Ardelean <redacted>
Sun, 10 May 2026 08:31:30 +0000 (11:31 +0300)
Upstream release 28.5 (2026-04-23), patch release for OTP 28.

Applications updated:
- erl_interface-5.7: new --{enable,disable}-use-embedded-3pp-alternatives
  configure option; allows using system zstd, zlib, ryu, openssl, tcl
  instead of bundled copies (default: zlib uses OS version if available)
- erts-16.4: fixed bug in enif_make_map_from_arrays for arrays with >= 33
  keys (duplicates could produce broken maps); fixed Unicode handling in
  erl.exe args_file on Windows
- mnesia-4.25.3: bug fixes
- ssl-11.6: bug fixes

Highlight: new "Secure Coding Guidelines" document added to Design
Principles describing how to write secure Erlang code.

Reference: https://github.com/erlang/otp/releases/tag/OTP-28.5

Signed-off-by: Alexandru Ardelean <redacted>
lang/erlang/Makefile
lang/erlang/test-version.sh [new file with mode: 0644]
lang/erlang/test.sh [new file with mode: 0644]

index 2d0a3fc8885bf18dd4992e22aaba379d373b02c5..db0588bcff2c9f469e01feedc6ee51fbfd121fa0 100644 (file)
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=erlang
-PKG_VERSION:=28.0.3
+PKG_VERSION:=28.5
 PKG_RELEASE:=1
 
 PKG_SOURCE:=otp_src_$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://github.com/erlang/otp/releases/download/OTP-$(PKG_VERSION)
-PKG_HASH:=0cdf3b44e327439ea6677e61e06f28a0f82ea080af2dcbd665bc5a945b167012
+PKG_HASH:=2c7e8ca23e6864eb20eff5d44738bfa123aed8cd21ed6d98e533d751eee28d9c
 
 PKG_LICENSE:=Apache-2.0
 PKG_LICENSE_FILES:=LICENSE.txt
diff --git a/lang/erlang/test-version.sh b/lang/erlang/test-version.sh
new file mode 100644 (file)
index 0000000..5e739f5
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+# erl -version prints ERTS version, not OTP release — use system_info instead
+case "$1" in
+erlang)
+       otp_major="${2%%.*}"
+       timeout 60s erl -noshell \
+               -eval "V = erlang:system_info(otp_release), io:format(\"OTP ~s~n\", [V])" \
+               -s init stop 2>&1 | \
+               grep -qF "OTP ${otp_major}"
+       ;;
+esac
diff --git a/lang/erlang/test.sh b/lang/erlang/test.sh
new file mode 100644 (file)
index 0000000..dea2824
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+case "$1" in
+erlang)
+       # Check erl binary is present and prints the right OTP version
+       otp_major="${2%%.*}"
+       timeout 60s erl -noshell -eval "V = erlang:system_info(otp_release), io:format(\"OTP ~s~n\", [V])" -s init stop 2>&1 | \
+               grep -qF "OTP ${otp_major}" || {
+               echo "FAIL: erl did not report expected OTP version '$2' (major: $otp_major)"
+               exit 1
+       }
+       echo "erl OTP version: OK"
+
+       # Verify epmd (Erlang port mapper daemon) is present
+       [ -x /usr/bin/epmd ] || [ -x /usr/lib/erlang/bin/epmd ] || {
+               echo "FAIL: epmd not found"
+               exit 1
+       }
+       echo "epmd: OK"
+
+       # Basic arithmetic eval
+       result=$(timeout 60s erl -noshell -eval "io:format(\"~w~n\", [2+2])" -s init stop 2>/dev/null)
+       [ "$result" = "4" ] || {
+               echo "FAIL: erl basic eval returned '$result', expected '4'"
+               exit 1
+       }
+       echo "erl eval: OK"
+       ;;
+esac
git clone https://git.99rst.org/PROJECT