Packages

nerves_system_br

1.4.5
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 0015-erlang-make-OTP-version-configurable.patch
Raw

patches/buildroot/0015-erlang-make-OTP-version-configurable.patch

From 484499004c98227f98961a0bb4ddcab25632949f Mon Sep 17 00:00:00 2001
From: Frank Hunleth <fhunleth@troodon-software.com>
Date: Mon, 13 Aug 2018 21:49:55 -0400
Subject: [PATCH] erlang: make OTP version configurable
This makes it possible to build either OTP 20 or OTP 21-based Nerves
systems.
---
...truct-libatomic_ops-we-do-require-CA.patch | 71 -------------------
...ulator-reorder-inclued-headers-paths.patch | 47 ------------
...-with-LDLIBS-instead-of-LIBS-for-DED.patch | 42 -----------
...truct-libatomic_ops-we-do-require-CA.patch | 70 ++++++++++++++++++
...ulator-reorder-inclued-headers-paths.patch | 43 +++++++++++
...-with-LDLIBS-instead-of-LIBS-for-DED.patch | 42 +++++++++++
...truct-libatomic_ops-we-do-require-CA.patch | 71 +++++++++++++++++++
...ulator-reorder-inclued-headers-paths.patch | 47 ++++++++++++
...-with-LDLIBS-instead-of-LIBS-for-DED.patch | 42 +++++++++++
package/erlang/Config.in | 18 +++++
package/erlang/erlang.hash | 1 +
package/erlang/erlang.mk | 12 ++++
12 files changed, 346 insertions(+), 160 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
delete mode 100644 package/erlang/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch
create mode 100644 package/erlang/20.3.8.5/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
create mode 100644 package/erlang/20.3.8.5/0002-erts-emulator-reorder-inclued-headers-paths.patch
create mode 100644 package/erlang/20.3.8.5/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch
create mode 100644 package/erlang/21.0.6/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
create mode 100644 package/erlang/21.0.6/0002-erts-emulator-reorder-inclued-headers-paths.patch
create mode 100644 package/erlang/21.0.6/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.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 ccb1e8432f..0000000000
--- a/package/erlang/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From f6217a2d195359a1956c20d2600b59d61be8f848 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 80bf236..56d9dee 100644
---- a/erts/aclocal.m4
-+++ b/erts/aclocal.m4
-@@ -1973,7 +1973,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;
-@@ -2014,6 +2015,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 4adc31e..18cc22a 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.7.4
-
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 a2cecfbad2..0000000000
--- a/package/erlang/0002-erts-emulator-reorder-inclued-headers-paths.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 09b88921b947836834b62da41b18212cb92dc076 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>
----
- 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 0546928..38c2f05 100644
---- a/erts/emulator/Makefile.in
-+++ b/erts/emulator/Makefile.in
-@@ -712,7 +712,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 $@
-@@ -765,7 +765,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.7.4
-
diff --git a/package/erlang/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch b/package/erlang/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch
deleted file mode 100644
index 391b6ebac2..0000000000
--- a/package/erlang/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 7baac8804d9441c1bc5db1115eccd290c8b99eda 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 1f714df..f7c6b8b 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 4530a83..4e13e0d 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.7.4
-
diff --git a/package/erlang/20.3.8.5/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch b/package/erlang/20.3.8.5/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
new file mode 100644
index 0000000000..8e401430fe
--- /dev/null
+++ b/package/erlang/20.3.8.5/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/20.3.8.5/0002-erts-emulator-reorder-inclued-headers-paths.patch b/package/erlang/20.3.8.5/0002-erts-emulator-reorder-inclued-headers-paths.patch
new file mode 100644
index 0000000000..c17eefc2a1
--- /dev/null
+++ b/package/erlang/20.3.8.5/0002-erts-emulator-reorder-inclued-headers-paths.patch
@@ -0,0 +1,43 @@
+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>
+---
+ 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
+@@ -678,11 +678,11 @@ else
+ # 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 $@
+ endif
+
+ $(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 $@
+--
+1.9.3
+
diff --git a/package/erlang/20.3.8.5/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch b/package/erlang/20.3.8.5/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch
new file mode 100644
index 0000000000..ad0bb6b453
--- /dev/null
+++ b/package/erlang/20.3.8.5/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.0.6/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch b/package/erlang/21.0.6/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
new file mode 100644
index 0000000000..ccb1e8432f
--- /dev/null
+++ b/package/erlang/21.0.6/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch
@@ -0,0 +1,71 @@
+From f6217a2d195359a1956c20d2600b59d61be8f848 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 80bf236..56d9dee 100644
+--- a/erts/aclocal.m4
++++ b/erts/aclocal.m4
+@@ -1973,7 +1973,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;
+@@ -2014,6 +2015,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 4adc31e..18cc22a 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.7.4
+
diff --git a/package/erlang/21.0.6/0002-erts-emulator-reorder-inclued-headers-paths.patch b/package/erlang/21.0.6/0002-erts-emulator-reorder-inclued-headers-paths.patch
new file mode 100644
index 0000000000..a2cecfbad2
--- /dev/null
+++ b/package/erlang/21.0.6/0002-erts-emulator-reorder-inclued-headers-paths.patch
@@ -0,0 +1,47 @@
+From 09b88921b947836834b62da41b18212cb92dc076 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>
+---
+ 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 0546928..38c2f05 100644
+--- a/erts/emulator/Makefile.in
++++ b/erts/emulator/Makefile.in
+@@ -712,7 +712,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 $@
+@@ -765,7 +765,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.7.4
+
diff --git a/package/erlang/21.0.6/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch b/package/erlang/21.0.6/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch
new file mode 100644
index 0000000000..391b6ebac2
--- /dev/null
+++ b/package/erlang/21.0.6/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch
@@ -0,0 +1,42 @@
+From 7baac8804d9441c1bc5db1115eccd290c8b99eda 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 1f714df..f7c6b8b 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 4530a83..4e13e0d 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.7.4
+
diff --git a/package/erlang/Config.in b/package/erlang/Config.in
index bf745555e8..2551eea65d 100644
--- a/package/erlang/Config.in
+++ b/package/erlang/Config.in
@@ -34,6 +34,24 @@ config BR2_PACKAGE_ERLANG
if BR2_PACKAGE_ERLANG
+choice
+ bool "Erlang/OTP version"
+ default BR2_PACKAGE_ERLANG_21
+ help
+ Select the Erlang/OTP version
+
+config BR2_PACKAGE_ERLANG_20
+ bool "erlang 20"
+ help
+ Use the latest Erlang/OTP 20 release
+
+config BR2_PACKAGE_ERLANG_21
+ bool "erlang 21"
+ help
+ Use the latest Erlang/OTP 21 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 3d66220d9f..03cc2853ce 100644
--- a/package/erlang/erlang.hash
+++ b/package/erlang/erlang.hash
@@ -1,2 +1,3 @@
# sha256 locally computed
sha256 a7da6ad97106b5ba087394658d41174ac1123d1f017bce02fbb9e43b49676f40 OTP-21.0.6.tar.gz
+sha256 a06d68aaf4884752d226410ff66547783c260bf4fc92147d60c4011465c1de24 OTP-20.3.8.5.tar.gz
diff --git a/package/erlang/erlang.mk b/package/erlang/erlang.mk
index 1e5db01235..fa28841782 100644
--- a/package/erlang/erlang.mk
+++ b/package/erlang/erlang.mk
@@ -5,7 +5,12 @@
################################################################################
# See note below when updating Erlang
+ifeq ($(BR2_PACKAGE_ERLANG_20),y)
+ERLANG_VERSION = 20.3.8.5
+else
ERLANG_VERSION = 21.0.6
+endif
+
ERLANG_SITE = https://github.com/erlang/otp/archive
ERLANG_SOURCE = OTP-$(ERLANG_VERSION).tar.gz
ERLANG_DEPENDENCIES = host-erlang host-autoconf
@@ -14,9 +19,16 @@ ERLANG_LICENSE = Apache-2.0
ERLANG_LICENSE_FILES = LICENSE.txt
ERLANG_INSTALL_STAGING = YES
+ifeq ($(BR2_PACKAGE_ERLANG_20),y)
+# Patched erts/aclocal.m4
+ERLANG_AUTORECONF = YES
+
# Whenever updating Erlang, this value should be updated as well, to the
# value of EI_VSN in the file lib/erl_interface/vsn.mk
+ERLANG_EI_VSN = 3.10.2.1
+else
ERLANG_EI_VSN = 3.10.3
+endif
# The configure checks for these functions fail incorrectly
ERLANG_CONF_ENV = ac_cv_func_isnan=yes ac_cv_func_isinf=yes \
--
2.17.1