From: Thomas Perale via buildroot <buildroot@buildroot.org>
To: "Alexis Lothoré" <alexis.lothore@bootlin.com>
Cc: Thomas Perale <thomas.perale@mind.be>, buildroot@buildroot.org
Subject: Re: [Buildroot] [PATCH] package/erlang: fix link failure on odbcserver
Date: Fri, 4 Sep 2026 14:18:25 +0200 [thread overview]
Message-ID: <20260904121831.405382-1-thomas.perale@mind.be> (raw)
In-Reply-To: <20260823-fix-host-erlang-v1-1-4886b00d10f0@bootlin.com>
In reply of:
> 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é <alexis.lothore@bootlin.com>
Applied to 2025.02.x & 2026.05.x. Thanks
> ---
> The issue affects 2025.02.x, 2026.05.x and master.
>
> I've also taken a look at updating the erlang package, but:
> - I hope the fix to be applied on current LTS, so a package upgrade
> updating to a new major version seems out of scope
> - On master branch, while I managed to build host-erlang 29 when
> updating the .mk, I quickly encountered some failures on some erlang
> packages, so it needs more work
> ---
> ...bs-order-to-avoid-picking-up-system-libei.patch | 32 ++++++++++++++++++++++
> 1 file changed, 32 insertions(+)
>
> 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 000000000000..c21311cbb395
> --- /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 <sachahony@gmail.com>
> +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é <alexis.lothore@bootlin.com>
> +---
> + 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
> +
>
> ---
> base-commit: c3f3705a2fd27206cf2e79fd802b681e77be2cfe
> change-id: 20260823-fix-host-erlang-5c0b82ba7a2f
>
> Best regards,
> --
> Alexis Lothoré <alexis.lothore@bootlin.com>
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
prev parent reply other threads:[~2026-09-04 12:18 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-23 21:49 [Buildroot] [PATCH] package/erlang: fix link failure on odbcserver Alexis Lothoré via buildroot
2026-08-29 21:09 ` Thomas Petazzoni via buildroot
2026-08-29 21:10 ` Thomas Petazzoni via buildroot
2026-09-04 12:18 ` Thomas Perale via buildroot [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260904121831.405382-1-thomas.perale@mind.be \
--to=buildroot@buildroot.org \
--cc=alexis.lothore@bootlin.com \
--cc=thomas.perale@mind.be \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).