From 21df5ff4b52b3c9958a79a05473262a223c818b8 Mon Sep 17 00:00:00 2001 From: Alexandru Ardelean Date: Wed, 22 Apr 2026 12:27:22 +0300 Subject: [PATCH] erlang: update to 28.5 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 --- lang/erlang/Makefile | 4 ++-- lang/erlang/test-version.sh | 11 +++++++++++ lang/erlang/test.sh | 29 +++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 lang/erlang/test-version.sh create mode 100644 lang/erlang/test.sh diff --git a/lang/erlang/Makefile b/lang/erlang/Makefile index 2d0a3fc888..db0588bcff 100644 --- a/lang/erlang/Makefile +++ b/lang/erlang/Makefile @@ -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 index 0000000000..5e739f52c3 --- /dev/null +++ b/lang/erlang/test-version.sh @@ -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 index 0000000000..dea2824790 --- /dev/null +++ b/lang/erlang/test.sh @@ -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