initial buildroot for linux 5.15
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 $@
|
||||
@@ -0,0 +1,54 @@
|
||||
From de870d7f9f36b3e68f280057851a4585a67ab219 Mon Sep 17 00:00:00 2001
|
||||
From: Sergei Trofimovich <slyfox@gentoo.org>
|
||||
Date: Tue, 14 Jan 2020 23:15:01 +0000
|
||||
Subject: [PATCH] ei_portio.h: avoid ODR violation of
|
||||
'ei_default_socket_callbacks'
|
||||
|
||||
Noticed as a build failure against fresh gcc-master:
|
||||
|
||||
```
|
||||
LD otp/lib/erl_interface/bin/x86_64-unknown-linux-gnu/erl_call
|
||||
ld: otp/lib/erl_interface/obj/x86_64-unknown-linux-gnu/libei.a(eirecv.o):otp/lib/erl_interface/src/misc/ei_portio.h:50: multiple definition of `ei_default_socket_callbacks'; otp/lib/erl_interface/obj/x86_64-unknown-linux-gnu/libei.a(ei_connect.o):otp/lib/erl_interface/src/misc/ei_portio.h:50: first defined here
|
||||
ld: otp/lib/erl_interface/obj/x86_64-unknown-linux-gnu/libei.a(send.o):otp/lib/erl_interface/src/misc/ei_portio.h:50: multiple definition of `ei_default_socket_callbacks'; otp/lib/erl_interface/obj/x86_64-unknown-linux-gnu/libei.a(ei_connect.o):otp/lib/erl_interface/src/misc/ei_portio.h:50: first defined here
|
||||
ld: otp/lib/erl_interface/obj/x86_64-unknown-linux-gnu/libei.a(send_reg.o):otp/lib/erl_interface/src/misc/ei_portio.h:50: multiple definition of `ei_default_socket_callbacks'; otp/lib/erl_interface/obj/x86_64-unknown-linux-gnu/libei.a(ei_connect.o):otp/lib/erl_interface/src/misc/ei_portio.h:50: first defined here
|
||||
ld: otp/lib/erl_interface/obj/x86_64-unknown-linux-gnu/libei.a(epmd_port.o):otp/lib/erl_interface/src/misc/ei_portio.h:50: multiple definition of `ei_default_socket_callbacks'; otp/lib/erl_interface/obj/x86_64-unknown-linux-gnu/libei.a(ei_connect.o):otp/lib/erl_interface/src/misc/ei_portio.h:50: first defined here
|
||||
ld: otp/lib/erl_interface/obj/x86_64-unknown-linux-gnu/libei.a(ei_portio.o):otp/lib/erl_interface/src/misc/ei_portio.h:50: multiple definition of `ei_default_socket_callbacks'; otp/lib/erl_interface/obj/x86_64-unknown-linux-gnu/libei.a(ei_connect.o):otp/lib/erl_interface/src/misc/ei_portio.h:50: first defined here
|
||||
collect2: error: ld returned 1 exit status
|
||||
make[3]: *** [x86_64-unknown-linux-gnu/Makefile:669: otp/lib/erl_interface/bin/x86_64-unknown-linux-gnu/erl_call] Error 1
|
||||
```
|
||||
|
||||
The failure looks legitimate: `ei_default_socket_callbacks` is a
|
||||
struct defined in 'ei_portio.h' and in 'ei_portio.c'.
|
||||
|
||||
The change flips 'ei_portio.h' definition to declaration.
|
||||
|
||||
gcc-10 will change the default from -fcommon to fno-common:
|
||||
https://gcc.gnu.org/PR85678.
|
||||
|
||||
The error also happens if CFLAGS=-fno-common passed explicitly.
|
||||
|
||||
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
|
||||
|
||||
Patch taken from upstream: https://github.com/erlang/otp/commit/de870d7f9f36b3e68f280057851a4585a67ab219
|
||||
Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
|
||||
---
|
||||
lib/erl_interface/src/misc/ei_portio.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/lib/erl_interface/src/misc/ei_portio.h b/lib/erl_interface/src/misc/ei_portio.h
|
||||
index 84ebc5039a..5172d085b4 100644
|
||||
|
||||
--- a/lib/erl_interface/src/misc/ei_portio.h
|
||||
+++ b/lib/erl_interface/src/misc/ei_portio.h
|
||||
@@ -47,7 +47,7 @@ int ei_writev_fill_ctx_t__(ei_socket_callbacks *cbs, void *ctx, const struct iov
|
||||
int ei_socket_callbacks_have_writev__(ei_socket_callbacks *cbs);
|
||||
#endif
|
||||
|
||||
-ei_socket_callbacks ei_default_socket_callbacks;
|
||||
+extern ei_socket_callbacks ei_default_socket_callbacks;
|
||||
|
||||
#define EI_FD_AS_CTX__(FD) \
|
||||
((void *) (long) (FD))
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
config BR2_PACKAGE_HOST_ERLANG_ARCH_SUPPORTS
|
||||
bool
|
||||
default y if BR2_HOSTARCH = "x86_64"
|
||||
default y if BR2_HOSTARCH = "x86"
|
||||
|
||||
config BR2_PACKAGE_ERLANG_ARCH_SUPPORTS
|
||||
bool
|
||||
# see HOWTO/INSTALL.md for Erlang's supported platforms
|
||||
# when using its native atomic ops implementation or gcc's
|
||||
# __atomic_* builtins
|
||||
default y if BR2_i386 || BR2_x86_64 || BR2_powerpc || \
|
||||
BR2_sparc_v9 || BR2_arm || BR2_aarch64 || BR2_mipsel || \
|
||||
BR2_RISCV_64
|
||||
# erlang needs host-erlang
|
||||
depends on BR2_PACKAGE_HOST_ERLANG_ARCH_SUPPORTS
|
||||
|
||||
comment "erlang needs a toolchain w/ dynamic library, threads"
|
||||
depends on BR2_USE_MMU # fork()
|
||||
depends on BR2_PACKAGE_ERLANG_ARCH_SUPPORTS
|
||||
depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS
|
||||
|
||||
config BR2_PACKAGE_ERLANG
|
||||
bool "erlang"
|
||||
depends on BR2_USE_MMU # fork()
|
||||
depends on !BR2_STATIC_LIBS
|
||||
depends on BR2_TOOLCHAIN_HAS_THREADS
|
||||
depends on BR2_PACKAGE_ERLANG_ARCH_SUPPORTS
|
||||
select BR2_PACKAGE_ZLIB
|
||||
help
|
||||
Erlang is a programming language used to build massively
|
||||
scalable soft real-time systems with requirements on high
|
||||
availability. Some of its uses are in telecoms, banking,
|
||||
e-commerce, computer telephony and instant messaging.
|
||||
Erlang's runtime system has built-in support for
|
||||
concurrency, distribution and fault tolerance.
|
||||
|
||||
http://www.erlang.org
|
||||
|
||||
if BR2_PACKAGE_ERLANG
|
||||
|
||||
config BR2_PACKAGE_ERLANG_MEGACO
|
||||
bool "install megaco application"
|
||||
help
|
||||
The Megaco application is a framework for building
|
||||
applications on top of the Megaco/H.248 protocol. It is
|
||||
approximately 14MB in size so if you do not need it then
|
||||
it is recommended not to enable it.
|
||||
|
||||
endif # BR2_PACKAGE_ERLANG
|
||||
@@ -0,0 +1,4 @@
|
||||
# md5 from http://www.erlang.org/download/MD5, sha256 locally computed
|
||||
md5 b2b48dad6e69c1e882843edbf2abcfd3 otp_src_22.2.tar.gz
|
||||
sha256 89c2480cdac566065577c82704a48e10f89cf2e6ca5ab99e1cf80027784c678f otp_src_22.2.tar.gz
|
||||
sha256 809fa1ed21450f59827d1e9aec720bbc4b687434fa22283c6cb5dd82a47ab9c0 LICENSE.txt
|
||||
Vendored
+114
@@ -0,0 +1,114 @@
|
||||
################################################################################
|
||||
#
|
||||
# erlang
|
||||
#
|
||||
################################################################################
|
||||
|
||||
# See note below when updating Erlang
|
||||
ERLANG_VERSION = 22.2
|
||||
ERLANG_SITE = http://www.erlang.org/download
|
||||
ERLANG_SOURCE = otp_src_$(ERLANG_VERSION).tar.gz
|
||||
ERLANG_DEPENDENCIES = host-erlang
|
||||
|
||||
ERLANG_LICENSE = Apache-2.0
|
||||
ERLANG_LICENSE_FILES = LICENSE.txt
|
||||
ERLANG_CPE_ID_VENDOR = erlang
|
||||
ERLANG_CPE_ID_PRODUCT = erlang\/otp
|
||||
ERLANG_INSTALL_STAGING = YES
|
||||
|
||||
# windows specific issue: https://nvd.nist.gov/vuln/detail/CVE-2021-29221
|
||||
ERLANG_IGNORE_CVES += CVE-2021-29221
|
||||
|
||||
# Remove the leftover deps directory from the ssl app
|
||||
# See https://bugs.erlang.org/browse/ERL-1168
|
||||
define ERLANG_REMOVE_SSL_DEPS
|
||||
rm -rf $(@D)/lib/ssl/src/deps
|
||||
endef
|
||||
ERLANG_POST_PATCH_HOOKS += ERLANG_REMOVE_SSL_DEPS
|
||||
|
||||
# Patched erts/aclocal.m4
|
||||
define ERLANG_RUN_AUTOCONF
|
||||
cd $(@D) && PATH=$(BR_PATH) ./otp_build autoconf
|
||||
endef
|
||||
ERLANG_DEPENDENCIES += host-autoconf
|
||||
ERLANG_PRE_CONFIGURE_HOOKS += ERLANG_RUN_AUTOCONF
|
||||
HOST_ERLANG_DEPENDENCIES += host-autoconf
|
||||
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
|
||||
ERLANG_EI_VSN = 3.13.1
|
||||
|
||||
# The configure checks for these functions fail incorrectly
|
||||
ERLANG_CONF_ENV = ac_cv_func_isnan=yes ac_cv_func_isinf=yes
|
||||
|
||||
# Set erl_xcomp variables. See xcomp/erl-xcomp.conf.template
|
||||
# for documentation.
|
||||
ERLANG_CONF_ENV += erl_xcomp_sysroot=$(STAGING_DIR)
|
||||
|
||||
ERLANG_CONF_OPTS = --without-javac
|
||||
|
||||
# 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.
|
||||
ERLANG_CONF_ENV += ERL_TOP=$(@D)
|
||||
HOST_ERLANG_CONF_ENV += ERL_TOP=$(@D)
|
||||
|
||||
# erlang uses openssl for all things crypto. Since the host tools (such as
|
||||
# rebar) uses crypto, we need to build host-erlang with support for openssl.
|
||||
HOST_ERLANG_DEPENDENCIES += host-openssl
|
||||
HOST_ERLANG_CONF_OPTS = --without-javac --with-ssl=$(HOST_DIR)
|
||||
|
||||
HOST_ERLANG_CONF_OPTS += --without-termcap
|
||||
|
||||
ifeq ($(BR2_PACKAGE_NCURSES),y)
|
||||
ERLANG_CONF_OPTS += --with-termcap
|
||||
ERLANG_DEPENDENCIES += ncurses
|
||||
else
|
||||
ERLANG_CONF_OPTS += --without-termcap
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_OPENSSL),y)
|
||||
ERLANG_CONF_OPTS += --with-ssl
|
||||
ERLANG_DEPENDENCIES += openssl
|
||||
else
|
||||
ERLANG_CONF_OPTS += --without-ssl
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_UNIXODBC),y)
|
||||
ERLANG_DEPENDENCIES += unixodbc
|
||||
ERLANG_CONF_OPTS += --with-odbc
|
||||
else
|
||||
ERLANG_CONF_OPTS += --without-odbc
|
||||
endif
|
||||
|
||||
# Always use Buildroot's zlib
|
||||
ERLANG_CONF_OPTS += --disable-builtin-zlib
|
||||
ERLANG_DEPENDENCIES += zlib
|
||||
|
||||
# Remove source, example, gs and wx files from staging and target.
|
||||
ERLANG_REMOVE_PACKAGES = gs wx
|
||||
|
||||
ifneq ($(BR2_PACKAGE_ERLANG_MEGACO),y)
|
||||
ERLANG_REMOVE_PACKAGES += megaco
|
||||
endif
|
||||
|
||||
define ERLANG_REMOVE_STAGING_UNUSED
|
||||
for package in $(ERLANG_REMOVE_PACKAGES); do \
|
||||
rm -rf $(STAGING_DIR)/usr/lib/erlang/lib/$${package}-*; \
|
||||
done
|
||||
endef
|
||||
|
||||
define ERLANG_REMOVE_TARGET_UNUSED
|
||||
find $(TARGET_DIR)/usr/lib/erlang -type d -name src -prune -exec rm -rf {} \;
|
||||
find $(TARGET_DIR)/usr/lib/erlang -type d -name examples -prune -exec rm -rf {} \;
|
||||
for package in $(ERLANG_REMOVE_PACKAGES); do \
|
||||
rm -rf $(TARGET_DIR)/usr/lib/erlang/lib/$${package}-*; \
|
||||
done
|
||||
endef
|
||||
|
||||
ERLANG_POST_INSTALL_STAGING_HOOKS += ERLANG_REMOVE_STAGING_UNUSED
|
||||
ERLANG_POST_INSTALL_TARGET_HOOKS += ERLANG_REMOVE_TARGET_UNUSED
|
||||
|
||||
$(eval $(autotools-package))
|
||||
$(eval $(host-autotools-package))
|
||||
Reference in New Issue
Block a user