bug-libtool
[Top][All Lists]
Advanced

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

Re: bug in libtool rpath setting for _LT_AC_TAGVAR(hardcode_libdir_flag_


From: James Andrewartha
Subject: Re: bug in libtool rpath setting for _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) (libtool 1.5.22)
Date: Thu, 14 Dec 2006 01:23:01 +0900 (WST)

On Wed, 13 Dec 2006, Ralf Wildenhues wrote:

> * James Andrewartha wrote on Wed, Dec 13, 2006 at 12:53:32AM CET:
>>
>> The stable libtool release has a bug in libtool.m4 that sets
>> _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) to '${wl}--rpath ${wl}$libdir'
>> by default instead of '${wl}-rpath ${wl}$libdir' (one less -). This causes
>> the build failure seen at
>> http://jhbuild.bxlug.be/builds/2006-12-12-0005/logs/evolution-data-server/#build
>>
>> This was fixed in the development release two years ago:
>
> Yes, but we never knew or thought it was a necessity, we fixed it for
> consistency only, thinking that ld accepts both -rpath and --rpath:
> <http://lists.gnu.org/archive/html/libtool-patches/2004-11/msg00039.html>
>
> And if you look closer at the build log, you'll find earlier link
> command lines that succeed with --rpath.  So the failure is of a
> different nature, but it does look like it could be a libtool bug.
> Where are libnss3.so, libsmime3.so, libssl3.so, and libsoftokn3.so
> located?  Could you rerun 'make' non-parallel so we see which link
> is actually failing?

They're located in 
/scratch/gnometinderbox/jhautobuild/build-output/lib/xulrunner-1.8.1.1
which is included via -L. pkg-config --libs xulrunner-nspr returns:
-L/scratch/gnometinderbox/jhautobuild/build-output/lib/xulrunner-1.8.1.1 
-lplds4 -lplc4 -lnspr4 -lpthread -ldl

failing build:
make[4]: Entering directory 
`/scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/addressbook/backends/groupwise'
/bin/sh ../../../libtool --tag=CC --mode=link gcc  -O2 -Wall 
-Wno-unknown-pragmas -Wno-strict-aliasing -Wno-format -Wno-cast-align -
Wall -Wmissing-prototypes  -Wno-sign-compare   -o create-account 
create-account.o ../../../addressbook/libedata-book/libedata-book-1.2.la 
../../../libedataserver/libedataserver-1.2.la 
../../../servers/groupwise/libegroupwise-1.2.la -pthread 
-L/scratch/gnometinderbox/jhautobuild/build-output/lib 
-L/scratch/gnometinderbox/jhautobuild/build-output/lib/xulrunner-1.8.1.1 
-lxml2 -lbonobo-2 -lbonobo-activation -lgmodule-2.0 -lgconf-2 -lORBit-2 
-lgthread-2.0 -lgobject-2.0 -lglib-2.0 -lplds4 -lplc4 -lnspr4 -lpthread 
-ldl   -lpthread
gcc -O2 -Wall -Wno-unknown-pragmas -Wno-strict-aliasing -Wno-format 
-Wno-cast-align -Wall -Wmissing-prototypes -Wno-sign-compare -o 
.libs/create-account create-account.o -pthread 
../../../addressbook/libedata-book/.libs/libedata-book-1.2.so 
../../../libedataserver/.libs/libedataserver-1.2.so 
../../../servers/groupwise/.libs/libegroupwise-1.2.so 
-L/scratch/gnometinderbox/jhautobuild/build-output/lib 
-L/scratch/gnometinderbox/jhautobuild/build-output/lib/xulrunner-1.8.1.1 
/scratch/gnometinderbox/jhautobuild/build-output/lib/libxml2.so 
/scratch/gnometinderbox/jhautobuild/build-output/lib/libbonobo-2.so 
/scratch/gnometinderbox/jhautobuild/build-output/lib/libbonobo-activation.so 
/scratch/gnometinderbox/jhautobuild/build-output/lib/libgmodule-2.0.so 
/scratch/gnometinderbox/jhautobuild/build-output/lib/libgconf-2.so 
/scratch/gnometinderbox/jhautobuild/build-output/lib/libORBit-2.so 
/scratch/gnometinderbox/jhautobuild/build-output/lib/libgthread-2.0.so 
/scratch/gnometinderbox/jhautobuild/build-output/lib/libgobject-2.0.so 
/scratch/gnometinderbox/jhautobuild/build-output/lib/libglib-2.0.so 
-lplds4 -lplc4 -lnspr4 -ldl -lpthread -Wl,--rpath 
-Wl,/scratch/gnometinderbox/jhautobuild/build-output/lib
/usr/bin/ld: warning: libnss3.so, needed by 
/scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/camel/.libs/libcamel-1.2.so.0,
 
not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libsmime3.so, needed by 
/scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/camel/.libs/libcamel-1.2.so.0,
 
not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libssl3.so, needed by 
/scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/camel/.libs/libcamel-1.2.so.0,
 
not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: libsoftokn3.so, needed by 
/scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/camel/.libs/libcamel-1.2.so.0,
 
not found (try using -rpath or -rpath-link)
/scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/camel/.libs/libcamel-1.2.so.0:
 
undefined reference to address@hidden'
/scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/camel/.libs/libcamel-1.2.so.0:
 
undefined reference to address@hidden'
/scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/camel/.libs/libcamel-1.2.so.0:
 
undefined reference to address@hidden'
/scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/camel/.libs/libcamel-1.2.so.0:
 
undefined reference to address@hidden'
/scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/camel/.libs/libcamel-1.2.so.0:
 
undefined reference to address@hidden'
collect2: ld returned 1 exit status

> Could you post
>  ./libtool --config
>
> for the libtool script generated by the build, from the
> /scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server directory?

# Libtool was configured on host mudhead:

# Shell to use when invoking shell scripts.
SHELL="/bin/sh"

# Whether or not to build shared libraries.
build_libtool_libs=yes

# Whether or not to build static libraries.
build_old_libs=no

# Whether or not to add -lc for building shared libraries.
build_libtool_need_lc=no

# Whether or not to disallow shared libs when runtime libs are static
allow_libtool_libs_with_static_runtimes=no

# Whether or not to optimize for fast installation.
fast_install=yes

# The host system.
host_alias=
host=alphaev68-unknown-linux-gnu
host_os=linux-gnu

# The build system.
build_alias=
build=alphaev68-unknown-linux-gnu
build_os=linux-gnu

# An echo program that does not interpret backslashes.
echo="echo"

# The archiver.
AR="ar"
AR_FLAGS="cru"

# A C compiler.
LTCC="gcc"

# LTCC compiler flags.
LTCFLAGS="-O2 -Wall -Wno-unknown-pragmas -Wno-strict-aliasing -Wno-format 
-Wno-cast-align"
# A language-specific compiler.
CC="gcc"

# Is the compiler the GNU C compiler?
with_gcc=yes

# An ERE matcher.
EGREP="/bin/grep -E"

# The linker used to build libraries.
LD="/usr/bin/ld"

# Whether we need hard or soft links.
LN_S="ln -s"

# A BSD-compatible nm program.
NM="/usr/bin/nm -B"

# A symbol stripping program
STRIP="strip"

# Used to examine libraries when file_magic_cmd begins "file"
MAGIC_CMD=file

# Used on cygwin: DLL creation program.
DLLTOOL="dlltool"

# Used on cygwin: object dumper.
OBJDUMP="objdump"

# Used on cygwin: assembler.
AS="as"

# The name of the directory that contains temporary libtool files.
objdir=.libs

# How to create reloadable object files.
reload_flag=" -r"
reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs"

# How to pass a linker flag through the compiler.
wl="-Wl,"

# Object file suffix (normally "o").
objext="o"

# Old archive suffix (normally "a").
libext="a"

# Shared library suffix (normally ".so").
shrext_cmds='.so'

# Executable file suffix (normally "").
exeext=""

# Additional compiler flags for building library objects.
pic_flag=" -fPIC -DPIC"
pic_mode=default

# What is the maximum length of a command?
max_cmd_len=65536

# Does compiler simultaneously support -c and -o options?
compiler_c_o="yes"

# Must we lock files when doing compilation?
need_locks="no"

# Do we need the lib prefix for modules?
need_lib_prefix=no

# Do we need a version for libraries?
need_version=no

# Whether dlopen is supported.
dlopen_support=unknown

# Whether dlopen of programs is supported.
dlopen_self=unknown

# Whether dlopen of statically linked programs is supported.
dlopen_self_static=unknown

# Compiler flag to prevent dynamic linking.
link_static_flag="-static"

# Compiler flag to turn off builtin functions.
no_builtin_flag=" -fno-builtin"
# Compiler flag to allow reflexive dlopens.
export_dynamic_flag_spec="\${wl}--export-dynamic"

# Compiler flag to generate shared objects directly from archives.
whole_archive_flag_spec="\${wl}--whole-archive\$convenience 
\${wl}--no-whole-archive"

# Compiler flag to generate thread-safe objects.
thread_safe_flag_spec=""

# Library versioning type.
version_type=linux

# Format of library name prefix.
libname_spec="lib\$name"

# List of archive names.  First name is the real one, the rest are links.
# The last name is the one that the linker finds with -lNAME.
library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix 
\${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}"

# The coded name of the library, if different from the real name.
soname_spec="\${libname}\${release}\${shared_ext}\$major"

# Commands used to build and install an old-style archive.
RANLIB="ranlib"
old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs\$old_deplibs~\$RANLIB 
\$oldlib"
old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$oldlib"
old_postuninstall_cmds=""

# Create an old-style archive from a shared archive.
old_archive_from_new_cmds=""

# Create a temporary old-style archive to link instead of a shared 
archive.
old_archive_from_expsyms_cmds=""

# Commands used to build and install a shared archive.
archive_cmds="\$CC -shared \$libobjs \$deplibs \$compiler_flags 
\${wl}-soname \$wl\$soname -o \$lib"
archive_expsym_cmds="\$echo \\\"{ global:\\\" > 
\$output_objdir/\$libname.ver~
   cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> 
\$output_objdir/\$libname.ver~
   \$echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~
           \$CC -shared \$libobjs \$deplibs \$compiler_flags \${wl}-soname 
\$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o 
\$lib"
postinstall_cmds=""
postuninstall_cmds=""
# Commands used to build a loadable module (assumed same as above if 
empty)
module_cmds=""
module_expsym_cmds=""

# Commands to strip libraries.
old_striplib="strip --strip-debug"
striplib="strip --strip-unneeded"

# Dependencies to place before the objects being linked to create a
# shared library.
predep_objects=""

# Dependencies to place after the objects being linked to create a
# shared library.
postdep_objects=""

# Dependencies to place before the objects being linked to create a
# shared library.
predeps=""

# Dependencies to place after the objects being linked to create a
# shared library.
postdeps=""

# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path=""

# Method to check whether dependent libraries are shared objects.
deplibs_check_method="pass_all"

# Command to use when deplibs_check_method == file_magic.
file_magic_cmd="\$MAGIC_CMD"

# Flag that allows shared libraries with undefined symbols to be built.
allow_undefined_flag=""

# Flag that forces no undefined symbols.
no_undefined_flag=""

# Commands used to finish a libtool library installation in a directory.
finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir"

# Same as above, but a single script fragment to be evaled but not shown.
finish_eval=""
# Take the output of nm and produce a listing of raw symbols and C names.
global_symbol_pipe="sed -n -e 's/^.*[   ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ 
][      ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p'"

# Transform the output of nm in a proper C declaration
global_symbol_to_cdecl="sed -n -e 's/^. .* \\(.*\\)\$/extern int \\1;/p'"

# Transform the output of nm in a C name address pair
global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\) \$/ 
{\\\"\\1\\\", (lt_ptr) 0},/p' -e 's/^[BCDEGRST] \\([^ ]*\\) \\([^ ]*\\)\$/ 
{\"\\2\", (lt_ptr) \\&\\2},/p'"

# This is the shared library runtime path variable.
runpath_var=LD_RUN_PATH

# This is the shared library path variable.
shlibpath_var=LD_LIBRARY_PATH

# Is shlibpath searched before the hard-coded library search path?
shlibpath_overrides_runpath=no

# How to hardcode a shared library path into an executable.
hardcode_action=immediate

# Whether we should hardcode library paths into libraries.
hardcode_into_libs=yes

# Flag to hardcode $libdir into a binary during linking.
# This must work even if $libdir does not exist.
hardcode_libdir_flag_spec="\${wl}--rpath \${wl}\$libdir"

# If ld is used when linking, flag to hardcode $libdir into
# a binary during linking. This must work even if $libdir does
# not exist.
hardcode_libdir_flag_spec_ld=""

# Whether we need a single -rpath flag with a separated argument.
hardcode_libdir_separator=""

# Set to yes if using DIR/libNAME during linking hardcodes DIR into the
# resulting binary.
hardcode_direct=no

# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
# resulting binary.
hardcode_minus_L=no

# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
# the resulting binary.
hardcode_shlibpath_var=unsupported

# Set to yes if building a shared library automatically hardcodes DIR into 
the library
# and all subsequent libraries and executables linked against it.
hardcode_automatic=no

# Variables whose values should be saved in libtool wrapper scripts and
# restored at relink time.
variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH 
GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"

# Whether libtool must link a program against all its dependency 
libraries.
link_all_deplibs=no

# Compile-time system search path for libraries
sys_lib_search_path_spec=" /usr/lib/gcc/alpha-linux-gnu/4.1.2/ 
/usr/lib/gcc/alpha-linux-gnu/4.1.2/ 
/usr/lib/gcc/alpha-linux-gnu/4.1.2/../../../../alpha-linux-gnu/lib/alpha-linux-gnu/4.1.2/
 
/usr/lib/gcc/alpha-linux-gnu/4.1.2/../../../../alpha-linux-gnu/lib/ 
/usr/lib/gcc/alpha-linux-gnu/4.1.2/../../../alpha-linux-gnu/4.1.2/ 
/usr/lib/gcc/alpha-linux-gnu/4.1.2/../../../ /lib/alpha-linux-gnu/4.1.2/ 
/lib/ /usr/lib/alpha-linux-gnu/4.1.2/ /usr/lib/"

# Run-time system search path for libraries
sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/X11R6/lib /usr/lib/atlas 
/lib/alpha-linux-gnu /usr/lib/alpha-linux-gnu "

# Fix the shell variable $srcfile for the compiler.
fix_srcfile_path=""

# Set to yes if exported symbols are required.
always_export_symbols=no

# The commands to list exported symbols.
export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | 
\$SED 's/.* //' | sort | uniq > \$export_symbols"

# The commands to extract the exported symbol list from a shared archive.
extract_expsyms_cmds=""

# Symbols that should not be listed in the preloaded symbols.
exclude_expsyms="_GLOBAL_OFFSET_TABLE_"

# Symbols that must always be exported.
include_expsyms=""

> Also interesting would be (bzip2'ed) log of
>
>  cd /scratch/gnometinderbox/jhautobuild/cvs/evolution-data-server/camel
>  rm libcamel-1.2.la
>  make libcamel-1.2.la LIBTOOL='../libtool --debug'
>
> and similar for the link that is actually failing.

Attatched.

-- 
# TRS-80              trs80(a)ucc.gu.uwa.edu.au #/ "Otherwise Bub here will do \
# UCC Wheel Member     http://trs80.ucc.asn.au/ #|  what squirrels do best     |
[ "There's nobody getting rich writing          ]|  -- Collect and hide your   |
[  software that I know of" -- Bill Gates, 1980 ]\  nuts." -- Acid Reflux #231 /

Attachment: groupwise.debug.bz2
Description: Binary data

Attachment: libcamel-1.2.la.debug.bz2
Description: Binary data


reply via email to

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