Packages
nerves_system_br
1.22.8
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
Current section
Files
patches/buildroot/0007-erlang-support-OTP-21-25.patch
From 67cbcc62e945f5ed9f583f8dc5cca82fda37f4e0 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 - 25
This also adds the deterministic compile flag patch for OTP 21-24. On
OTP 25.3.2, 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 ------------
...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 ++++++++
package/erlang/Config.in | 37 ++++++++++
package/erlang/erlang.hash | 12 +++-
package/erlang/erlang.mk | 47 +++++++++++-
23 files changed, 883 insertions(+), 120 deletions(-)
delete mode 100644 package/erlang/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
delete mode 100644 package/erlang/0002-erts-emulator-reorder-inclued-headers-paths.patch
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
diff --git a/package/erlang/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch b/package/erlang/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
deleted file mode 100644
index 8e401430fe..0000000000
--- a/package/erlang/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-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/0002-erts-emulator-reorder-inclued-headers-paths.patch b/package/erlang/0002-erts-emulator-reorder-inclued-headers-paths.patch
deleted file mode 100644
index 7a6e469dff..0000000000
--- a/package/erlang/0002-erts-emulator-reorder-inclued-headers-paths.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-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/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/Config.in b/package/erlang/Config.in
index 15931b5896..1ad7f4868a 100644
--- a/package/erlang/Config.in
+++ b/package/erlang/Config.in
@@ -38,6 +38,43 @@ config BR2_PACKAGE_ERLANG
if BR2_PACKAGE_ERLANG
+choice
+ bool "Erlang/OTP version"
+ default BR2_PACKAGE_ERLANG_25
+ 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 the latest Erlang/OTP 25 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 338545a0ba..79083a0182 100644
--- a/package/erlang/erlang.hash
+++ b/package/erlang/erlang.hash
@@ -1,5 +1,13 @@
-# From https://github.com/erlang/otp/releases/download/OTP-22.3.4.22/SHA256.txt
-sha256 e7f0793e62f8da4f7551dc9c1c0de76c40f19773ba516121fc56315c840f60cc otp_src_22.3.4.22.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 a76bda4437..cfe6be4a46 100644
--- a/package/erlang/erlang.mk
+++ b/package/erlang/erlang.mk
@@ -4,8 +4,31 @@
#
################################################################################
-# See note below when updating Erlang
-ERLANG_VERSION = 22.3.4.22
+# When updating Erlang, the ERLANG_ERTS_VSN is found in erts/vsn.mk. Also see note
+# later on.
+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
+ERLANG_VERSION = 25.3.2
+ERLANG_ERTS_VSN = 13.2.2
+endif
+endif
+endif
+endif
+
ERLANG_SITE = \
https://github.com/erlang/otp/releases/download/OTP-$(ERLANG_VERSION)
ERLANG_SOURCE = otp_src_$(ERLANG_VERSION).tar.gz
@@ -38,7 +61,23 @@ HOST_ERLANG_PRE_CONFIGURE_HOOKS += ERLANG_RUN_AUTOCONF
# Whenever updating Erlang, this value should be updated as well, to the
# value of EI_VSN in the file lib/erl_interface/vsn.mk
+ifeq ($(BR2_PACKAGE_ERLANG_21),y)
+ERLANG_EI_VSN = 3.11.3
+else
+ifeq ($(BR2_PACKAGE_ERLANG_22),y)
ERLANG_EI_VSN = 3.13.2.2
+else
+ifeq ($(BR2_PACKAGE_ERLANG_23),y)
+ERLANG_EI_VSN = 4.0.3
+else
+ifeq ($(BR2_PACKAGE_ERLANG_24),y)
+ERLANG_EI_VSN = 5.2.1
+else
+ERLANG_EI_VSN = 5.3
+endif
+endif
+endif
+endif
# The configure checks for these functions fail incorrectly
ERLANG_CONF_ENV = ac_cv_func_isnan=yes ac_cv_func_isinf=yes \
@@ -55,6 +94,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 inadvertantly using files from
# a version of Erlang installed on the host.
--
2.34.1