From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Zucchi Subject: guix build problem, no RUNPATH on libpthread.so Date: Mon, 20 Apr 2020 19:25:14 +0930 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:49078 helo=eggs1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jQT9A-00007I-92 for help-guix@gnu.org; Mon, 20 Apr 2020 05:55:25 -0400 Received: from Debian-exim by eggs1p.gnu.org with spam-scanned (Exim 4.90_1) (envelope-from ) id 1jQT98-0000mL-FR for help-guix@gnu.org; Mon, 20 Apr 2020 05:55:23 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]:41958) by eggs1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jQT98-0000lB-05 for help-guix@gnu.org; Mon, 20 Apr 2020 05:55:22 -0400 Received: by mail-pf1-x42e.google.com with SMTP id b8so4687574pfp.8 for ; Mon, 20 Apr 2020 02:55:21 -0700 (PDT) Received: from ?IPv6:2001:44b8:203:1200:be5f:f4ff:fef7:7bdc? (2001-44b8-0203-1200-be5f-f4ff-fef7-7bdc.static.ipv6.internode.on.net. [2001:44b8:203:1200:be5f:f4ff:fef7:7bdc]) by smtp.googlemail.com with ESMTPSA id s66sm697056pgb.84.2020.04.20.02.55.17 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 20 Apr 2020 02:55:18 -0700 (PDT) Content-Language: en-AU List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+gcggh-help-guix=m.gmane-mx.org@gnu.org Sender: "Help-Guix" To: help-guix@gnu.org I posted about this months ago but I think I got no answers or just gave up.  However a reddit discussion and boredom prompted me to revisit it and I think I have something that might be useful to someone.  I'm sorry I probably wont put much more time into this for the moment but I can try a few things out if someone gets back to me while the iron is hot. I'm building on slackware64 current which is more or less comprised of 'stable bleeding edge' and mostly unadulterated packages. Using the instructions here after a pull and upgrade of guix and a pull of the repository: https://guix.gnu.org/manual/devel/en/html_node/Building-from-Git.html#Building-from-Git I ran guix environment guix --pure. Then I ran configure but it failed saying that guile 3.0 could not be found.  After some poking i found this is provided by the guile-next package, so I had to manually install that.  So the instructions didn't work right off the bat but configure then completed just fine. However make then fails: [... lots and lots of errors about po4a-translate ...] make[2]: [Makefile:5931: doc/guix-cookbook.de.texi] Error 1 (ignored)   CXXLD    guix-daemon /usr/bin/ld: /gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29/lib/libpthread.so.0: undefined reference to `__libc_vfork@GLIBC_PRIVATE' collect2: error: ld returned 1 exit status make[2]: *** [Makefile:3562: guix-daemon] Error 1 make[2]: Leaving directory '/home/notzed/src/guix' make[1]: *** [Makefile:4929: all-recursive] Error 1 make[1]: Leaving directory '/home/notzed/src/guix' make: *** [Makefile:3350: all] Error 2 Sigh ok, lets run make V=1 so I can see what it did. notzed@shitzone:~/src/guix$ g++ -Wall -std=c++11 -g -O2   -o guix-daemon nix/nix-daemon/guix_daemon-nix-daemon.o nix/nix-daemon/guix_daemon-guix-daemon.o libstore.a libutil.a libformat.a -lz -L/gnu/store/i6l1579g80387rda658jy9cfqq82643d-sqlite-3.28.0/lib -lsqlite3 -L/gnu/store/svalmdlzh2apapqjfsrp33qgkgcgbmc0-libgcrypt-1.8.5/lib -lgcrypt -lbz2 /usr/bin/ld: /gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29/lib/libpthread.so.0: undefined reference to `__libc_vfork@GLIBC_PRIVATE' collect2: error: ld returned 1 exit status libsqlite3.so is the one dragging in libpthread.so (or at least one thereof): notzed@shitzone:~/src/guix$ ldd /gnu/store/i6l1579g80387rda658jy9cfqq82643d-sqlite-3.28.0/lib/libsqlite3.so         linux-vdso.so.1 (0x00007ffd851f1000)         libm.so.6 => /gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29/lib/libm.so.6 (0x00007f2e5ede1000)         libdl.so.2 => /gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29/lib/libdl.so.2 (0x00007f2e5eddc000)         libpthread.so.0 => /gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29/lib/libpthread.so.0 (0x00007f2e5edbb000)         libgcc_s.so.1 => /gnu/store/2plcy91lypnbbysb18ymnhaw3zwk8pg1-gcc-7.4.0-lib/lib/libgcc_s.so.1 (0x00007f2e5eda2000)         libc.so.6 => /gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29/lib/libc.so.6 (0x00007f2e5ebe8000)         /lib64/ld-linux-x86-64.so.2 (0x00007f2e5f035000) notzed@shitzone:~$ ldd /gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29/lib/libpthread.so.0         linux-vdso.so.1 (0x00007ffd0e25f000)         libc.so.6 => /lib64/libc.so.6 (0x00007f013c344000) /gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f013c58c000) But unlike the other libraries libpthread.so doesn't have an explicit path to it's matching libc and so just uses the system one.  slackware current currently has glibc 2.30, and it seems it or it's build configuration isn't compatible with glibc 2.29 as supplied by guix. To me this looks like a bug with the glibc package creation as it seems to apply to all the other libraries in *-glibc-2.29/lib as well.  The package definition has the runpath stuff disabled which is what I presume causes this even though it's obviously intentional. I've installed blender and that works and i think it builds from source but for whatever reason it resolves at link and run time but this doesn't.  I tried playing with the link order but it made no difference. If I install gcc-toolchain then make completes, but that seems like a hack and it causes other issues with the use of the system as a development machine.  If gcc is linking with files which may get removed because they aren't referenced by a package (and i will not be doing that for development), then that's a pretty nasty gotcha somewhere down the line, not to mention it forces all libraries to be through guix so an all-in rather than non-interfering co-existence. So given I got it to at least build using the install gcc-toolchain hack, ... Well make check then fails because this system's kernel  doesn't have CONFIG_IA32_EMULATION enabled and a bunch of tests require the use of bootstrap binaries.  These provide aarch64, armhf, mips64el, i686, but no amd64 (or x86_64 if you prefer) binaries. e.g. tests/challenge.log: [lots of this, i presume this is a guile 2 v guile 3 thing again?] ;;; In procedure load-thunk-from-memory: incompatible bytecode kind ;;; WARNING: loading compiled file /home/notzed/src/guix/guix/nar.go failed: ;;; In procedure load-thunk-from-memory: incompatible bytecode kind ;;; WARNING: loading compiled file /home/notzed/src/guix/guix/store/database.go failed: ;;; In procedure load-thunk-from-memory: incompatible bytecode kind ;;; WARNING: loading compiled file /gnu/store/6fnsh1g610wps99jgsbd6d9hik1acb0s-profile/lib/guile/2.2/site-ccache/sqlite3.go failed: ;;; In procedure load-thunk-from-memory: incompatible bytecode kind ;;; WARNING: loading compiled file /home/notzed/src/guix/guix/build/store-copy.go failed: ;;; In procedure load-thunk-from-memory: incompatible bytecode kind ;;; WARNING: loading compiled file /home/notzed/src/guix/guix/pki.go failed: ;;; In procedure load-thunk-from-memory: incompatible bytecode kind @ build-started /home/notzed/src/guix/test-tmp/store/lpa2w62qpklqh0x3r99030mhgx7qym5j-guile-bootstrap-2.0.drv - x86_64-linux /home/notzed/src/guix/test-tmp/var/log/guix/drvs/lp//a2w62qpklqh0x3r99030mhgx7qym5j-guile-bootstrap-2.0.drv.bz2 21892 while setting up the build environment: executing `/home/notzed/src/guix/test-tmp/store/f0ips0sdyhnhlfdqayvcbddqlijk7iid-bash': Exec format error builder for `/home/notzed/src/guix/test-tmp/store/lpa2w62qpklqh0x3r99030mhgx7qym5j-guile-bootstrap-2.0.drv' failed with exit code 1 @ build-failed /home/notzed/src/guix/test-tmp/store/lpa2w62qpklqh0x3r99030mhgx7qym5j-guile-bootstrap-2.0.drv - 1 builder for `/home/notzed/src/guix/test-tmp/store/lpa2w62qpklqh0x3r99030mhgx7qym5j-guile-bootstrap-2.0.drv' failed with exit code 1 actual-value: #f actual-error: + (%exception +   #<&store-protocol-error message: "build of `/home/notzed/src/guix/test-tmp/store/lpa2w62qpklqh0x3r99030mhgx7qym5j-guile-bootstrap-2.0.drv' failed" status: 100>) result: FAIL And finally once tests/print.scm prints a red FAIL it just seems to hang indefinitely. select(4, [3], NULL, NULL, {tv_sec=0, tv_usec=200}) = 0 (Timeout) stat("/tmp/guix-directory.8o50sG/token1", 0x7ffc07a78740) = -1 ENOENT (No such file or directory) rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0 strace shows this looping infinitely.  The test itself also fails due to the bash binary not being compatible with the system.  !Z ---- Addendum: Just for interest here is the output of g++ -v: notzed@shitzone:~/src/guix$ g++ -v -Wall -std=c++11 -g -O2   -o guix-daemon nix/nix-daemon/guix_daemon-nix-daemon.o nix/nix-daemon/guix_daemon-guix-daemon.o libstore.a libutil.a libformat.a -lz -L/gnu/store/i6l1579g80387rda658jy9cfqq82643d-sqlite-3.28.0/lib -lsqlite3 -L/gnu/store/svalmdlzh2apapqjfsrp33qgkgcgbmc0-libgcrypt-1.8.5/lib -lgcrypt -lbz2 Reading specs from /usr/lib64/gcc/x86_64-slackware-linux/9.3.0/specs COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-slackware-linux/9.3.0/lto-wrapper Target: x86_64-slackware-linux Configured with: ../configure --prefix=/usr --libdir=/usr/lib64 --mandir=/usr/man --infodir=/usr/info --enable-shared --enable-bootstrap --enable-languages=ada,brig,c,c++,d,fortran,go,lto,objc,obj-c++ --enable-threads=posix --enable-checking=release --enable-objc-gc --with-system-zlib --enable-libstdcxx-dual-abi --with-default-libstdcxx-abi=new --disable-libstdcxx-pch --disable-libunwind-exceptions --enable-__cxa_atexit --disable-libssp --enable-gnu-unique-object --enable-plugin --enable-lto --disable-install-libiberty --disable-werror --with-gnu-ld --with-isl --verbose --with-arch-directory=amd64 --disable-gtktest --enable-clocale=gnu --disable-multilib --target=x86_64-slackware-linux --build=x86_64-slackware-linux --host=x86_64-slackware-linux Thread model: posix gcc version 9.3.0 (GCC) COMPILER_PATH=/usr/libexec/gcc/x86_64-slackware-linux/9.3.0/:/usr/libexec/gcc/x86_64-slackware-linux/9.3.0/:/usr/libexec/gcc/x86_64-slackware-linux/:/usr/lib64/gcc/x86_64-slackware-linux/9.3.0/:/usr/lib64/gcc/x86_64-slackware-linux/:/usr/lib64/gcc/x86_64-slackware-linux/9.3.0/../../../../x86_64-slackware-linux/bin/ LIBRARY_PATH=/usr/lib64/gcc/x86_64-slackware-linux/9.3.0/:/usr/lib64/gcc/x86_64-slackware-linux/9.3.0/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/gnu/store/6fnsh1g610wps99jgsbd6d9hik1acb0s-profile/lib/:/usr/lib64/gcc/x86_64-slackware-linux/9.3.0/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-v' '-Wall' '-std=c++11' '-g' '-O2' '-o' 'guix-daemon' '-L/gnu/store/i6l1579g80387rda658jy9cfqq82643d-sqlite-3.28.0/lib' '-L/gnu/store/svalmdlzh2apapqjfsrp33qgkgcgbmc0-libgcrypt-1.8.5/lib' '-shared-libgcc' '-mtune=generic' '-march=x86-64'  /usr/libexec/gcc/x86_64-slackware-linux/9.3.0/collect2 -plugin /usr/libexec/gcc/x86_64-slackware-linux/9.3.0/liblto_plugin.so -plugin-opt=/usr/libexec/gcc/x86_64-slackware-linux/9.3.0/lto-wrapper -plugin-opt=-fresolution=/tmp/ccT4F8CQ.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o guix-daemon /usr/lib64/gcc/x86_64-slackware-linux/9.3.0/../../../../lib64/crt1.o /usr/lib64/gcc/x86_64-slackware-linux/9.3.0/../../../../lib64/crti.o /usr/lib64/gcc/x86_64-slackware-linux/9.3.0/crtbegin.o -L/gnu/store/i6l1579g80387rda658jy9cfqq82643d-sqlite-3.28.0/lib -L/gnu/store/svalmdlzh2apapqjfsrp33qgkgcgbmc0-libgcrypt-1.8.5/lib -L/usr/lib64/gcc/x86_64-slackware-linux/9.3.0 -L/usr/lib64/gcc/x86_64-slackware-linux/9.3.0/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/gnu/store/6fnsh1g610wps99jgsbd6d9hik1acb0s-profile/lib -L/usr/lib64/gcc/x86_64-slackware-linux/9.3.0/../../.. nix/nix-daemon/guix_daemon-nix-daemon.o nix/nix-daemon/guix_daemon-guix-daemon.o libstore.a libutil.a libformat.a -lz -lsqlite3 -lgcrypt -lbz2 -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib64/gcc/x86_64-slackware-linux/9.3.0/crtend.o /usr/lib64/gcc/x86_64-slackware-linux/9.3.0/../../../../lib64/crtn.o /usr/bin/ld: /gnu/store/ahqgl4h89xqj695lgqvsaf6zh2nhy4pj-glibc-2.29/lib/libpthread.so.0: undefined reference to `__libc_vfork@GLIBC_PRIVATE' collect2: error: ld returned 1 exit status