buildroot.buildroot.org archive mirror
 help / color / mirror / Atom feed
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

      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).