From 014b49cfde1a13aed7126179421974225ba8cf1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexis=20Lothor=C3=A9=20via=20buildroot?= Date: Sun, 23 Aug 2026 23:49:38 +0200 Subject: [PATCH] package/erlang: fix link failure on odbcserver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit host-erlang build can fail with the following error: make[5]: Nothing to be done for 'opt'. MAKE opt CC ../priv/bin/x86_64-pc-linux-gnu/odbcserver /usr/bin/ld: ../priv/obj/x86_64-pc-linux-gnu/odbcserver.o: in function `encode_column_dyn': odbcserver.c:(.text+0x6b4): undefined reference to `ei_x_encode_tuple_header' /usr/bin/ld: odbcserver.c:(.text+0x6c2): undefined reference to `ei_x_encode_tuple_header' /usr/bin/ld: odbcserver.c:(.text+0x6d4): undefined reference to `ei_x_encode_ulong' /usr/bin/ld: odbcserver.c:(.text+0x6e7): undefined reference to `ei_x_encode_ulong' /usr/bin/ld: odbcserver.c:(.text+0x6fa): undefined reference to `ei_x_encode_ulong' /usr/bin/ld: odbcserver.c:(.text+0x708): undefined reference to `ei_x_encode_tuple_header' /usr/bin/ld: odbcserver.c:(.text+0x71b): undefined reference to `ei_x_encode_ulong' /usr/bin/ld: odbcserver.c:(.text+0x72e): undefined reference to `ei_x_encode_ulong' [...] This can be reproduced with the following minimal defconfig (and libei.so present on host, see details below): BR2_x86_64=y BR2_TOOLCHAIN_EXTERNAL=y BR2_PACKAGE_ERLANG=y Those missing symbols are part of the erl_interface, exposed by libei.a. host-erlang builds correctly libei.a _before_ odbcserver.c (it can be found in lib/erl_interface/obj/x86_64-pc-linux-gnu/libei.a), but the failure is actually due to the build command generated and used for odbcserver.c, especially the link arguments: /usr/bin/gcc \ [...] -o ../priv/bin/x86_64-pc-linux-gnu/odbcserver \ ../priv/obj/x86_64-pc-linux-gnu/odbcserver.o \ -L/usr/lib64 \ -lodbc \ -L/home/alexis/src/buildroot/erlang-master/build/host-erlang-custom/lib/erl_interface/obj/x86_64-pc-linux-gnu \ -lpthread -lei /usr/lib64 is searched before the path where libei.a has been built, so if whether a valid libei.a or libei.so is found there, it shadows the expected libei.a. In the build from which the logs above come, the notable point is that the host system indeed have a valid libei.so, but is completely unrelated to erl_interface; it rather exposes the Emulated Input protocol aimed at Wayland stack; and so it obviously contains none of the expected ei_* symbols. Upstream has already identified and fixed the issue, the fix is already released in versions >= 27.x.y. Erlang 26 (the version currently packaged in buildroot), isn't supported anymore (only the three latest releases are supported, see https://github.com/erlang/otp/blob/master/SECURITY.md), so there won't be any new minor update that will release this fix. Pick and backport the fixing patch so that the current version packaged in buildroot can still build. Signed-off-by: Alexis Lothoré Signed-off-by: Thomas Petazzoni (cherry picked from commit 5ea2135a56d6038329ede3f744fbe5a363bc3557) Signed-off-by: Raphaël Mélotte --- ...der-to-avoid-picking-up-system-libei.patch | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 package/erlang/0001-Change-libs-order-to-avoid-picking-up-system-libei.patch diff --git a/package/erlang/0001-Change-libs-order-to-avoid-picking-up-system-libei.patch b/package/erlang/0001-Change-libs-order-to-avoid-picking-up-system-libei.patch new file mode 100644 index 0000000000..c21311cbb3 --- /dev/null +++ b/package/erlang/0001-Change-libs-order-to-avoid-picking-up-system-libei.patch @@ -0,0 +1,32 @@ +From de58cbe979942308eb8823a526cd68b06d5dc662 Mon Sep 17 00:00:00 2001 +From: Sacha +Date: Wed, 13 Mar 2024 13:28:41 +0100 +Subject: [PATCH] Change libs order to avoid picking up system libei + +Upstream: https://github.com/erlang/otp/commit/de58cbe +Signed-off-by: Alexis Lothoré +--- + 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 d1b26743a6a4..03ed314f6a26 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.55.0 +