This is an upstream bug. Already fixed in cvs (post 1.9b). Logging it here before someone else finds it. configure: creating ./config.status /bin/sh ./config.status config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands make[1]: Leaving directory `/var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2/libltdl' make[1]: Entering directory `/var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2/libltdl' cd . && /bin/sh /var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2/libltdl/missing --run autoheader rm -f stamp-h1 touch config-h.in cd . && /bin/sh ./config.status config.h config.status: creating config.h config.status: config.h is unchanged make all-am make[2]: Entering directory `/var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2/libltdl' /bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I. -march=pentium3 -O2 -pipe -c -o ltdl.lo ltdl.c mkdir .libs gcc -DHAVE_CONFIG_H -I. -I. -I. -march=pentium3 -O2 -pipe -c ltdl.c -fPIC -DPIC -o .libs/ltdl.o gcc -DHAVE_CONFIG_H -I. -I. -I. -march=pentium3 -O2 -pipe -c ltdl.c -o ltdl.o >/dev/null 2>&1 /bin/sh ./libtool --mode=link gcc -march=pentium3 -O2 -pipe -o libltdl.la -rpath /usr/lib -no-undefined -version-info 4:0:1 ltdl.lo -ldl gcc -shared .libs/ltdl.o -ldl -march=pentium3 -Wl,-soname -Wl,libltdl.so.3 -o .libs/libltdl.so.3.1.0 (cd .libs && rm -f libltdl.so.3 && ln -s libltdl.so.3.1.0 libltdl.so.3) (cd .libs && rm -f libltdl.so && ln -s libltdl.so.3.1.0 libltdl.so) ar cru .libs/libltdl.a ltdl.o ranlib .libs/libltdl.a creating libltdl.la (cd .libs && rm -f libltdl.la && ln -s ../libltdl.la libltdl.la) make[2]: Leaving directory `/var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2/libltdl' make[1]: Leaving directory `/var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2/libltdl' Making all in doc make[1]: Entering directory `/var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2/doc' make[1]: Leaving directory `/var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2/doc' Making all in tests make[1]: Entering directory `/var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2/tests' make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2/tests' >>> Test phase [check]: sys-devel/libtool-1.5.2-r5 Making check in . make[1]: Entering directory `/var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2' make[1]: Nothing to be done for `check-am'. make[1]: Leaving directory `/var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2' Making check in libltdl make[1]: Entering directory `/var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2/libltdl' make[1]: Leaving directory `/var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2/libltdl' Making check in doc make[1]: Entering directory `/var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2/doc' make[1]: Nothing to be done for `check'. make[1]: Leaving directory `/var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2/doc' Making check in tests make[1]: Entering directory `/var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2/tests' make check-TESTS make[2]: Entering directory `/var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2/tests' PASS: cdemo-static.test PASS: cdemo-make.test PASS: cdemo-exec.test PASS: demo-static.test PASS: demo-make.test PASS: demo-exec.test PASS: demo-inst.test PASS: demo-unst.test PASS: depdemo-static.test PASS: depdemo-make.test PASS: depdemo-exec.test PASS: depdemo-inst.test PASS: depdemo-unst.test PASS: mdemo-static.test PASS: mdemo-make.test PASS: mdemo-exec.test PASS: mdemo-inst.test PASS: mdemo-unst.test PASS: cdemo-conf.test PASS: cdemo-make.test PASS: cdemo-exec.test PASS: demo-conf.test PASS: demo-make.test PASS: demo-exec.test PASS: demo-inst.test PASS: demo-unst.test PASS: deplibs.test PASS: depdemo-conf.test PASS: depdemo-make.test PASS: depdemo-exec.test PASS: depdemo-inst.test PASS: depdemo-unst.test PASS: mdemo-conf.test PASS: mdemo-make.test PASS: mdemo-exec.test PASS: mdemo-inst.test PASS: mdemo-unst.test PASS: dryrun.test PASS: demo-nofast.test PASS: demo-make.test PASS: demo-exec.test PASS: demo-inst.test PASS: demo-unst.test PASS: demo-pic.test PASS: demo-make.test PASS: demo-exec.test PASS: demo-make.test PASS: demo-exec.test PASS: depdemo-nofast.test PASS: depdemo-make.test PASS: depdemo-exec.test PASS: depdemo-inst.test PASS: depdemo-unst.test PASS: cdemo-shared.test PASS: cdemo-make.test PASS: cdemo-exec.test PASS: demo-shared.test PASS: demo-make.test PASS: demo-exec.test PASS: demo-inst.test PASS: hardcode.test PASS: build-relink.test PASS: noinst-link.test PASS: demo-unst.test PASS: depdemo-shared.test PASS: depdemo-make.test PASS: depdemo-exec.test PASS: depdemo-inst.test PASS: build-relink2.test PASS: depdemo-unst.test PASS: mdemo-shared.test PASS: mdemo-make.test PASS: mdemo-exec.test PASS: mdemo-inst.test PASS: mdemo-unst.test PASS: assign.test PASS: link.test PASS: link-2.test PASS: nomode.test PASS: quote.test FAIL: sh.test PASS: suffix.test PASS: pdemo-conf.test PASS: pdemo-make.test PASS: pdemo-exec.test PASS: pdemo-inst.test PASS: mdemo-conf.test PASS: mdemo-make.test PASS: mdemo2-conf.test PASS: mdemo2-make.test PASS: mdemo2-exec.test PASS: tagdemo-static.test PASS: tagdemo-make.test PASS: tagdemo-exec.test PASS: tagdemo-conf.test PASS: tagdemo-make.test PASS: tagdemo-exec.test PASS: tagdemo-shared.test PASS: tagdemo-make.test PASS: tagdemo-exec.test ==================================== 1 of 100 tests failed Please report to bug-libtool@gnu.org ==================================== make[2]: *** [check-TESTS] Error 1 make[2]: Leaving directory `/var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2/tests' make[1]: *** [check-am] Error 2 make[1]: Leaving directory `/var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2/tests' make: *** [check-recursive] Error 1 !!! ERROR: sys-devel/libtool-1.5.2-r5 failed. !!! Function src_test, Line 528, Exitcode 0 !!! Make check failed. See above for details. !!! If you need support, post the topmost build error, NOT this status message. spider root # spider root # emerge info Portage 2.0.51_pre20 (selinux/2004.1/x86, gcc-3.3.4, glibc-2.3.3.20040420-r1, 2.6.8-gentoo-r1 i686 Pentium III (Coppermine)) ================================================================= System uname: 2.6.8-gentoo-r1 i686 Pentium III (Coppermine) Gentoo Base System version 1.4.16 distcc 2.17 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [enabled] Autoconf: sys-devel/autoconf-2.59-r4 Automake: sys-devel/automake-1.8.5-r1 Binutils: sys-devel/binutils-2.14.90.0.8-r1 Headers: sys-kernel/linux-headers-2.4.21-r1 Libtools: sys-devel/libtool-1.4.3-r4 ACCEPT_KEYWORDS="x86" AUTOCLEAN="yes" CFLAGS="-march=pentium3 -O2 -pipe" CHOST="i686-pc-linux-gnu" COMPILER="" CONFIG_PROTECT="/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config /usr/kde/3.2/share/config /usr/kde/3/share/config /usr/share/config /usr/share/texmf/dvipdfm/config/ /usr/share/texmf/dvips/config/ /usr/share/texmf/tex/generic/config/ /usr/share/texmf/tex/platex/config/ /usr/share/texmf/xdvi/ /var/qmail/alias /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d" CXXFLAGS="-march=pentium3 -O2 -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="autoaddcvs ccache cvs distcc loadpolicy maketest sandbox sfperms strict userpriv usersandbox" GENTOO_MIRRORS="ftp://mirror.internode.on.net/pub/gentoo http://premium.planetmirror.com/pub/gentoo http://gentoo.oregonstate.edu http://distro.ibiblio.org/pub/linux/distributions/gentoo" MAKEOPTS="-j2" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.au.gentoo.org/gentoo-portage" USE="acl acpi apache2 arts berkdb crypt cups esd ethereal fam fastcgi flash gd gdbm gpm gtk guile imagemagick java libgda libwww mbox mmx motif mysql ncurses nptl oav openal opengl pam perl php pic plotutils png postgres python qt readline samba sasl selinux skey slang slp socks5 sox sse ssl tcpd tetex tiff usb vhosts x86 xinerama xml zeo zlib" /sh.test || echo "bad" === Running sh.test 133: test $i != 17 # 1/2 MB should be enough use `test "$..."' instead of `test $' 5199: eval mynewdependency_lib="`echo "$libdir/$name" |sed -e "s:$D::g" -e 's://:/:g'`" 5205: if test -z "`echo $newdependency_libs |grep -e "$mynewdependency_lib"`"; then 5218: if test -n "`echo $deplib |grep -e "$S"`" && test "$S"; then 5221: elif test -n "`echo $deplib |grep -e "$D"`" && test "$D"; then 5222: eval mynewdependency_lib="`echo "$deplib" |sed -e "s:$D::g" -e 's://:/:g'`" 5231: if test -z "`echo $newdependency_libs |grep -e "$mynewdependency_lib"`"; then 5289: install_libdir="`echo "$install_libdir" |sed -e "s:$D::g" -e 's://:/:g'`" nested quotes are dangerous bad spider tests # pwd /var/tmp/portage/libtool-1.5.2-r5/work/libtool-1.5.2/tests egrep -n -e '"[^`"]*`[^"`]*"[^"`]*".*`[^`"]*"' ../ltmain.sh 1009: qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test 4060: reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 5199: eval mynewdependency_lib="`echo "$libdir/$name" |sed -e "s:$D::g" -e 's://:/:g'`" 5205: if test -z "`echo $newdependency_libs |grep -e "$mynewdependency_lib"`"; then 5218: if test -n "`echo $deplib |grep -e "$S"`" && test "$S"; then 5221: elif test -n "`echo $deplib |grep -e "$D"`" && test "$D"; then 5222: eval mynewdependency_lib="`echo "$deplib" |sed -e "s:$D::g" -e 's://:/:g'`" 5231: if test -z "`echo $newdependency_libs |grep -e "$mynewdependency_lib"`"; then 5289: install_libdir="`echo "$install_libdir" |sed -e "s:$D::g" -e 's://:/:g'`"
fixed upstream in after 1.9b
Any chance of getting the fix backported to 1.5.2?
Given this bug, 1.5.2 is listed as stable for what reason? I admit, stone-cold down is very stable, but it lacks the utility that most of us associate with the word 'stable'.
The bug resolution on this is incorrect/misleading/disingenuous. It's not an upstream issue - the errors (nested quotes) are introduced by the Gentoo patch sys-devel/libtool/files/1.4.3/libtool-1.4.2-portage.patch. This patch is where the nested quoting comes in. I can't convince myself that the double quotes are necessary, or even that they have any effect, but perhaps there's some unusual circumstance in which they do. They may even be actually incorrect. For example, here's the first occurrence: eval mynewdependency_lib="`echo "$libdir/$name" |sed -e "s:$D::g" -e 's://:/:g'`" And here's a test script and results, with a simplified version of that line in ltmain.in (=> ltmain.sh.in): bash-2.05b$ cat shtst #!/bin/bash echo "$1/$2 - $3" echo "\ ----start eval mynewdependency_lib="`echo "$1/$2" |sed -e "s:$3::g" -e 's://:/:g'`" eval mynewdependency_lib=`echo "$1/$2" |sed -e "s:$3::g" -e 's://:/:g'` ----end " bash-2.05b$ ./shtst "/a b/c d" "e f" "/a b" /a b/c d/e f - /a b ----start eval mynewdependency_lib=/c d/e f eval mynewdependency_lib=/c d/e f ----end bash-2.05b$ and as we can see, the first occurrence (with the nested quotes) ends up with spaces collapsing (since there's already quotes around the whole thing, which makes the first quote in the line an end-quote). The second retains the spacing. Without spaces, of course, there's no difference. As an aside, perhaps the "$D" in the original line could do with a preceding ^, to anchor it to the start of the path.