libtool
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: DESTDIR, relink dependent lib, RPM and AIX


From: Frank Fegert
Subject: Re: DESTDIR, relink dependent lib, RPM and AIX
Date: Fri, 18 May 2007 22:42:53 +0200
User-agent: Debian Thunderbird 1.0.2 (X11/20070113)

Hello all,

Frank Fegert wrote:
> Ralf Wildenhues wrote:
> 
>>This particular bug has been fixed in the CVS version of Libtool, as far
>>as I can see.  Its tests/destdir.at tests exposes the branch-1-5 failure.
> 
> 
> i rebuild libtool with the v1.5.23a and v2.1a (each from the daily
> CVS snapshot). The error remains the same with either version of
> libtool. The dependend lib is still searched in $DIR rather than
> $DESTDIR/$DIR:
> 
> $ libtool --version
> ltmain.sh (GNU libtool) 1.5.23a (1.1220.2.412 2006/10/13 14:13:30)

the problem with gettext and the inter-dependent library install
disappeared after i removed "-Wl,-brtl" from my build environments
default LDFLAGS. I'm not exactly sure why enabling RTL would break
things at that point, but never mind that now.
The new and very similar problem is with subversion-1.4.3, which
also comes with several inter-dependent libraries. libtool is at
version 1.5.23b and fails to locate the dependent libraries in
DESTDIR/instprefix:

    $ gmake install DESTDIR=/tmp/rd/frank/subversion-1.4.3-instroot
    /opt/afw/bin/ginstall -c -d 
/tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/lib
    cd subversion/libsvn_subr ; /opt/afw/bin/bash 
/tmp/rd/frank/subversion-1.4.3/libtool --mode=install /opt/afw/bin/ginstall -c 
libsvn_subr-1.la 
/tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/lib/libsvn_subr-1.la
    /opt/afw/bin/ginstall -c .libs/libsvn_subr-1.a 
/tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/lib/libsvn_subr-1.a
    /opt/afw/bin/ginstall -c .libs/libsvn_subr-1.lai 
/tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/lib/libsvn_subr-1.la
    libtool: install: warning: remember to run `libtool --finish /opt/afw/lib'
    cd subversion/libsvn_delta ; /opt/afw/bin/bash 
/tmp/rd/frank/subversion-1.4.3/libtool --mode=install /opt/afw/bin/ginstall -c 
libsvn_delta-1.la 
/tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/lib/libsvn_delta-1.la
    libtool: install: warning: relinking `libsvn_delta-1.la'
    (cd /tmp/rd/frank/subversion-1.4.3/subversion/libsvn_delta; 
/opt/afw/bin/bash /tmp/rd/frank/subversion-1.4.3/libtool  --tag=CC  
--mode=relink gcc -O2 -g -fsigned-char -pthread -D_LARGEFILE64_SOURCE -DNE_LFS 
-L/opt/afw/lib -Wl,-blibpath:/opt/afw/lib:/usr/lib:/lib -L/opt/afw/lib -rpath 
/opt/afw/lib -o libsvn_delta-1.la cancel.lo compose_delta.lo debug_editor.lo 
default_editor.lo path_driver.lo svndiff.lo text_delta.lo vdelta.lo version.lo 
xdelta.lo ../../subversion/libsvn_subr/libsvn_subr-1.la
/opt/afw/lib/libaprutil-1.la -lgdbm -ldb-4.5 -lsqlite3 -lexpat -liconv 
/opt/afw/lib/libapr-1.la -lpthread -lintl -lz -inst-prefix-dir 
/tmp/rd/frank/subversion-1.4.3-instroot)
    generating symbol list for `libsvn_delta-1.la'
    /usr/bin/nm -B -BCpg  .libs/cancel.o .libs/compose_delta.o 
.libs/debug_editor.o .libs/default_editor.o .libs/path_driver.o .libs/svndiff.o 
.libs/text_delta.o .libs/vdelta.o .libs/version.o .libs/xdelta.o  | awk '{if 
((($2 == "T") || ($2 == "D") || ($2 == "B")) && (substr($3,1,1) != ".")) { 
print $3 } }' | sort -u > .libs/libsvn_delta-1.exp
    gcc -shared -o .libs/libsvn_delta-1.so.0  .libs/cancel.o 
.libs/compose_delta.o .libs/debug_editor.o .libs/default_editor.o 
.libs/path_driver.o .libs/svndiff.o .libs/text_delta.o .libs/vdelta.o 
.libs/version.o .libs/xdelta.o  
-Wl,-blibpath:/opt/afw/lib:/opt/afw/lib:/usr/lib:/lib -L/opt/afw/lib 
/opt/afw/lib/libsvn_subr-1.a /opt/afw/lib/libaprutil-1.a /opt/afw/lib/libgdbm.a 
/opt/afw/lib/libdb-4.5.a /opt/afw/lib/libsqlite3.a /opt/afw/lib/libexpat.a 
/opt/afw/lib/libiconv.a /opt/afw/lib/libapr-1.a
-lpthread /opt/afw/lib/libintl.a -lz -lc -Wl,-bnoentry  -pthread 
-Wl,-blibpath:/opt/afw/lib:/usr/lib:/lib -Wl,-bE:.libs/libsvn_delta-1.exp 
${wl}-berok
    gcc: /opt/afw/lib/libsvn_subr-1.a: No such file or directory
    libtool: install: error: relink `libsvn_delta-1.la' with the above command 
before installing it
    gmake: *** [install-fsmod-lib] Error 1


At least the first non-inter-dependent library seems sane (see the
following dump output), but the ones that'd be created from the above
command would have hardcoded library paths. Is this intended?

    $ dump -Hv 
/tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/lib/libsvn_subr-1.a
    
/tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/lib/libsvn_subr-1.a[libsvn_subr-1.so.0]:
    [...]
                            ***Import File Strings***
    INDEX  PATH                          BASE                MEMBER
    0      /opt/afw/lib:/usr/lib:/lib
    1                                    libapr-1.a          libapr-1.so.0
    2                                    libintl.a           libintl.so.8
    3                                    libaprutil-1.a      libaprutil-1.so.0
    4                                    libc.a              shr.o
    5                                    libz.a              libz.so.1
    6                                    libgcc_s.a          shr.o
    7                                    libexpat.a          libexpat.so.1

If i override the configure'ed values:
    hardcode_into_libs=yes
    hardcode_direct=yes
in the build local libtool to:
    hardcode_into_libs=no
    hardcode_direct=no
the build/stage-install works out fine:

    $ gmake install DESTDIR=/tmp/rd/frank/subversion-1.4.3-instroot
    /opt/afw/bin/ginstall -c -d 
/tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/lib
    cd subversion/libsvn_subr ; /opt/afw/bin/bash 
/tmp/rd/frank/subversion-1.4.3/libtool --mode=install /opt/afw/bin/ginstall -c 
libsvn_subr-1.la 
/tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/lib/libsvn_subr-1.la
    /opt/afw/bin/ginstall -c .libs/libsvn_subr-1.a 
/tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/lib/libsvn_subr-1.a
    /opt/afw/bin/ginstall -c .libs/libsvn_subr-1.lai 
/tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/lib/libsvn_subr-1.la
    libtool: install: warning: remember to run `libtool --finish /opt/afw/lib'
    cd subversion/libsvn_delta ; /opt/afw/bin/bash 
/tmp/rd/frank/subversion-1.4.3/libtool --mode=install /opt/afw/bin/ginstall -c 
libsvn_delta-1.la 
/tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/lib/libsvn_delta-1.la
    libtool: install: warning: relinking `libsvn_delta-1.la'
    (cd /tmp/rd/frank/subversion-1.4.3/subversion/libsvn_delta; 
/opt/afw/bin/bash /tmp/rd/frank/subversion-1.4.3/libtool  --tag=CC 
--mode=relink gcc -O2 -g -fsigned-char -pthread -D_LARGEFILE64_SOURCE -DNE_LFS 
-L/opt/afw/lib -Wl,-blibpath:/opt/afw/lib:/usr/lib:/lib -L/opt/afw/lib -rpath 
/opt/afw/lib -o libsvn_delta-1.la cancel.lo compose_delta.lo debug_editor.lo 
default_editor.lo path_driver.lo svndiff.lo text_delta.lo vdelta.lo version.lo 
xdelta.lo ../../subversion/libsvn_subr/libsvn_subr-1.la
/opt/afw/lib/libaprutil-1.la -lgdbm -ldb-4.5 -lsqlite3 -lexpat -liconv 
/opt/afw/lib/libapr-1.la -lpthread -lintl -lz -inst-prefix-dir 
/tmp/rd/frank/subversion-1.4.3-instroot)
    generating symbol list for `libsvn_delta-1.la'
    /usr/bin/nm -B -BCpg  .libs/cancel.o .libs/compose_delta.o 
.libs/debug_editor.o .libs/default_editor.o .libs/path_driver.o .libs/svndiff.o 
.libs/text_delta.o .libs/vdelta.o .libs/version.o .libs/xdelta.o  | awk '{if 
((($2 == "T") || ($2 == "D") || ($2 == "B")) && (substr($3,1,1) != ".")) { 
print $3 } }' | sort -u > .libs/libsvn_delta-1.exp
    gcc -shared -o .libs/libsvn_delta-1.so.0  .libs/cancel.o 
.libs/compose_delta.o .libs/debug_editor.o .libs/default_editor.o 
.libs/path_driver.o .libs/svndiff.o .libs/text_delta.o .libs/vdelta.o 
.libs/version.o .libs/xdelta.o  -L/opt/afw/lib 
-L/tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/lib -lsvn_subr-1 -laprutil-1 
-lgdbm -ldb-4.5 -lsqlite3 -lexpat -liconv -lapr-1 -lpthread -lintl -lz -lc 
-Wl,-bnoentry  -pthread -Wl,-blibpath:/opt/afw/lib:/usr/lib:/lib 
-Wl,-bE:.libs/libsvn_delta-1.exp
${wl}-berok
    ar cru .libs/libsvn_delta-1.a .libs/libsvn_delta-1.so.0
    /opt/afw/bin/ginstall -c .libs/libsvn_delta-1.aT 
/tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/lib/libsvn_delta-1.a
    /opt/afw/bin/ginstall -c .libs/libsvn_delta-1.lai 
/tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/lib/libsvn_delta-1.la
    libtool: install: warning: remember to run `libtool --finish /opt/afw/lib'
    cd subversion/libsvn_fs_fs ; /opt/afw/bin/bash 
/tmp/rd/frank/subversion-1.4.3/libtool --mode=install /opt/afw/bin/ginstall -c 
libsvn_fs_fs-1.la 
/tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/lib/libsvn_fs_fs-1.la
    libtool: install: warning: relinking `libsvn_fs_fs-1.la'
    (cd /tmp/rd/frank/subversion-1.4.3/subversion/libsvn_fs_fs; 
/opt/afw/bin/bash /tmp/rd/frank/subversion-1.4.3/libtool  --tag=CC 
--mode=relink gcc -O2 -g -fsigned-char -pthread -D_LARGEFILE64_SOURCE -DNE_LFS 
-L/opt/afw/lib -Wl,-blibpath:/opt/afw/lib:/usr/lib:/lib -L/opt/afw/lib -rpath 
/opt/afw/lib -o libsvn_fs_fs-1.la dag.lo err.lo fs.lo fs_fs.lo id.lo key-gen.lo 
lock.lo revs-txns.lo tree.lo ../../subversion/libsvn_delta/libsvn_delta-1.la 
../../subversion/libsvn_subr/libsvn_subr-1.la
/opt/afw/lib/libaprutil-1.la -lgdbm -ldb-4.5 -lsqlite3 -lexpat -liconv 
/opt/afw/lib/libapr-1.la -lpthread -lintl -lz -inst-prefix-dir 
/tmp/rd/frank/subversion-1.4.3-instroot)
    [...]

but the resulting library libsvn_subr-1.a:

    $ dump -Hv 
/tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/lib/libsvn_subr-1.a
    
/tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/lib/libsvn_subr-1.a[libsvn_subr-1.so.0]:
    [...]
                            ***Import File Strings***
    INDEX  PATH                          BASE                MEMBER
    0      /opt/afw/lib:/usr/lib:/lib
    1      /opt/afw/lib                  libapr-1.a          libapr-1.so.0
    2      /opt/afw/lib                  libintl.a           libintl.so.8
    3      /opt/afw/lib                  libaprutil-1.a      libaprutil-1.so.0
    4                                    libc.a              shr.o
    5                                    libz.a              libz.so.1
    6                                    libgcc_s.a          shr.o
    7      /opt/afw/lib                  libexpat.a          libexpat.so.1

and binaries (e.g. svnversion) are badly screwed up:

    $ dump -Hv /tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/bin/svnversion
    /tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/bin/svnversion:
    [...]
                            ***Import File Strings***
    INDEX  PATH                          BASE                MEMBER
    0      /opt/afw/lib:/opt/afw/lib:/usr/lib:/lib
    1                                    libc.a              shr.o
    2                                    libpthread.a        shr_comm.o
    3                                    libpthread.a        shr_xpg5.o
    4      /opt/afw/lib                  libintl.a           libintl.so.8
    5      ../../subversion/libsvn_subr/.libs libsvn_subr-1.a     
libsvn_subr-1.so.0
    6      /opt/afw/lib                  libapr-1.a          libapr-1.so.0
    7      ../../subversion/libsvn_wc/.libs libsvn_wc-1.a       libsvn_wc-1.so.0
    8                                    libssl.a            libssl.so.0.9.8

All other inter-dependent libraries seem fine though:

    $ dump -Hv 
/tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/lib/libsvn_delta-1.a
    
/tmp/rd/frank/subversion-1.4.3-instroot/opt/afw/lib/libsvn_delta-1.a[libsvn_delta-1.so.0]:
    [...]
                            ***Import File Strings***
    INDEX  PATH                          BASE                MEMBER
    0      /opt/afw/lib:/usr/lib:/lib
    1                                    libapr-1.a          libapr-1.so.0
    2                                    libc.a              shr.o
    3                                    libsvn_subr-1.a     libsvn_subr-1.so.0
    4                                    libaprutil-1.a      libaprutil-1.so.0
    5                                    libintl.a           libintl.so.8
    6                                    libz.a              libz.so.1


I can fix this after the stage-install by manually relinking all
the binaries, but it'd be nice to get it right without manual
intervention ;-) Actually i would've expected the completely
opposite effect of the hardcode_* settings, i.e. _NO_ PATH in the
dump output with hardcode{_direct|_into_libs}=no. Am i missing
something here? Can some kind soul help me get this thing to work?

Thanks & Regards,

        Frank





reply via email to

[Prev in Thread] Current Thread [Next in Thread]