Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 62698 - libtool-1.5.2-r5 failes maketests - sh.test failed - nested quotes in ltmain.sh
Summary: libtool-1.5.2-r5 failes maketests - sh.test failed - nested quotes in ltmain.sh
Status: RESOLVED UPSTREAM
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All All
: High normal (vote)
Assignee: Gentoo Toolchain Maintainers
URL: http://lists.gnu.org/archive/html/bug...
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-09-03 01:16 UTC by Daniel Black (RETIRED)
Modified: 2004-12-04 15:53 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Daniel Black (RETIRED) gentoo-dev 2004-09-03 01:16:15 UTC
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'`"
Comment 1 Daniel Black (RETIRED) gentoo-dev 2004-09-03 01:20:42 UTC
fixed upstream in after 1.9b
Comment 2 Sascha Silbe 2004-11-24 04:04:20 UTC
Any chance of getting the fix backported to 1.5.2?
Comment 3 Ed Grimm 2004-12-01 02:59:56 UTC
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'.
Comment 4 Kevin F. Quinn (RETIRED) gentoo-dev 2004-12-04 15:53:43 UTC
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.