Packages

nerves_system_br

1.32.4
1.34.0 1.33.9 1.33.8 1.33.7 1.33.6 1.33.5 1.33.4 1.33.3 1.33.2 1.33.1 1.33.0 1.32.5 1.32.4 1.32.3 1.32.2 1.32.1 1.32.0 1.31.7 1.31.6 1.31.5 1.31.4 1.31.3 1.31.2 1.31.1 1.31.0 1.30.1 1.30.0 1.29.3 1.29.2 1.29.1 1.29.0 1.28.3 1.28.2 1.28.1 1.28.0 1.27.3 1.27.2 1.27.1 1.27.0 1.26.1 1.26.0 1.25.3 1.25.2 1.25.1 1.25.0 1.24.1 1.24.0 1.23.3 1.23.2 1.23.1 1.23.0 1.22.8 1.22.7 1.22.6 1.22.5 1.22.4 1.22.3 1.22.2 1.22.1 1.22.0 1.21.6 1.21.5 1.21.4 1.21.3 1.21.2 1.21.1 1.21.0 1.20.6 1.20.5 1.20.4 1.20.3 1.20.2 1.20.1 1.20.0 1.19.1 1.19.0 1.18.6 1.18.5 1.18.4 1.18.3 1.18.2 1.18.1 1.18.0 1.17.4 1.17.3 1.17.2 1.17.1 1.17.0 1.16.5 1.16.4 1.16.3 1.16.2 1.16.1 1.16.0 1.15.2 1.15.1 1.15.0 1.14.5 1.14.4 1.14.3 1.14.2 1.14.1 1.14.0 1.13.8 1.13.7 1.13.6 1.13.5 1.13.4 1.13.3 1.13.2 1.13.1 1.13.0 1.12.4 1.12.3 1.12.2 1.12.1 1.12.0 1.12.0-rc.0 1.11.4 1.11.3 1.11.2 1.11.1 1.11.0 1.10.3 1.10.2 1.10.1 1.10.0 1.9.5 1.9.4 1.9.3 1.9.2 1.9.1 1.9.0 1.8.6 1.8.5 1.8.4 1.8.3 1.8.2 1.8.1 1.8.0 1.7.3 1.7.2 1.7.1 1.7.0 1.6.8 1.6.7 1.6.6 1.6.5 1.6.4 1.6.3 1.6.2 1.6.1 1.6.0 1.5.6 1.5.5 1.5.4 1.5.3 1.5.2 1.5.1 1.5.0 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.2 1.3.1 1.3.0 1.2.2 1.2.1 1.2.0 1.1.0 1.0.1 1.0.0 1.0.0-rc.4 1.0.0-rc.3 1.0.0-rc.2 1.0.0-rc.1 1.0.0-rc.0 0.17.0 0.16.4 0.16.3 0.16.2 0.16.1-2017-11 0.16.0-2017-11 0.15.1 0.15.0 0.14.1 0.14.0 0.13.9 0.13.8 0.13.7 0.13.6 0.13.5 0.13.4 retired 0.13.3 0.13.2 0.13.0 0.12.1 0.12.0 0.11.1 0.11.0 0.10.1 0.10.0 0.9.4 0.9.3 0.9.2 0.9.1 0.9.0 0.8.2 0.8.1 0.8.0 0.7.0 0.6.1 0.6.0 0.5.2 0.5.1 0.5.0 0.4.2 0.4.1

Nerves System BR - Buildroot based build platform for Nerves Systems

Current section

Files

Jump to
nerves_system_br patches buildroot 0007-erlang-support-OTP-21-28.patch
Raw

patches/buildroot/0007-erlang-support-OTP-21-28.patch

From f773128371f0f3b1cdf788bb814f52e36f4e4540 Mon Sep 17 00:00:00 2001
From: Frank Hunleth <fhunleth@troodon-software.com>
Date: Tue, 11 Sep 2018 12:28:41 -0400
Subject: [PATCH] erlang: support OTP 21 - 28
This also adds the deterministic compile flag patch for OTP 21-24. On
OTP 26+, it enables the configuration option for deterministic
builds.
Signed-off-by: Frank Hunleth <fhunleth@troodon-software.com>
---
...truct-libatomic_ops-we-do-require-CA.patch | 70 +++++++++++++++++
...ulator-reorder-inclued-headers-paths.patch | 46 +++++++++++
...-with-LDLIBS-instead-of-LIBS-for-DED.patch | 42 ++++++++++
...4-erlang-enable-deterministic-builds.patch | 28 +++++++
...truct-libatomic_ops-we-do-require-CA.patch | 71 +++++++++++++++++
...ulator-reorder-inclued-headers-paths.patch | 49 ++++++++++++
...3-erlang-enable-deterministic-builds.patch | 28 +++++++
...-update-df-call-to-work-with-Busybox.patch | 28 +++++++
...truct-libatomic_ops-we-do-require-CA.patch | 71 +++++++++++++++++
...ulator-reorder-inclued-headers-paths.patch | 49 ++++++++++++
...3-erlang-enable-deterministic-builds.patch | 28 +++++++
...-update-df-call-to-work-with-Busybox.patch | 28 +++++++
...truct-libatomic_ops-we-do-require-CA.patch | 71 +++++++++++++++++
...ulator-reorder-inclued-headers-paths.patch | 49 ++++++++++++
...3-erlang-enable-deterministic-builds.patch | 28 +++++++
...-update-df-call-to-work-with-Busybox.patch | 28 +++++++
...ulator-reorder-inclued-headers-paths.patch | 49 ++++++++++++
...-update-df-call-to-work-with-Busybox.patch | 28 +++++++
...-update-df-call-to-work-with-Busybox.patch | 77 +++++++++++++++++++
.../0002-erlang-libei-arch-compile.patch | 31 ++++++++
...-update-df-call-to-work-with-Busybox.patch | 77 +++++++++++++++++++
...-update-df-call-to-work-with-Busybox.patch | 57 ++++++++++++++
package/erlang/Config.in | 52 +++++++++++++
package/erlang/erlang.hash | 18 ++++-
package/erlang/erlang.mk | 43 ++++++++++-
25 files changed, 1143 insertions(+), 3 deletions(-)
create mode 100644 package/erlang/21.3.8.24/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
create mode 100644 package/erlang/21.3.8.24/0002-erts-emulator-reorder-inclued-headers-paths.patch
create mode 100644 package/erlang/21.3.8.24/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch
create mode 100644 package/erlang/21.3.8.24/0004-erlang-enable-deterministic-builds.patch
create mode 100644 package/erlang/22.3.4.26/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
create mode 100644 package/erlang/22.3.4.26/0002-erts-emulator-reorder-inclued-headers-paths.patch
create mode 100644 package/erlang/22.3.4.26/0003-erlang-enable-deterministic-builds.patch
create mode 100644 package/erlang/22.3.4.26/0004-disksup-update-df-call-to-work-with-Busybox.patch
create mode 100644 package/erlang/23.3.4.14/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
create mode 100644 package/erlang/23.3.4.14/0002-erts-emulator-reorder-inclued-headers-paths.patch
create mode 100644 package/erlang/23.3.4.14/0003-erlang-enable-deterministic-builds.patch
create mode 100644 package/erlang/23.3.4.14/0004-disksup-update-df-call-to-work-with-Busybox.patch
create mode 100644 package/erlang/24.3.2/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
create mode 100644 package/erlang/24.3.2/0002-erts-emulator-reorder-inclued-headers-paths.patch
create mode 100644 package/erlang/24.3.2/0003-erlang-enable-deterministic-builds.patch
create mode 100644 package/erlang/24.3.2/0004-disksup-update-df-call-to-work-with-Busybox.patch
create mode 100644 package/erlang/25.3.2/0001-erts-emulator-reorder-inclued-headers-paths.patch
create mode 100644 package/erlang/25.3.2/0003-disksup-update-df-call-to-work-with-Busybox.patch
create mode 100644 package/erlang/26.2.5/0001-disksup-update-df-call-to-work-with-Busybox.patch
create mode 100644 package/erlang/26.2.5/0002-erlang-libei-arch-compile.patch
create mode 100644 package/erlang/27.3.4.3/0001-disksup-update-df-call-to-work-with-Busybox.patch
create mode 100644 package/erlang/28.1.1/0001-disksup-update-df-call-to-work-with-Busybox.patch
diff --git a/package/erlang/21.3.8.24/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch b/package/erlang/21.3.8.24/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
new file mode 100644
index 0000000000..8e401430fe
--- /dev/null
+++ b/package/erlang/21.3.8.24/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
@@ -0,0 +1,70 @@
+From 439fa2eae78a8900bda120072335be19d626498c Mon Sep 17 00:00:00 2001
+From: "Yann E. MORIN" <yann.morin.1998@free.fr>
+Date: Sun, 28 Dec 2014 23:39:40 +0100
+Subject: [PATCH] erts/ethread: instruct libatomic_ops we do require CAS
+
+We do require compare-and-swap (CAS), so we must instruct libatomic_ops
+to provide it, even if the architecture does not have instructions for
+it.
+
+For example, on ARM, LDREX is required for fast CAS. But LDREX is only
+available on ARMv6, so by default libatomic_ops will not have CAS for
+anything below, like ARMv5. But ARMv5 is always UP, so using an
+emulated CAS (that is signal-asyn-safe) is still possible (albeit much
+slower).
+
+Tell libatomic_ops to provide CAS, even if the hardware is not capable
+of it, by using emulated CAS, as per libatomic_ops dosc:
+ https://github.com/ivmai/libatomic_ops/blob/master/doc/README.txt#L28
+
+ If this is included after defining AO_REQUIRE_CAS, then the package
+ will make an attempt to emulate compare-and-swap in a way that (at
+ least on Linux) should still be async-signal-safe.
+
+Thanks go to Thomas for all this insight! :-)
+Thanks go to Frank for reporting the issue! :-)
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Cc: Frank Hunleth <fhunleth@troodon-software.com>
+---
+ erts/include/internal/libatomic_ops/ethread.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/erts/include/internal/libatomic_ops/ethread.h b/erts/include/internal/libatomic_ops/ethread.h
+index d65ee19..71d3598 100644
+--- a/erts/include/internal/libatomic_ops/ethread.h
++++ b/erts/include/internal/libatomic_ops/ethread.h
+@@ -35,6 +35,7 @@
+
+ #define ETHR_NATIVE_IMPL__ "libatomic_ops"
+
++#define AO_REQUIRE_CAS
+ #include "atomic_ops.h"
+ #include "ethr_membar.h"
+ #include "ethr_atomic.h"
+diff --git a/erts/aclocal.m4 b/erts/aclocal.m4
+index d65ee19..71d3598 100644
+--- a/erts/aclocal.m4
++++ b/erts/aclocal.m4
+@@ -1414,7 +1414,8 @@
+ fi;;
+ esac
+ ethr_have_libatomic_ops=no
+- AC_TRY_LINK([#include "atomic_ops.h"],
++ AC_TRY_LINK([#define AO_REQUIRE_CAS
++ #include "atomic_ops.h"],
+ [
+ volatile AO_t x;
+ AO_t y;
+@@ -1455,6 +1455,7 @@
+ AC_CHECK_SIZEOF(AO_t, ,
+ [
+ #include <stdio.h>
++ #define AO_REQUIRE_CAS
+ #include "atomic_ops.h"
+ ])
+ AC_DEFINE_UNQUOTED(ETHR_SIZEOF_AO_T, $ac_cv_sizeof_AO_t, [Define to the size of AO_t if libatomic_ops is used])
+--
+1.9.1
+
diff --git a/package/erlang/21.3.8.24/0002-erts-emulator-reorder-inclued-headers-paths.patch b/package/erlang/21.3.8.24/0002-erts-emulator-reorder-inclued-headers-paths.patch
new file mode 100644
index 0000000000..7a6e469dff
--- /dev/null
+++ b/package/erlang/21.3.8.24/0002-erts-emulator-reorder-inclued-headers-paths.patch
@@ -0,0 +1,46 @@
+From 85a3e5b4f65e5284e59dcdd90e92ea7d50ef6907 Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@openwide.fr>
+Date: Sun, 8 Feb 2015 17:23:13 +0100
+Subject: [PATCH] erts/emulator: reorder inclued headers paths
+
+If the Perl Compatible Regular Expressions is installed on the
+host and the path to the headers is added to the CFLAGS, the
+pcre.h from the host is used instead of the one provided by
+erlang.
+
+Erlang use an old version of this file which is incompatible
+with the upstream one.
+
+Move INCLUDES before CFLAGS to use pcre.h from erlang.
+
+http://autobuild.buildroot.net/results/cbd/cbd8b54eef535f19d7d400fd269af1b3571d6143/build-end.log
+
+Signed-off-by: Romain Naour <romain.naour@openwide.fr>
+[Bernd: rebased for erlang-21.0]
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+---
+ erts/emulator/Makefile.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/erts/emulator/Makefile.in b/erts/emulator/Makefile.in
+index 7145824..d079487 100644
+--- a/erts/emulator/Makefile.in
++++ b/erts/emulator/Makefile.in
+@@ -712,7 +712,7 @@
+ # Usually the same as the default rule, but certain platforms (e.g. win32) mix
+ # different compilers
+ $(OBJDIR)/beam_emu.o: beam/beam_emu.c
+- $(V_EMU_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
++ $(V_EMU_CC) $(INCLUDES) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) -c $< -o $@
+
+ $(OBJDIR)/beam_emu.S: beam/beam_emu.c
+ $(V_EMU_CC) -S -fverbose-asm $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
+@@ -765,7 +765,7 @@
+ # General targets
+ #
+ $(OBJDIR)/%.o: beam/%.c
+- $(V_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
++ $(V_CC) $(INCLUDES) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) -c $< -o $@
+
+ $(OBJDIR)/%.o: $(TARGET)/%.c
+ $(V_CC) $(CFLAGS) $(INCLUDES) -Idrivers/common -c $< -o $@
diff --git a/package/erlang/21.3.8.24/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch b/package/erlang/21.3.8.24/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch
new file mode 100644
index 0000000000..ad0bb6b453
--- /dev/null
+++ b/package/erlang/21.3.8.24/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch
@@ -0,0 +1,42 @@
+From 011752ec7b31e3dde376270fc65c7ee70644f6e7 Mon Sep 17 00:00:00 2001
+From: Johan Oudinet <johan.oudinet@gmail.com>
+Date: Wed, 6 Dec 2017 15:01:17 +0100
+Subject: [PATCH] Link with LDLIBS instead of LIBS for DED
+
+Fix ERL-529 by avoiding to link with libz for no reason.
+
+Signed-off-by: Johan Oudinet <johan.oudinet@gmail.com>
+---
+ lib/asn1/c_src/Makefile | 2 +-
+ lib/runtime_tools/c_src/Makefile.in | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/lib/asn1/c_src/Makefile b/lib/asn1/c_src/Makefile
+index 1f714df357..f7c6b8b9bc 100644
+--- a/lib/asn1/c_src/Makefile
++++ b/lib/asn1/c_src/Makefile
+@@ -126,7 +126,7 @@ $(NIF_LIB_FILE): $(NIF_STATIC_OBJ_FILES)
+ $(V_RANLIB) $@
+
+ $(NIF_SHARED_OBJ_FILE): $(NIF_OBJ_FILES)
+- $(V_LD) $(LDFLAGS) -o $(NIF_SHARED_OBJ_FILE) $(NIF_OBJ_FILES) $(CLIB_FLAGS) $(LIBS)
++ $(V_LD) $(LDFLAGS) -o $(NIF_SHARED_OBJ_FILE) $(NIF_OBJ_FILES) $(CLIB_FLAGS) $(LDLIBS)
+
+ # ----------------------------------------------------
+ # Release Target
+diff --git a/lib/runtime_tools/c_src/Makefile.in b/lib/runtime_tools/c_src/Makefile.in
+index 4530a83aee..4e13e0d789 100644
+--- a/lib/runtime_tools/c_src/Makefile.in
++++ b/lib/runtime_tools/c_src/Makefile.in
+@@ -95,7 +95,7 @@ $(OBJDIR)/%$(TYPEMARKER).o: %.c dyntrace_lttng.h
+ $(V_CC) -c -o $@ $(ALL_CFLAGS) $<
+
+ $(LIBDIR)/%$(TYPEMARKER).@DED_EXT@: $(OBJDIR)/%$(TYPEMARKER).o
+- $(V_LD) $(LDFLAGS) -o $@ $^ $(LIBS)
++ $(V_LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
+
+ clean:
+ rm -f $(TRACE_LIBS)
+--
+2.14.1
+
diff --git a/package/erlang/21.3.8.24/0004-erlang-enable-deterministic-builds.patch b/package/erlang/21.3.8.24/0004-erlang-enable-deterministic-builds.patch
new file mode 100644
index 0000000000..1a7e66eca5
--- /dev/null
+++ b/package/erlang/21.3.8.24/0004-erlang-enable-deterministic-builds.patch
@@ -0,0 +1,28 @@
+From 3e357a561042db278d77a6da04623af5e238cecc Mon Sep 17 00:00:00 2001
+From: Frank Hunleth <fhunleth@troodon-software.com>
+Date: Thu, 21 Mar 2019 20:49:54 -0400
+Subject: [PATCH] erlang: enable deterministic builds
+
+This adds the `+deterministic` compiler flag to the `erlc` calls to
+strip out absolute paths in compiled `.beam` files.
+
+Signed-off-by: Frank Hunleth <fhunleth@troodon-software.com>
+---
+ make/otp.mk.in | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/make/otp.mk.in b/make/otp.mk.in
+index fb573680c8..24acd87549 100644
+--- a/make/otp.mk.in
++++ b/make/otp.mk.in
+@@ -108,6 +108,7 @@ ifdef BOOTSTRAP
+ else
+ ERL_COMPILE_FLAGS += +debug_info
+ endif
++ERL_COMPILE_FLAGS += +deterministic
+ ERLC_WFLAGS = -W
+ ERLC = erlc $(ERLC_WFLAGS) $(ERLC_FLAGS)
+ ERL = erl -boot start_clean
+--
+2.17.1
+
diff --git a/package/erlang/22.3.4.26/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch b/package/erlang/22.3.4.26/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
new file mode 100644
index 0000000000..4d3dd75ce2
--- /dev/null
+++ b/package/erlang/22.3.4.26/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
@@ -0,0 +1,71 @@
+From 7040c252fb45e5423512094a1c9ca4a0a8fc77f0 Mon Sep 17 00:00:00 2001
+From: "Yann E. MORIN" <yann.morin.1998@free.fr>
+Date: Sun, 28 Dec 2014 23:39:40 +0100
+Subject: [PATCH] erts/ethread: instruct libatomic_ops we do require CAS
+
+We do require compare-and-swap (CAS), so we must instruct libatomic_ops
+to provide it, even if the architecture does not have instructions for
+it.
+
+For example, on ARM, LDREX is required for fast CAS. But LDREX is only
+available on ARMv6, so by default libatomic_ops will not have CAS for
+anything below, like ARMv5. But ARMv5 is always UP, so using an
+emulated CAS (that is signal-asyn-safe) is still possible (albeit much
+slower).
+
+Tell libatomic_ops to provide CAS, even if the hardware is not capable
+of it, by using emulated CAS, as per libatomic_ops dosc:
+ https://github.com/ivmai/libatomic_ops/blob/master/doc/README.txt#L28
+
+ If this is included after defining AO_REQUIRE_CAS, then the package
+ will make an attempt to emulate compare-and-swap in a way that (at
+ least on Linux) should still be async-signal-safe.
+
+Thanks go to Thomas for all this insight! :-)
+Thanks go to Frank for reporting the issue! :-)
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Cc: Frank Hunleth <fhunleth@troodon-software.com>
+---
+ erts/aclocal.m4 | 4 +++-
+ erts/include/internal/libatomic_ops/ethread.h | 1 +
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/erts/aclocal.m4 b/erts/aclocal.m4
+index 0ca2755802..a1843dbc40 100644
+--- a/erts/aclocal.m4
++++ b/erts/aclocal.m4
+@@ -1978,7 +1978,8 @@ case "$THR_LIB_NAME" in
+ fi;;
+ esac
+ ethr_have_libatomic_ops=no
+- AC_TRY_LINK([#include "atomic_ops.h"],
++ AC_TRY_LINK([#define AO_REQUIRE_CAS
++ #include "atomic_ops.h"],
+ [
+ volatile AO_t x;
+ AO_t y;
+@@ -2019,6 +2020,7 @@ case "$THR_LIB_NAME" in
+ AC_CHECK_SIZEOF(AO_t, ,
+ [
+ #include <stdio.h>
++ #define AO_REQUIRE_CAS
+ #include "atomic_ops.h"
+ ])
+ AC_DEFINE_UNQUOTED(ETHR_SIZEOF_AO_T, $ac_cv_sizeof_AO_t, [Define to the size of AO_t if libatomic_ops is used])
+diff --git a/erts/include/internal/libatomic_ops/ethread.h b/erts/include/internal/libatomic_ops/ethread.h
+index 4adc31ed2a..18cc22a8ad 100644
+--- a/erts/include/internal/libatomic_ops/ethread.h
++++ b/erts/include/internal/libatomic_ops/ethread.h
+@@ -36,6 +36,7 @@
+
+ #define ETHR_NATIVE_IMPL__ "libatomic_ops"
+
++#define AO_REQUIRE_CAS
+ #include "atomic_ops.h"
+ #include "ethr_membar.h"
+ #include "ethr_atomic.h"
+--
+2.17.1
+
diff --git a/package/erlang/22.3.4.26/0002-erts-emulator-reorder-inclued-headers-paths.patch b/package/erlang/22.3.4.26/0002-erts-emulator-reorder-inclued-headers-paths.patch
new file mode 100644
index 0000000000..7f2585870a
--- /dev/null
+++ b/package/erlang/22.3.4.26/0002-erts-emulator-reorder-inclued-headers-paths.patch
@@ -0,0 +1,49 @@
+From 2142338c7a82360087a21dc71cfdad777d43e6a8 Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@openwide.fr>
+Date: Sun, 8 Feb 2015 17:23:13 +0100
+Subject: [PATCH] erts/emulator: reorder inclued headers paths
+
+If the Perl Compatible Regular Expressions is installed on the
+host and the path to the headers is added to the CFLAGS, the
+pcre.h from the host is used instead of the one provided by
+erlang.
+
+Erlang use an old version of this file which is incompatible
+with the upstream one.
+
+Move INCLUDES before CFLAGS to use pcre.h from erlang.
+
+http://autobuild.buildroot.net/results/cbd/cbd8b54eef535f19d7d400fd269af1b3571d6143/build-end.log
+
+Signed-off-by: Romain Naour <romain.naour@openwide.fr>
+[Bernd: rebased for erlang-21.0]
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+---
+ erts/emulator/Makefile.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/erts/emulator/Makefile.in b/erts/emulator/Makefile.in
+index a9f3bb8e89..e6eb231b37 100644
+--- a/erts/emulator/Makefile.in
++++ b/erts/emulator/Makefile.in
+@@ -725,7 +725,7 @@ endif
+ # Usually the same as the default rule, but certain platforms (e.g. win32) mix
+ # different compilers
+ $(OBJDIR)/beam_emu.o: beam/beam_emu.c
+- $(V_EMU_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
++ $(V_EMU_CC) $(INCLUDES) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) -c $< -o $@
+
+ $(OBJDIR)/beam_emu.S: beam/beam_emu.c
+ $(V_EMU_CC) -S -fverbose-asm $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
+@@ -778,7 +778,7 @@ endif
+ # General targets
+ #
+ $(OBJDIR)/%.o: beam/%.c
+- $(V_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
++ $(V_CC) $(INCLUDES) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) -c $< -o $@
+
+ $(OBJDIR)/%.o: $(TARGET)/%.c
+ $(V_CC) $(CFLAGS) $(INCLUDES) -Idrivers/common -c $< -o $@
+--
+2.17.1
+
diff --git a/package/erlang/22.3.4.26/0003-erlang-enable-deterministic-builds.patch b/package/erlang/22.3.4.26/0003-erlang-enable-deterministic-builds.patch
new file mode 100644
index 0000000000..043c6f48c6
--- /dev/null
+++ b/package/erlang/22.3.4.26/0003-erlang-enable-deterministic-builds.patch
@@ -0,0 +1,28 @@
+From fed869414aa22aeea1c6e971a0600df3d5d0077e Mon Sep 17 00:00:00 2001
+From: Frank Hunleth <fhunleth@troodon-software.com>
+Date: Thu, 21 Mar 2019 20:49:54 -0400
+Subject: [PATCH] erlang: enable deterministic builds
+
+This adds the `+deterministic` compiler flag to the `erlc` calls to
+strip out absolute paths in compiled `.beam` files.
+
+Signed-off-by: Frank Hunleth <fhunleth@troodon-software.com>
+---
+ make/otp.mk.in | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/make/otp.mk.in b/make/otp.mk.in
+index 63748c2f2b..c31cbfe971 100644
+--- a/make/otp.mk.in
++++ b/make/otp.mk.in
+@@ -114,6 +114,7 @@ ifeq ($(USE_ESOCK),yes)
+ ERL_COMPILE_FLAGS += -DUSE_ESOCK=true
+ endif
+
++ERL_COMPILE_FLAGS += +deterministic
+ ERLC_WFLAGS = -W
+ ERLC = erlc $(ERLC_WFLAGS) $(ERLC_FLAGS)
+ ERL = erl -boot start_clean
+--
+2.17.1
+
diff --git a/package/erlang/22.3.4.26/0004-disksup-update-df-call-to-work-with-Busybox.patch b/package/erlang/22.3.4.26/0004-disksup-update-df-call-to-work-with-Busybox.patch
new file mode 100644
index 0000000000..9f98c4ad82
--- /dev/null
+++ b/package/erlang/22.3.4.26/0004-disksup-update-df-call-to-work-with-Busybox.patch
@@ -0,0 +1,28 @@
+From 46b36f8b73b65b2697ec0fb499dd4af610e9ddd9 Mon Sep 17 00:00:00 2001
+From: Frank Hunleth <fhunleth@troodon-software.com>
+Date: Tue, 5 May 2020 21:19:01 -0400
+Subject: [PATCH] disksup: update df call to work with Busybox
+
+Busybox's df doesn't support `-x` and `-l` and this removes those
+options. Plus SquashFS filesystems are nice to view on Nerves so we
+don't want to exclude them anyway.
+---
+ lib/os_mon/src/disksup.erl | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/os_mon/src/disksup.erl b/lib/os_mon/src/disksup.erl
+index 4253067c90..971c017e14 100644
+--- a/lib/os_mon/src/disksup.erl
++++ b/lib/os_mon/src/disksup.erl
+@@ -264,7 +264,7 @@ check_disk_space({unix, irix}, Port, Threshold) ->
+ Result = my_cmd("/usr/sbin/df -lk",Port),
+ check_disks_irix(skip_to_eol(Result), Threshold);
+ check_disk_space({unix, linux}, Port, Threshold) ->
+- Result = my_cmd("/bin/df -lk -x squashfs", Port),
++ Result = my_cmd("/bin/df -k", Port),
+ check_disks_solaris(skip_to_eol(Result), Threshold);
+ check_disk_space({unix, posix}, Port, Threshold) ->
+ Result = my_cmd("df -k -P", Port),
+--
+2.20.1
+
diff --git a/package/erlang/23.3.4.14/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch b/package/erlang/23.3.4.14/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
new file mode 100644
index 0000000000..4d3dd75ce2
--- /dev/null
+++ b/package/erlang/23.3.4.14/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
@@ -0,0 +1,71 @@
+From 7040c252fb45e5423512094a1c9ca4a0a8fc77f0 Mon Sep 17 00:00:00 2001
+From: "Yann E. MORIN" <yann.morin.1998@free.fr>
+Date: Sun, 28 Dec 2014 23:39:40 +0100
+Subject: [PATCH] erts/ethread: instruct libatomic_ops we do require CAS
+
+We do require compare-and-swap (CAS), so we must instruct libatomic_ops
+to provide it, even if the architecture does not have instructions for
+it.
+
+For example, on ARM, LDREX is required for fast CAS. But LDREX is only
+available on ARMv6, so by default libatomic_ops will not have CAS for
+anything below, like ARMv5. But ARMv5 is always UP, so using an
+emulated CAS (that is signal-asyn-safe) is still possible (albeit much
+slower).
+
+Tell libatomic_ops to provide CAS, even if the hardware is not capable
+of it, by using emulated CAS, as per libatomic_ops dosc:
+ https://github.com/ivmai/libatomic_ops/blob/master/doc/README.txt#L28
+
+ If this is included after defining AO_REQUIRE_CAS, then the package
+ will make an attempt to emulate compare-and-swap in a way that (at
+ least on Linux) should still be async-signal-safe.
+
+Thanks go to Thomas for all this insight! :-)
+Thanks go to Frank for reporting the issue! :-)
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Cc: Frank Hunleth <fhunleth@troodon-software.com>
+---
+ erts/aclocal.m4 | 4 +++-
+ erts/include/internal/libatomic_ops/ethread.h | 1 +
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/erts/aclocal.m4 b/erts/aclocal.m4
+index 0ca2755802..a1843dbc40 100644
+--- a/erts/aclocal.m4
++++ b/erts/aclocal.m4
+@@ -1978,7 +1978,8 @@ case "$THR_LIB_NAME" in
+ fi;;
+ esac
+ ethr_have_libatomic_ops=no
+- AC_TRY_LINK([#include "atomic_ops.h"],
++ AC_TRY_LINK([#define AO_REQUIRE_CAS
++ #include "atomic_ops.h"],
+ [
+ volatile AO_t x;
+ AO_t y;
+@@ -2019,6 +2020,7 @@ case "$THR_LIB_NAME" in
+ AC_CHECK_SIZEOF(AO_t, ,
+ [
+ #include <stdio.h>
++ #define AO_REQUIRE_CAS
+ #include "atomic_ops.h"
+ ])
+ AC_DEFINE_UNQUOTED(ETHR_SIZEOF_AO_T, $ac_cv_sizeof_AO_t, [Define to the size of AO_t if libatomic_ops is used])
+diff --git a/erts/include/internal/libatomic_ops/ethread.h b/erts/include/internal/libatomic_ops/ethread.h
+index 4adc31ed2a..18cc22a8ad 100644
+--- a/erts/include/internal/libatomic_ops/ethread.h
++++ b/erts/include/internal/libatomic_ops/ethread.h
+@@ -36,6 +36,7 @@
+
+ #define ETHR_NATIVE_IMPL__ "libatomic_ops"
+
++#define AO_REQUIRE_CAS
+ #include "atomic_ops.h"
+ #include "ethr_membar.h"
+ #include "ethr_atomic.h"
+--
+2.17.1
+
diff --git a/package/erlang/23.3.4.14/0002-erts-emulator-reorder-inclued-headers-paths.patch b/package/erlang/23.3.4.14/0002-erts-emulator-reorder-inclued-headers-paths.patch
new file mode 100644
index 0000000000..7f2585870a
--- /dev/null
+++ b/package/erlang/23.3.4.14/0002-erts-emulator-reorder-inclued-headers-paths.patch
@@ -0,0 +1,49 @@
+From 2142338c7a82360087a21dc71cfdad777d43e6a8 Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@openwide.fr>
+Date: Sun, 8 Feb 2015 17:23:13 +0100
+Subject: [PATCH] erts/emulator: reorder inclued headers paths
+
+If the Perl Compatible Regular Expressions is installed on the
+host and the path to the headers is added to the CFLAGS, the
+pcre.h from the host is used instead of the one provided by
+erlang.
+
+Erlang use an old version of this file which is incompatible
+with the upstream one.
+
+Move INCLUDES before CFLAGS to use pcre.h from erlang.
+
+http://autobuild.buildroot.net/results/cbd/cbd8b54eef535f19d7d400fd269af1b3571d6143/build-end.log
+
+Signed-off-by: Romain Naour <romain.naour@openwide.fr>
+[Bernd: rebased for erlang-21.0]
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+---
+ erts/emulator/Makefile.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/erts/emulator/Makefile.in b/erts/emulator/Makefile.in
+index a9f3bb8e89..e6eb231b37 100644
+--- a/erts/emulator/Makefile.in
++++ b/erts/emulator/Makefile.in
+@@ -725,7 +725,7 @@ endif
+ # Usually the same as the default rule, but certain platforms (e.g. win32) mix
+ # different compilers
+ $(OBJDIR)/beam_emu.o: beam/beam_emu.c
+- $(V_EMU_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
++ $(V_EMU_CC) $(INCLUDES) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) -c $< -o $@
+
+ $(OBJDIR)/beam_emu.S: beam/beam_emu.c
+ $(V_EMU_CC) -S -fverbose-asm $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
+@@ -778,7 +778,7 @@ endif
+ # General targets
+ #
+ $(OBJDIR)/%.o: beam/%.c
+- $(V_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
++ $(V_CC) $(INCLUDES) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) -c $< -o $@
+
+ $(OBJDIR)/%.o: $(TARGET)/%.c
+ $(V_CC) $(CFLAGS) $(INCLUDES) -Idrivers/common -c $< -o $@
+--
+2.17.1
+
diff --git a/package/erlang/23.3.4.14/0003-erlang-enable-deterministic-builds.patch b/package/erlang/23.3.4.14/0003-erlang-enable-deterministic-builds.patch
new file mode 100644
index 0000000000..043c6f48c6
--- /dev/null
+++ b/package/erlang/23.3.4.14/0003-erlang-enable-deterministic-builds.patch
@@ -0,0 +1,28 @@
+From fed869414aa22aeea1c6e971a0600df3d5d0077e Mon Sep 17 00:00:00 2001
+From: Frank Hunleth <fhunleth@troodon-software.com>
+Date: Thu, 21 Mar 2019 20:49:54 -0400
+Subject: [PATCH] erlang: enable deterministic builds
+
+This adds the `+deterministic` compiler flag to the `erlc` calls to
+strip out absolute paths in compiled `.beam` files.
+
+Signed-off-by: Frank Hunleth <fhunleth@troodon-software.com>
+---
+ make/otp.mk.in | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/make/otp.mk.in b/make/otp.mk.in
+index 63748c2f2b..c31cbfe971 100644
+--- a/make/otp.mk.in
++++ b/make/otp.mk.in
+@@ -114,6 +114,7 @@ ifeq ($(USE_ESOCK),yes)
+ ERL_COMPILE_FLAGS += -DUSE_ESOCK=true
+ endif
+
++ERL_COMPILE_FLAGS += +deterministic
+ ERLC_WFLAGS = -W
+ ERLC = erlc $(ERLC_WFLAGS) $(ERLC_FLAGS)
+ ERL = erl -boot start_clean
+--
+2.17.1
+
diff --git a/package/erlang/23.3.4.14/0004-disksup-update-df-call-to-work-with-Busybox.patch b/package/erlang/23.3.4.14/0004-disksup-update-df-call-to-work-with-Busybox.patch
new file mode 100644
index 0000000000..9f98c4ad82
--- /dev/null
+++ b/package/erlang/23.3.4.14/0004-disksup-update-df-call-to-work-with-Busybox.patch
@@ -0,0 +1,28 @@
+From 46b36f8b73b65b2697ec0fb499dd4af610e9ddd9 Mon Sep 17 00:00:00 2001
+From: Frank Hunleth <fhunleth@troodon-software.com>
+Date: Tue, 5 May 2020 21:19:01 -0400
+Subject: [PATCH] disksup: update df call to work with Busybox
+
+Busybox's df doesn't support `-x` and `-l` and this removes those
+options. Plus SquashFS filesystems are nice to view on Nerves so we
+don't want to exclude them anyway.
+---
+ lib/os_mon/src/disksup.erl | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/os_mon/src/disksup.erl b/lib/os_mon/src/disksup.erl
+index 4253067c90..971c017e14 100644
+--- a/lib/os_mon/src/disksup.erl
++++ b/lib/os_mon/src/disksup.erl
+@@ -264,7 +264,7 @@ check_disk_space({unix, irix}, Port, Threshold) ->
+ Result = my_cmd("/usr/sbin/df -lk",Port),
+ check_disks_irix(skip_to_eol(Result), Threshold);
+ check_disk_space({unix, linux}, Port, Threshold) ->
+- Result = my_cmd("/bin/df -lk -x squashfs", Port),
++ Result = my_cmd("/bin/df -k", Port),
+ check_disks_solaris(skip_to_eol(Result), Threshold);
+ check_disk_space({unix, posix}, Port, Threshold) ->
+ Result = my_cmd("df -k -P", Port),
+--
+2.20.1
+
diff --git a/package/erlang/24.3.2/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch b/package/erlang/24.3.2/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
new file mode 100644
index 0000000000..c5d83b2b36
--- /dev/null
+++ b/package/erlang/24.3.2/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
@@ -0,0 +1,71 @@
+From 2400947f3af66fbf39be86719ed03b1867d1423e Mon Sep 17 00:00:00 2001
+From: "Yann E. MORIN" <yann.morin.1998@free.fr>
+Date: Sun, 28 Dec 2014 23:39:40 +0100
+Subject: [PATCH] erts/ethread: instruct libatomic_ops we do require CAS
+
+We do require compare-and-swap (CAS), so we must instruct libatomic_ops
+to provide it, even if the architecture does not have instructions for
+it.
+
+For example, on ARM, LDREX is required for fast CAS. But LDREX is only
+available on ARMv6, so by default libatomic_ops will not have CAS for
+anything below, like ARMv5. But ARMv5 is always UP, so using an
+emulated CAS (that is signal-asyn-safe) is still possible (albeit much
+slower).
+
+Tell libatomic_ops to provide CAS, even if the hardware is not capable
+of it, by using emulated CAS, as per libatomic_ops dosc:
+ https://github.com/ivmai/libatomic_ops/blob/master/doc/README.txt#L28
+
+ If this is included after defining AO_REQUIRE_CAS, then the package
+ will make an attempt to emulate compare-and-swap in a way that (at
+ least on Linux) should still be async-signal-safe.
+
+Thanks go to Thomas for all this insight! :-)
+Thanks go to Frank for reporting the issue! :-)
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Cc: Frank Hunleth <fhunleth@troodon-software.com>
+---
+ erts/aclocal.m4 | 4 +++-
+ erts/include/internal/libatomic_ops/ethread.h | 1 +
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/erts/aclocal.m4 b/erts/aclocal.m4
+index 8317e3b10e..3063a80c5c 100644
+--- a/erts/aclocal.m4
++++ b/erts/aclocal.m4
+@@ -2019,7 +2019,8 @@ case "$THR_LIB_NAME" in
+ fi;;
+ esac
+ ethr_have_libatomic_ops=no
+- AC_TRY_LINK([#include "atomic_ops.h"],
++ AC_TRY_LINK([#define AO_REQUIRE_CAS
++ #include "atomic_ops.h"],
+ [
+ volatile AO_t x;
+ AO_t y;
+@@ -2060,6 +2061,7 @@ case "$THR_LIB_NAME" in
+ AC_CHECK_SIZEOF(AO_t, ,
+ [
+ #include <stdio.h>
++ #define AO_REQUIRE_CAS
+ #include "atomic_ops.h"
+ ])
+ AC_DEFINE_UNQUOTED(ETHR_SIZEOF_AO_T, $ac_cv_sizeof_AO_t, [Define to the size of AO_t if libatomic_ops is used])
+diff --git a/erts/include/internal/libatomic_ops/ethread.h b/erts/include/internal/libatomic_ops/ethread.h
+index 4adc31ed2a..18cc22a8ad 100644
+--- a/erts/include/internal/libatomic_ops/ethread.h
++++ b/erts/include/internal/libatomic_ops/ethread.h
+@@ -36,6 +36,7 @@
+
+ #define ETHR_NATIVE_IMPL__ "libatomic_ops"
+
++#define AO_REQUIRE_CAS
+ #include "atomic_ops.h"
+ #include "ethr_membar.h"
+ #include "ethr_atomic.h"
+--
+2.25.1
+
diff --git a/package/erlang/24.3.2/0002-erts-emulator-reorder-inclued-headers-paths.patch b/package/erlang/24.3.2/0002-erts-emulator-reorder-inclued-headers-paths.patch
new file mode 100644
index 0000000000..e7106f71ee
--- /dev/null
+++ b/package/erlang/24.3.2/0002-erts-emulator-reorder-inclued-headers-paths.patch
@@ -0,0 +1,49 @@
+From 4c86188d052cd6150d171dec003523a85fdfef91 Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@openwide.fr>
+Date: Sun, 8 Feb 2015 17:23:13 +0100
+Subject: [PATCH] erts/emulator: reorder inclued headers paths
+
+If the Perl Compatible Regular Expressions is installed on the
+host and the path to the headers is added to the CFLAGS, the
+pcre.h from the host is used instead of the one provided by
+erlang.
+
+Erlang use an old version of this file which is incompatible
+with the upstream one.
+
+Move INCLUDES before CFLAGS to use pcre.h from erlang.
+
+http://autobuild.buildroot.net/results/cbd/cbd8b54eef535f19d7d400fd269af1b3571d6143/build-end.log
+
+Signed-off-by: Romain Naour <romain.naour@openwide.fr>
+[Bernd: rebased for erlang-21.0]
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+---
+ erts/emulator/Makefile.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/erts/emulator/Makefile.in b/erts/emulator/Makefile.in
+index c3449c5f73..8e1c323ad8 100644
+--- a/erts/emulator/Makefile.in
++++ b/erts/emulator/Makefile.in
+@@ -800,7 +800,7 @@ endif
+ # Usually the same as the default rule, but certain platforms (e.g. win32) mix
+ # different compilers
+ $(OBJDIR)/beam_emu.o: beam/emu/beam_emu.c
+- $(V_EMU_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
++ $(V_EMU_CC) $(INCLUDES) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) -c $< -o $@
+
+ $(OBJDIR)/beam_emu.S: beam/emu/beam_emu.c
+ $(V_EMU_CC) -S -fverbose-asm $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
+@@ -863,7 +863,7 @@ endif
+ # General targets
+ #
+ $(OBJDIR)/%.o: beam/%.c
+- $(V_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
++ $(V_CC) $(INCLUDES) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) -c $< -o $@
+
+ $(OBJDIR)/%.o: beam/emu/%.c
+ $(V_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
+--
+2.25.1
+
diff --git a/package/erlang/24.3.2/0003-erlang-enable-deterministic-builds.patch b/package/erlang/24.3.2/0003-erlang-enable-deterministic-builds.patch
new file mode 100644
index 0000000000..0cfc5894dc
--- /dev/null
+++ b/package/erlang/24.3.2/0003-erlang-enable-deterministic-builds.patch
@@ -0,0 +1,28 @@
+From 70a045ba5286716bf1d4078d9a5adb061649d6ec Mon Sep 17 00:00:00 2001
+From: Frank Hunleth <fhunleth@troodon-software.com>
+Date: Thu, 21 Mar 2019 20:49:54 -0400
+Subject: [PATCH] erlang: enable deterministic builds
+
+This adds the `+deterministic` compiler flag to the `erlc` calls to
+strip out absolute paths in compiled `.beam` files.
+
+Signed-off-by: Frank Hunleth <fhunleth@troodon-software.com>
+---
+ make/otp.mk.in | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/make/otp.mk.in b/make/otp.mk.in
+index 85bc49d2b0..312f358cf8 100644
+--- a/make/otp.mk.in
++++ b/make/otp.mk.in
+@@ -109,6 +109,7 @@ ifeq ($(USE_ESOCK),yes)
+ ERL_COMPILE_FLAGS += -DUSE_ESOCK=true
+ endif
+
++ERL_COMPILE_FLAGS += +deterministic
+ ERLC_WFLAGS = -W
+ ERLC = erlc $(ERLC_WFLAGS) $(ERLC_FLAGS)
+ ERL = erl -boot start_clean
+--
+2.25.1
+
diff --git a/package/erlang/24.3.2/0004-disksup-update-df-call-to-work-with-Busybox.patch b/package/erlang/24.3.2/0004-disksup-update-df-call-to-work-with-Busybox.patch
new file mode 100644
index 0000000000..beb1957d46
--- /dev/null
+++ b/package/erlang/24.3.2/0004-disksup-update-df-call-to-work-with-Busybox.patch
@@ -0,0 +1,28 @@
+From c7d4172745f7a0fdafeaafc2166f0db74e99a870 Mon Sep 17 00:00:00 2001
+From: Frank Hunleth <fhunleth@troodon-software.com>
+Date: Tue, 5 May 2020 21:19:01 -0400
+Subject: [PATCH] disksup: update df call to work with Busybox
+
+Busybox's df doesn't support `-x` and `-l` and this removes those
+options. Plus SquashFS filesystems are nice to view on Nerves so we
+don't want to exclude them anyway.
+---
+ lib/os_mon/src/disksup.erl | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/os_mon/src/disksup.erl b/lib/os_mon/src/disksup.erl
+index b85b7c854a..a83f2daad8 100644
+--- a/lib/os_mon/src/disksup.erl
++++ b/lib/os_mon/src/disksup.erl
+@@ -256,7 +256,7 @@ check_disk_space({unix, irix}, Port, Threshold) ->
+ check_disks_irix(skip_to_eol(Result), Threshold);
+ check_disk_space({unix, linux}, Port, Threshold) ->
+ Df = find_cmd("df", "/bin"),
+- Result = my_cmd(Df ++ " -lk -x squashfs", Port),
++ Result = my_cmd(Df ++ " -k", Port),
+ check_disks_solaris(skip_to_eol(Result), Threshold);
+ check_disk_space({unix, posix}, Port, Threshold) ->
+ Result = my_cmd("df -k -P", Port),
+--
+2.25.1
+
diff --git a/package/erlang/25.3.2/0001-erts-emulator-reorder-inclued-headers-paths.patch b/package/erlang/25.3.2/0001-erts-emulator-reorder-inclued-headers-paths.patch
new file mode 100644
index 0000000000..069d69784e
--- /dev/null
+++ b/package/erlang/25.3.2/0001-erts-emulator-reorder-inclued-headers-paths.patch
@@ -0,0 +1,49 @@
+From fe9a45130bcf1fc80a15628fbf14bf5619d84c1a Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@openwide.fr>
+Date: Sun, 8 Feb 2015 17:23:13 +0100
+Subject: [PATCH] erts/emulator: reorder inclued headers paths
+
+If the Perl Compatible Regular Expressions is installed on the
+host and the path to the headers is added to the CFLAGS, the
+pcre.h from the host is used instead of the one provided by
+erlang.
+
+Erlang use an old version of this file which is incompatible
+with the upstream one.
+
+Move INCLUDES before CFLAGS to use pcre.h from erlang.
+
+http://autobuild.buildroot.net/results/cbd/cbd8b54eef535f19d7d400fd269af1b3571d6143/build-end.log
+
+Signed-off-by: Romain Naour <romain.naour@openwide.fr>
+[Bernd: rebased for erlang-21.0]
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+---
+ erts/emulator/Makefile.in | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/erts/emulator/Makefile.in b/erts/emulator/Makefile.in
+index 606bfc013f..b86b4f2f6a 100644
+--- a/erts/emulator/Makefile.in
++++ b/erts/emulator/Makefile.in
+@@ -821,7 +821,7 @@ endif
+ # Usually the same as the default rule, but certain platforms (e.g. win32) mix
+ # different compilers
+ $(OBJDIR)/beam_emu.o: beam/emu/beam_emu.c
+- $(V_EMU_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
++ $(V_EMU_CC) $(INCLUDES) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) -c $< -o $@
+
+ $(OBJDIR)/beam_emu.S: beam/emu/beam_emu.c
+ $(V_EMU_CC) -S -fverbose-asm $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
+@@ -884,7 +884,7 @@ endif
+ # General targets
+ #
+ $(OBJDIR)/%.o: beam/%.c
+- $(V_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
++ $(V_CC) $(INCLUDES) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) -c $< -o $@
+
+ $(OBJDIR)/%.o: beam/emu/%.c
+ $(V_CC) $(subst -O2, $(GEN_OPT_FLGS), $(CFLAGS)) $(INCLUDES) -c $< -o $@
+--
+2.25.1
+
diff --git a/package/erlang/25.3.2/0003-disksup-update-df-call-to-work-with-Busybox.patch b/package/erlang/25.3.2/0003-disksup-update-df-call-to-work-with-Busybox.patch
new file mode 100644
index 0000000000..97f410b18c
--- /dev/null
+++ b/package/erlang/25.3.2/0003-disksup-update-df-call-to-work-with-Busybox.patch
@@ -0,0 +1,28 @@
+From 2275a2743b85c8915ff64d487cfe0fd1367424e8 Mon Sep 17 00:00:00 2001
+From: Frank Hunleth <fhunleth@troodon-software.com>
+Date: Tue, 5 May 2020 21:19:01 -0400
+Subject: [PATCH] disksup: update df call to work with Busybox
+
+Busybox's df doesn't support `-x` and `-l` and this removes those
+options. Plus SquashFS filesystems are nice to view on Nerves so we
+don't want to exclude them anyway.
+---
+ lib/os_mon/src/disksup.erl | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/os_mon/src/disksup.erl b/lib/os_mon/src/disksup.erl
+index 80f833bb49..4697b09c53 100644
+--- a/lib/os_mon/src/disksup.erl
++++ b/lib/os_mon/src/disksup.erl
+@@ -256,7 +256,7 @@ check_disk_space({unix, irix}, Port, Threshold) ->
+ check_disks_irix(skip_to_eol(Result), Threshold);
+ check_disk_space({unix, linux}, Port, Threshold) ->
+ Df = find_cmd("df", "/bin"),
+- Result = my_cmd(Df ++ " -lk -x squashfs", Port),
++ Result = my_cmd(Df ++ " -k", Port),
+ check_disks_solaris(skip_to_eol(Result), Threshold);
+ check_disk_space({unix, posix}, Port, Threshold) ->
+ Result = my_cmd("df -k -P", Port),
+--
+2.25.1
+
diff --git a/package/erlang/26.2.5/0001-disksup-update-df-call-to-work-with-Busybox.patch b/package/erlang/26.2.5/0001-disksup-update-df-call-to-work-with-Busybox.patch
new file mode 100644
index 0000000000..9cccce73ac
--- /dev/null
+++ b/package/erlang/26.2.5/0001-disksup-update-df-call-to-work-with-Busybox.patch
@@ -0,0 +1,77 @@
+From 59f0d61699350a6df661c838a502a566b1c02768 Mon Sep 17 00:00:00 2001
+From: Frank Hunleth <fhunleth@troodon-software.com>
+Date: Tue, 5 May 2020 21:19:01 -0400
+Subject: [PATCH] disksup: update df call to work with Busybox
+
+Busybox's df doesn't support `-x` and `-l` and this removes those
+options. Plus SquashFS filesystems are nice to view on Nerves so we
+don't want to exclude them anyway.
+---
+ lib/os_mon/src/disksup.erl | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/lib/os_mon/src/disksup.erl b/lib/os_mon/src/disksup.erl
+index 8df01f9eb9..06333ce83c 100644
+--- a/lib/os_mon/src/disksup.erl
++++ b/lib/os_mon/src/disksup.erl
+@@ -1,8 +1,8 @@
+ %%
+ %% %CopyrightBegin%
+-%%
++%%
+ %% Copyright Ericsson AB 1996-2022. All Rights Reserved.
+-%%
++%%
+ %% Licensed under the Apache License, Version 2.0 (the "License");
+ %% you may not use this file except in compliance with the License.
+ %% You may obtain a copy of the License at
+@@ -14,7 +14,7 @@
+ %% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ %% See the License for the specific language governing permissions and
+ %% limitations under the License.
+-%%
++%%
+ %% %CopyrightEnd%
+ %%
+ -module(disksup).
+@@ -115,7 +115,7 @@ param_default(disksup_posix_only) -> false.
+ %% gen_server callbacks
+ %%----------------------------------------------------------------------
+
+-init([]) ->
++init([]) ->
+ process_flag(trap_exit, true),
+ process_flag(priority, low),
+
+@@ -239,7 +239,7 @@ get_os(PosixOnly) ->
+
+ %%--Port handling functions---------------------------------------------
+
+-start_portprogram() ->
++start_portprogram() ->
+ open_port({spawn, "sh -s disksup 2>&1"}, [stream]).
+
+ my_cmd(Cmd0, Port) ->
+@@ -250,8 +250,8 @@ my_cmd(Cmd0, Port) ->
+ get_reply(Port, []).
+
+ get_reply(Port, O) ->
+- receive
+- {Port, {data, N}} ->
++ receive
++ {Port, {data, N}} ->
+ case newline(N, O) of
+ {ok, Str} -> Str;
+ {more, Acc} -> get_reply(Port, Acc)
+@@ -287,7 +287,7 @@ run_df(Path, {unix, irix}, Port) ->
+ my_cmd("/usr/sbin/df -lk " ++ Path, Port);
+ run_df(Path, {unix, linux}, Port) ->
+ Df = find_cmd("df", "/bin"),
+- my_cmd(Df ++ " -lk -x squashfs " ++ Path, Port);
++ my_cmd(Df ++ " -k" ++ Path, Port);
+ run_df(Path, {unix, posix}, Port) ->
+ my_cmd("df -k -P " ++ Path, Port);
+ run_df(Path, {unix, dragonfly}, Port) ->
+--
+2.34.1
+
diff --git a/package/erlang/26.2.5/0002-erlang-libei-arch-compile.patch b/package/erlang/26.2.5/0002-erlang-libei-arch-compile.patch
new file mode 100644
index 0000000000..5a3c729289
--- /dev/null
+++ b/package/erlang/26.2.5/0002-erlang-libei-arch-compile.patch
@@ -0,0 +1,31 @@
+From 442b23d9dd8d5d66fe70ceef31be7531ac75fa56 Mon Sep 17 00:00:00 2001
+From: Ray Chang <ray@rclabs.org>
+Date: Fri, 19 Apr 2024 00:47:58 +1000
+Subject: [PATCH] Fix for compilation errors due to libei naming conflicts.
+
+Signed-off-by: Ray Chang <ray@rclabs.org>
+---
+ lib/odbc/c_src/Makefile.in | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/lib/odbc/c_src/Makefile.in b/lib/odbc/c_src/Makefile.in
+index d1b26743a6..03ed314f6a 100644
+--- a/lib/odbc/c_src/Makefile.in
++++ b/lib/odbc/c_src/Makefile.in
+@@ -80,10 +80,10 @@ ODBC_INCLUDE = @ODBC_INCLUDE@
+ # ----------------------------------------------------
+ CC = @CC@
+ CFLAGS = $(TYPEFLAGS) @CFLAGS@ @THR_DEFS@ @DEFS@
+-EI_LDFLAGS = -L$(EI_ROOT)/obj$(TYPEMARKER)/$(TARGET)
++EI_LDFLAGS = -L$(EI_ROOT)/obj$(TYPEMARKER)/$(TARGET) $(EI_LIB)
+ LD = @LD@
+-LDFLAGS = $(ODBC_LIB) $(EI_LDFLAGS)
+-LIBS = @LIBS@ @THR_LIBS@ $(EI_LIB)
++LDFLAGS = $(EI_LDFLAGS) $(ODBC_LIB)
++LIBS = @LIBS@ @THR_LIBS@
+ INCLUDES = -I. $(ODBC_INCLUDE) $(EI_INCLUDE)
+ TARGET_FLAGS = @TARGET_FLAGS@
+
+--
+2.44.0
+
diff --git a/package/erlang/27.3.4.3/0001-disksup-update-df-call-to-work-with-Busybox.patch b/package/erlang/27.3.4.3/0001-disksup-update-df-call-to-work-with-Busybox.patch
new file mode 100644
index 0000000000..b621381b4c
--- /dev/null
+++ b/package/erlang/27.3.4.3/0001-disksup-update-df-call-to-work-with-Busybox.patch
@@ -0,0 +1,77 @@
+From e85fabb333c9c03bf8b69c6edf49413a57fd5e86 Mon Sep 17 00:00:00 2001
+From: Frank Hunleth <fhunleth@troodon-software.com>
+Date: Tue, 5 May 2020 21:19:01 -0400
+Subject: [PATCH] disksup: update df call to work with Busybox
+
+Busybox's df doesn't support `-x` and `-l` and this removes those
+options. Plus SquashFS filesystems are nice to view on Nerves so we
+don't want to exclude them anyway.
+---
+ lib/os_mon/src/disksup.erl | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/lib/os_mon/src/disksup.erl b/lib/os_mon/src/disksup.erl
+index 471b01d1b7..201bfd1289 100644
+--- a/lib/os_mon/src/disksup.erl
++++ b/lib/os_mon/src/disksup.erl
+@@ -1,8 +1,8 @@
+ %%
+ %% %CopyrightBegin%
+-%%
++%%
+ %% Copyright Ericsson AB 1996-2024. All Rights Reserved.
+-%%
++%%
+ %% Licensed under the Apache License, Version 2.0 (the "License");
+ %% you may not use this file except in compliance with the License.
+ %% You may obtain a copy of the License at
+@@ -14,7 +14,7 @@
+ %% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ %% See the License for the specific language governing permissions and
+ %% limitations under the License.
+-%%
++%%
+ %% %CopyrightEnd%
+ %%
+ -module(disksup).
+@@ -260,7 +260,7 @@ param_default(disksup_posix_only) -> false.
+ %%----------------------------------------------------------------------
+
+ -doc false.
+-init([]) ->
++init([]) ->
+ process_flag(trap_exit, true),
+ process_flag(priority, low),
+
+@@ -390,7 +390,7 @@ get_os(PosixOnly) ->
+
+ %%--Port handling functions---------------------------------------------
+
+-start_portprogram() ->
++start_portprogram() ->
+ open_port({spawn, "sh -s disksup 2>&1"}, [stream]).
+
+ my_cmd(Cmd0, Port) ->
+@@ -401,8 +401,8 @@ my_cmd(Cmd0, Port) ->
+ get_reply(Port, []).
+
+ get_reply(Port, O) ->
+- receive
+- {Port, {data, N}} ->
++ receive
++ {Port, {data, N}} ->
+ case newline(N, O) of
+ {ok, Str} -> Str;
+ {more, Acc} -> get_reply(Port, Acc)
+@@ -438,7 +438,7 @@ run_df(Path, {unix, irix}, Port) ->
+ my_cmd("/usr/sbin/df -lk " ++ Path, Port);
+ run_df(Path, {unix, linux}, Port) ->
+ Df = find_cmd("df", "/bin"),
+- my_cmd(Df ++ " -lk -x squashfs " ++ Path, Port);
++ my_cmd(Df ++ " -k" ++ Path, Port);
+ run_df(Path, {unix, posix}, Port) ->
+ my_cmd("df -k -P " ++ Path, Port);
+ run_df(Path, {unix, dragonfly}, Port) ->
+--
+2.34.1
+
diff --git a/package/erlang/28.1.1/0001-disksup-update-df-call-to-work-with-Busybox.patch b/package/erlang/28.1.1/0001-disksup-update-df-call-to-work-with-Busybox.patch
new file mode 100644
index 0000000000..8e30ef0365
--- /dev/null
+++ b/package/erlang/28.1.1/0001-disksup-update-df-call-to-work-with-Busybox.patch
@@ -0,0 +1,57 @@
+From aa48235ab5f561d78894e70cd84f853f9eaa2423 Mon Sep 17 00:00:00 2001
+From: Frank Hunleth <fhunleth@troodon-software.com>
+Date: Tue, 5 May 2020 21:19:01 -0400
+Subject: [PATCH] disksup: update df call to work with Busybox
+
+Busybox's df doesn't support `-x` and `-l` and this removes those
+options. Plus SquashFS filesystems are nice to view on Nerves so we
+don't want to exclude them anyway.
+---
+ lib/os_mon/src/disksup.erl | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/lib/os_mon/src/disksup.erl b/lib/os_mon/src/disksup.erl
+index 35c9d4096e..13e3162033 100644
+--- a/lib/os_mon/src/disksup.erl
++++ b/lib/os_mon/src/disksup.erl
+@@ -262,7 +262,7 @@ param_default(disksup_posix_only) -> false.
+ %%----------------------------------------------------------------------
+
+ -doc false.
+-init([]) ->
++init([]) ->
+ process_flag(trap_exit, true),
+ process_flag(priority, low),
+
+@@ -392,7 +392,7 @@ get_os(PosixOnly) ->
+
+ %%--Port handling functions---------------------------------------------
+
+-start_portprogram() ->
++start_portprogram() ->
+ open_port({spawn, "sh -s disksup 2>&1"}, [stream]).
+
+ my_cmd(Cmd0, Port) ->
+@@ -403,8 +403,8 @@ my_cmd(Cmd0, Port) ->
+ get_reply(Port, []).
+
+ get_reply(Port, O) ->
+- receive
+- {Port, {data, N}} ->
++ receive
++ {Port, {data, N}} ->
+ case newline(N, O) of
+ {ok, Str} -> Str;
+ {more, Acc} -> get_reply(Port, Acc)
+@@ -440,7 +440,7 @@ run_df(Path, {unix, irix}, Port) ->
+ my_cmd("/usr/sbin/df -lk " ++ Path, Port);
+ run_df(Path, {unix, linux}, Port) ->
+ Df = find_cmd("df", "/bin"),
+- my_cmd(Df ++ " -lk -x squashfs " ++ Path, Port);
++ my_cmd(Df ++ " -k" ++ Path, Port);
+ run_df(Path, {unix, posix}, Port) ->
+ my_cmd("df -k -P " ++ Path, Port);
+ run_df(Path, {unix, dragonfly}, Port) ->
+--
+2.43.0
+
diff --git a/package/erlang/Config.in b/package/erlang/Config.in
index 724f91123b..b0856a82f3 100644
--- a/package/erlang/Config.in
+++ b/package/erlang/Config.in
@@ -42,6 +42,58 @@ config BR2_PACKAGE_ERLANG
if BR2_PACKAGE_ERLANG
+choice
+ bool "Erlang/OTP version"
+ default BR2_PACKAGE_ERLANG_28
+ help
+ Select the Erlang/OTP version
+
+config BR2_PACKAGE_ERLANG_20
+ bool "Erlang/OTP 20"
+ help
+ Use Erlang/OTP 20 (release may not include latest patches)
+
+config BR2_PACKAGE_ERLANG_21
+ bool "Erlang/OTP 21"
+ help
+ Use Erlang/OTP 21 (release may not include latest patches)
+
+config BR2_PACKAGE_ERLANG_22
+ bool "Erlang/OTP 22"
+ help
+ Use Erlang/OTP 22 (release may not include latest patches)
+
+config BR2_PACKAGE_ERLANG_23
+ bool "Erlang/OTP 23"
+ help
+ Use Erlang/OTP 23 (release may not include latest patches)
+
+config BR2_PACKAGE_ERLANG_24
+ bool "Erlang/OTP 24"
+ help
+ Use Erlang/OTP 24 (release may not include latest patches)
+
+config BR2_PACKAGE_ERLANG_25
+ bool "Erlang/OTP 25"
+ help
+ Use Erlang/OTP 25 (release may not include latest patches)
+
+config BR2_PACKAGE_ERLANG_26
+ bool "Erlang/OTP 26"
+ help
+ Use Erlang/OTP 26 (release may not include latest patches)
+
+config BR2_PACKAGE_ERLANG_27
+ bool "Erlang/OTP 27"
+ help
+ Use Erlang/OTP 27 (release may not include latest patches)
+
+config BR2_PACKAGE_ERLANG_28
+ bool "Erlang/OTP 28"
+ help
+ Use the latest Erlang/OTP 28 release
+endchoice
+
config BR2_PACKAGE_ERLANG_MEGACO
bool "install megaco application"
help
diff --git a/package/erlang/erlang.hash b/package/erlang/erlang.hash
index 9fc5a6eabf..10ad9ea1b3 100644
--- a/package/erlang/erlang.hash
+++ b/package/erlang/erlang.hash
@@ -1,5 +1,19 @@
-# From https://github.com/erlang/otp/releases/download/OTP-26.0.2/SHA256.txt
-sha256 47853ea9230643a0a31004433f07a71c1b92d6e0094534f629e3b75dbc62f193 otp_src_26.0.2.tar.gz
+# From https://github.com/erlang/otp/releases/download/OTP-28.1.1/SHA256.txt
+sha256 03e1b26e846b2cc1b49271656da6d5ecf4d5f4c2e34224d869a23c61a3d5660a otp_src_28.1.1.tar.gz
+# From https://github.com/erlang/otp/releases/download/OTP-27.3.4.3/SHA256.txt
+sha256 597618c75890e8e606033bc8dbf6ec87fdf4e892c10b4912ae3c9a4f01384579 otp_src_27.3.4.3.tar.gz
+# From https://github.com/erlang/otp/releases/download/OTP-26.2.5/SHA256.txt
+sha256 de155c4ad9baab2b9e6c96dbd03bf955575a04dd6feee9c08758beb28484c9f6 otp_src_26.2.5.tar.gz
+# From https://github.com/erlang/otp/releases/download/OTP-25.3.2/SHA256.txt
+sha256 aed4e4726cdc587ab820c8379d63e511e46a1b1cc0c59d6a720b51ae625b2510 otp_src_25.3.2.tar.gz
+# From https://github.com/erlang/otp/releases/download/OTP-24.3.2/SHA256.txt
+sha256 fb39eecf5a5710200871c85c11251e27afce7c2a11f569bd6394c6d48240ec8d otp_src_24.3.2.tar.gz
+# From https://github.com/erlang/otp/releases/download/OTP-23.3.4.14/SHA256.txt
+sha256 35123f366ded534775a05db8ad6c06c20519ae228af1b5952132b10845621f21 otp_src_23.3.4.14.tar.gz
+# From https://github.com/erlang/otp/releases/download/OTP-22.3.4.26/SHA256.txt
+sha256 ee281e4638c8d671dd99459a11381345ee9d70f1f8338f5db31fc082349a370e otp_src_22.3.4.26.tar.gz
+# From https://github.com/erlang/otp/releases/download/OTP-21.3.8.24/SHA256.txt
+sha256 a82de871d7ba40fd256558b23a3b4c1539e6c7ece7507d6eb2b00330c6135012 otp_src_21.3.8.24.tar.gz
# Hash for license file
sha256 809fa1ed21450f59827d1e9aec720bbc4b687434fa22283c6cb5dd82a47ab9c0 LICENSE.txt
diff --git a/package/erlang/erlang.mk b/package/erlang/erlang.mk
index c05c51fff4..727dc5f893 100644
--- a/package/erlang/erlang.mk
+++ b/package/erlang/erlang.mk
@@ -4,7 +4,44 @@
#
################################################################################
-ERLANG_VERSION = 26.0.2
+# When updating Erlang, the ERLANG_ERTS_VSN is found in erts/vsn.mk.
+ifeq ($(BR2_PACKAGE_ERLANG_21),y)
+ERLANG_VERSION = 21.3.8.24
+ERLANG_ERTS_VSN = 10.3.5.19
+else
+ifeq ($(BR2_PACKAGE_ERLANG_22),y)
+ERLANG_VERSION = 22.3.4.26
+ERLANG_ERTS_VSN = 10.7.2.18
+else
+ifeq ($(BR2_PACKAGE_ERLANG_23),y)
+ERLANG_VERSION = 23.3.4.14
+ERLANG_ERTS_VSN = 11.2.2.13
+else
+ifeq ($(BR2_PACKAGE_ERLANG_24),y)
+ERLANG_VERSION = 24.3.2
+ERLANG_ERTS_VSN = 12.3
+else
+ifeq ($(BR2_PACKAGE_ERLANG_25),y)
+ERLANG_VERSION = 25.3.2
+ERLANG_ERTS_VSN = 13.2.2
+else
+ifeq ($(BR2_PACKAGE_ERLANG_26),y)
+ERLANG_VERSION = 26.2.5
+ERLANG_ERTS_VSN = 14.2.5
+else
+ifeq ($(BR2_PACKAGE_ERLANG_27),y)
+ERLANG_VERSION = 27.3.4.3
+ERLANG_ERTS_VSN = 15.2.7.2
+else
+ERLANG_VERSION = 28.1.1
+ERLANG_ERTS_VSN = 16.1.1
+endif
+endif
+endif
+endif
+endif
+endif
+endif
ERLANG_RELEASE = $(firstword $(subst ., ,$(ERLANG_VERSION)))
ERLANG_SITE = \
https://github.com/erlang/otp/releases/download/OTP-$(ERLANG_VERSION)
@@ -53,6 +90,10 @@ ERLANG_CONF_ENV += erl_xcomp_clock_gettime_cpu_time=yes
ERLANG_CONF_OPTS = --without-javac
+ifeq ($(BR2_REPRODUCIBLE),y)
+ERLANG_CONF_OPTS += --enable-deterministic-build
+endif
+
# Force ERL_TOP to the downloaded source directory. This prevents
# Erlang's configure script from inadvertently using files from
# a version of Erlang installed on the host.
--
2.43.0