unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
From: Michael Zucchi <notzed@gmail.com>
To: help-guix@gnu.org
Subject: guix build problem, no RUNPATH on libpthread.so
Date: Mon, 20 Apr 2020 19:25:14 +0930	[thread overview]
Message-ID: <a280a6fa-08bd-6de8-03f1-f4ab5768bf1c@gmail.com> (raw)


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

             reply	other threads:[~2020-04-20  9:55 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-20  9:55 Michael Zucchi [this message]
2020-04-20 14:20 ` guix build problem, no RUNPATH on libpthread.so zimoun
2020-04-21  0:11   ` Michael Zucchi
2020-04-21  5:36     ` Efraim Flashner
2020-04-21  7:55       ` zimoun
2020-04-22  0:35         ` bug#40740: " Michael Zucchi

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

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a280a6fa-08bd-6de8-03f1-f4ab5768bf1c@gmail.com \
    --to=notzed@gmail.com \
    --cc=help-guix@gnu.org \
    /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 read-only IMAP folder(s) and NNTP newsgroup(s).