all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* guix build problem, no RUNPATH on libpthread.so
@ 2020-04-20  9:55 Michael Zucchi
  2020-04-20 14:20 ` zimoun
  0 siblings, 1 reply; 7+ messages in thread
From: Michael Zucchi @ 2020-04-20  9:55 UTC (permalink / raw)
  To: help-guix


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

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-04-22  0:36 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-04-20  9:55 guix build problem, no RUNPATH on libpthread.so Michael Zucchi
2020-04-20 14:20 ` 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
2020-04-21  7:55       ` zimoun

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.