Bug 14366

Summary: Nodejs fails with "version `GLIBC_2.34' not found" on Ubuntu 20.04
Product: buildroot Reporter: Jens Maus <mail>
Component: OtherAssignee: unassigned
Status: RESOLVED FIXED    
Severity: blocker CC: buildroot, f.rogall, yann.morin.1998
Priority: P5    
Version: 2022.02   
Target Milestone: ---   
Hardware: All   
OS: Linux   
Host: Target:
Build:

Description Jens Maus 2021-11-20 11:35:33 UTC
After upgrading from 2021.08.2 to the latest 2021.11-rc2 the following error appear when compiling nodejs-14.18.1:

-- cut here --
  LD_LIBRARY_PATH=/home/damato/projekte/linux/RaspberryMatic/build-raspmatic_ova/build/nodejs-14.18.1/out/Release/lib.host:/home/damato/projekte/linux/RaspberryMatic/build-raspmatic_ova/build/nodejs-14.18.1/out/Release/lib.target:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd ../tools/v8_gypfiles; mkdir -p /home/damato/projekte/linux/RaspberryMatic/build-raspmatic_ova/build/nodejs-14.18.1/out/Release/obj/gen/inspector-generated-output-root/include/inspector /home/damato/projekte/linux/RaspberryMatic/build-raspmatic_ova/build/nodejs-14.18.1/out/Release/obj/gen/inspector-generated-output-root/src/inspector/protocol; python ../../deps/v8/third_party/inspector_protocol/code_generator.py --jinja_dir ../../deps/v8/third_party --output_base "/home/damato/projekte/linux/RaspberryMatic/build-raspmatic_ova/build/nodejs-14.18.1/out/Release/obj/gen/inspector-generated-output-root/src/inspector" --config ../../deps/v8/src/inspector/inspector_protocol_config.json --inspector_protocol_dir ../../deps/v8/third_party/inspector_protocol
  LD_LIBRARY_PATH=/home/damato/projekte/linux/RaspberryMatic/build-raspmatic_ova/build/nodejs-14.18.1/out/Release/lib.host:/home/damato/projekte/linux/RaspberryMatic/build-raspmatic_ova/build/nodejs-14.18.1/out/Release/lib.target:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd ../tools/v8_gypfiles; mkdir -p /home/damato/projekte/linux/RaspberryMatic/build-raspmatic_ova/build/nodejs-14.18.1/out/Release/obj/gen/inspector-generated-output-root/include/inspector /home/damato/projekte/linux/RaspberryMatic/build-raspmatic_ova/build/nodejs-14.18.1/out/Release/obj/gen/inspector-generated-output-root/src/inspector/protocol; python ../../deps/v8/third_party/inspector_protocol/code_generator.py --jinja_dir ../../deps/v8/third_party --output_base "/home/damato/projekte/linux/RaspberryMatic/build-raspmatic_ova/build/nodejs-14.18.1/out/Release/obj/gen/inspector-generated-output-root/src/inspector" --config ../../deps/v8/src/inspector/inspector_protocol_config.json --inspector_protocol_dir ../../deps/v8/third_party/inspector_protocol
/home/damato/projekte/linux/RaspberryMatic/build-raspmatic_ova/build/nodejs-14.18.1/out/Release/bytecode_builtins_list_generator: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/damato/projekte/linux/RaspberryMatic/build-raspmatic_ova/build/nodejs-14.18.1/out/Release/bytecode_builtins_list_generator)
/home/damato/projekte/linux/RaspberryMatic/build-raspmatic_ova/build/nodejs-14.18.1/out/Release/bytecode_builtins_list_generator: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /home/damato/projekte/linux/RaspberryMatic/build-raspmatic_ova/build/nodejs-14.18.1/out/Release/bytecode_builtins_list_generator)
/home/damato/projekte/linux/RaspberryMatic/build-raspmatic_ova/build/nodejs-14.18.1/out/Release/bytecode_builtins_list_generator: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/damato/projekte/linux/RaspberryMatic/build-raspmatic_ova/build/nodejs-14.18.1/out/Release/bytecode_builtins_list_generator)
make[3]: *** [tools/v8_gypfiles/generate_bytecode_builtins_list.target.mk:13: /home/damato/projekte/linux/RaspberryMatic/build-raspmatic_ova/build/nodejs-14.18.1/out/Release/obj/gen/generate-bytecode-output-root/builtins-generated/bytecodes-builtins-list.h] Error 1
make[3]: *** Waiting for unfinished jobs....
rm e730c40db4707fa90e26f9a1f4e233545a966191.intermediate f851aa033254e58b7e35f943f6814ef5e8f9642a.intermediate
make[2]: *** [Makefile:109: node] Error 2
make[2]: Leaving directory '/home/damato/projekte/linux/RaspberryMatic/build-raspmatic_ova/build/nodejs-14.18.1'
make[1]: *** [package/pkg-generic.mk:294: /home/damato/projekte/linux/RaspberryMatic/build-raspmatic_ova/build/nodejs-14.18.1/.stamp_built] Error 2
make[1]: Leaving directory '/home/damato/projekte/linux/RaspberryMatic/buildroot-2021.11-rc2'
make: *** [Makefile:51: build] Error 2
-- cut here --

Thus, it looks like the host system libc.so.6 is used for the "bytecode_builtins_list_generator" tool that is automatically build during the nodejs-14.18.1 build run. However, as buildroot 2021.11 introduced GLIBC_2.34 the execution of "bytecode_builtins_list_generator" fails because Ubuntu 20.04 does not come with a glibc with GLIBC_2.34 symbols in libc.so. Thus, the dedicated compiled 2.34 glibc for the host in "host/x86_64-buildroot-linux-gnu/sysroot/lib" should be used instead so that the "bytecode_builtins_list_generator" tool can be correctly executed.
Comment 1 Frank Rogall 2022-01-31 10:32:47 UTC
Bug still exists in 2021.11.1 with nodejs-14.18.3 
Ubuntu 20.04.3 LTS

/home/fr/work/egate/x/egate/build/nodejs-14.18.3/out/Release/bytecode_builtins_list_generator: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/fr/work/egate/x/egate/build/nodejs-14.18.3/out/Release/bytecode_builtins_list_generator)
make[3]: *** [tools/v8_gypfiles/generate_bytecode_builtins_list.target.mk:13: /home/fr/work/egate/x/egate/build/nodejs-14.18.3/out/Release/obj/gen/generate-bytecode-output-root/builtins-generated/bytecodes-builtins-list.h] Error 1
Comment 2 Jens Maus 2022-01-31 15:52:48 UTC
I can confirm that this issue still exists in 2021.11.1.
Comment 3 oliver.kasten 2022-02-04 11:03:18 UTC
I have the same issue. It seems that qemu used in v8-qemu-wrapper.in caused this issue. Build nodejs for aarch64 on x86_64 works fine, but building for x86_64 on x86_64 failed. I entered a bug request for qemu (https://gitlab.com/qemu-project/qemu/-/issues/857).
Comment 4 Jens Maus 2022-02-23 08:20:07 UTC
I just checked the latest 2022.02-rc2 version and there the issue with not being able to compile nodejs v14+ on an ubuntu host still exists as outlined here.

However, taking the workaround mentioned in https://gitlab.com/qemu-project/qemu/-/issues/857 I could workout a patch that seems to fix the issue:

--- buildroot/package/nodejs/v8-qemu-wrapper.in.orig
+++ buildroot/package/nodejs/v8-qemu-wrapper.in
@@ -5,5 +5,6 @@
 exec @QEMU_USER@ -r @TOOLCHAIN_HEADERS_VERSION@ \
     @QEMU_USERMODE_ARGS@ \
    -L "${STAGING_DIR}/" \
+   -E LD_LIBRARY_PATH="/lib/" \
     "$@"


With this patch nodejs v14+ seems to compile fine on an ubuntu 20.04 LTS host.
Comment 5 Frank Rogall 2022-03-01 09:49:12 UTC
Bug still exists in 2021.11.2 with nodejs-14.18.3 
Ubuntu 20.04.3 LTS
Comment 6 Frank Rogall 2022-03-09 10:05:51 UTC
This Bug is still in 2022.02

LD_LIBRARY_PATH=/home/fr/work/egate/x/egate/build/nodejs-14.18.3/out/Release/lib.host:/home/fr/work/egate/x/egate/build/nodejs-14.18.3/out/Release/lib.target:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd ../tools/v8_gypfiles; mkdir -p /home/fr/work/egate/x/egate/build/nodejs-14.18.3/out/Release/obj/gen/generate-bytecode-output-root/builtins-generated; python ../../deps/v8/tools/run.py "/home/fr/work/egate/x/egate/build/nodejs-14.18.3/out/Release/v8-qemu-wrapper" "/home/fr/work/egate/x/egate/build/nodejs-14.18.3/out/Release/bytecode_builtins_list_generator" "/home/fr/work/egate/x/egate/build/nodejs-14.18.3/out/Release/obj/gen/generate-bytecode-output-root/builtins-generated/bytecodes-builtins-list.h"
/home/fr/work/egate/x/egate/build/nodejs-14.18.3/out/Release/bytecode_builtins_list_generator: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by /home/fr/work/egate/x/egate/build/nodejs-14.18.3/out/Release/bytecode_builtins_list_generator)
/home/fr/work/egate/x/egate/build/nodejs-14.18.3/out/Release/bytecode_builtins_list_generator: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /home/fr/work/egate/x/egate/build/nodejs-14.18.3/out/Release/bytecode_builtins_list_generator)
/home/fr/work/egate/x/egate/build/nodejs-14.18.3/out/Release/bytecode_builtins_list_generator: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /home/fr/work/egate/x/egate/build/nodejs-14.18.3/out/Release/bytecode_builtins_list_generator)
make[3]: *** [tools/v8_gypfiles/generate_bytecode_builtins_list.target.mk:13: /home/fr/work/egate/x/egate/build/nodejs-14.18.3/out/Release/obj/gen/generate-bytecode-output-root/builtins-generated/bytecodes-builtins-list.h] Error 1
Comment 7 Jens Maus 2022-03-09 10:19:59 UTC
(In reply to Frank Rogall from comment #6)

I could verify that this issue still exists in 2022.02. However, my mentioned workaround (cf. https://bugs.busybox.net/show_bug.cgi?id=14366#c4) still works.
Comment 8 Frank Rogall 2022-04-13 14:35:22 UTC
Still in 2022.02.1
Comment 9 Frank Rogall 2022-04-13 15:16:16 UTC
(In reply to Jens Maus from comment #7)
Patch is working on 2022.02.1
Comment 10 Felix Schmidt 2022-06-09 14:59:02 UTC
(In reply to Frank Rogall from comment #9)
I'm having a similar issue, with host=x86_64 and target=i686 (32bit).
 
Here this patch does not work. This is my workaround:

--- buildroot/package/nodejs/v8-qemu-wrapper.in.orig
+++ buildroot/package/nodejs/v8-qemu-wrapper.in
@@ -5,5 +5,6 @@
 exec @QEMU_USER@ -r @TOOLCHAIN_HEADERS_VERSION@ \
     @QEMU_USERMODE_ARGS@ \
    -L "${STAGING_DIR}/" \
+   -E LD_LIBRARY_PATH="${STAGING_DIR}/lib:${STAGING_DIR}/usr/lib/" \
     "$@"
Comment 11 Yann E. MORIN 2023-09-24 16:37:26 UTC
Jens, All,

Fixed as of commit 278d1db56b.

Regards,
Yann E. MORIN.