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