Cyril Roelandt skribis: > On 09/12/2013 10:41 AM, Ludovic Courtès wrote: >> No. Could you try to grep the source to see what produces this message? > > Oh, I thought the message was directly produced by libtool or the > linker, but yes, it's definitely an error message from > gobject-introspection. I investigated this a bit. During the 'build' > phase, the '_resolve_non_libtool' method is called from > giscanner/shlibs.py. It tries to get the path to some libraries (here, > gobject-2.0 and glib-2.0). In order to do this, it runs this command: > > $ /nix/store/2awqnfxjrcm2b8s481zwsnfdic3inkdi-bash-4.2/bin/bash \ > ./libtool --mode=execute ldd \ > /tmp/nix-build-gobject-introspection-1.37.6.drv-0/gobject-introspection-1.37.6/tmp-introspectS0TNXv/GLib-2.0 > > (tmp-instropectS0TNXv is a random directory) > > On i686, this works perfectly. On x86-64, I get: > > 'not a dynamic executable' Yes, we actually have a problem with ldd (I had noticed, but thought this would change with the moon phase or something): --8<---------------cut here---------------start------------->8--- $ sh -x ~/.guix-profile/bin/ldd $(which ls) + TEXTDOMAIN=libc + TEXTDOMAINDIR=/nix/store/53afsq4c7r10hn77h3iyyavy2bs02403-glibc-2.17/share/locale + RTLDLIST='/nix/store/53afsq4c7r10hn77h3iyyavy2bs02403-glibc-2.17/lib/ld-linux.so.2 /nix/store/53afsq4c7r10hn77h3iyyavy2bs02403-glibc-2.17/lib64/ld-linux-x86-64.so.2 /nix/store/53afsq4c7r10hn77h3iyyavy2bs02403-glibc-2.17/libx32/ld-linux-x32.so.2' + warn= + bind_now= + verbose= + test 1 -gt 0 + case "$1" in + break + add_env='LD_TRACE_LOADED_OBJECTS=1 LD_WARN= LD_BIND_NOW=' + add_env='LD_TRACE_LOADED_OBJECTS=1 LD_WARN= LD_BIND_NOW= LD_LIBRARY_VERSION=$verify_out' + add_env='LD_TRACE_LOADED_OBJECTS=1 LD_WARN= LD_BIND_NOW= LD_LIBRARY_VERSION=$verify_out LD_VERBOSE=' + test '' = yes + set -o pipefail + case $# in + single_file=t + result=0 + for file in '"$@"' + test t = t + case $file in + : + test '!' -e /home/ludo/.guix-profile/bin/ls + test '!' -f /home/ludo/.guix-profile/bin/ls + test -r /home/ludo/.guix-profile/bin/ls + test -x /home/ludo/.guix-profile/bin/ls + RTLD= + ret=1 + for rtld in '${RTLDLIST}' + test -x /nix/store/53afsq4c7r10hn77h3iyyavy2bs02403-glibc-2.17/lib/ld-linux.so.2 + for rtld in '${RTLDLIST}' + test -x /nix/store/53afsq4c7r10hn77h3iyyavy2bs02403-glibc-2.17/lib64/ld-linux-x86-64.so.2 + for rtld in '${RTLDLIST}' + test -x /nix/store/53afsq4c7r10hn77h3iyyavy2bs02403-glibc-2.17/libx32/ld-linux-x32.so.2 + case $ret in + nonelf /home/ludo/.guix-profile/bin/ls + return 1 + echo ' not a dynamic executable' not a dynamic executable + result=1 + exit 1 --8<---------------cut here---------------end--------------->8--- It’s looking for ld.so in the wrong place (under lib64/). I believe this wonderful patch fixes the problem: