On Friday 30 March 2001 4:07 am, Alexandre Oliva wrote:
> On Mar 29, 2001, "Gary V. Vaughan" <[EMAIL PROTECTED]> wrote:
> > On Friday 30 March 2001 2:23 am, Alexandre Oliva wrote:
> >> Not really. We really must fix the bug that causes us to remove
> >> duplicate libraries before releasing 1.4.
> >
> > Huh? Seems like I'm missing something here. What is this bug exactly?
>
> There is this chunk of code that removes duplicate `-l' flags that
> appear in a link command. The order of `-l' flags is relevant; we
> tell whether it's safe to remove -l flags from the beginning or from
> the end without looking into all other libraries. So we shouldn't do
> it.
I have applied the following to HEAD (and similar to MLB).
Okay to release 1.3d?
Cheers,
Gary.
--
___ _ ___ __ _ mailto: [EMAIL PROTECTED]
/ __|__ _ _ ___ _| | / / | / /_ _ _ _ __ _| |_ __ _ ___ [EMAIL PROTECTED]
| (_ / _` | '_|// / |/ /| |/ / _` | || / _` | ' \/ _` | _ \
\___\__,_|_|\_, /|___(_)___/\__,_|\_,_\__, |_||_\__,_|//_/
home page: /___/ /___/ gpg public key:
http://www.oranda.demon.co.uk http://www.oranda.demon.co.uk/key.asc
Index: ChangeLog
from Gary V. Vaughan <[EMAIL PROTECTED]>
* ltmain.in: Remove the code for stripping duplicate deplibs
from libtool link lines -- duplicates are somtimes necessary
to satisfy inter-library dependencies, and never cause link to
fail even if they are spurious.
* tests/depdemo-dups.test: New file. Make sure this bug doesn't
creep back in again!
* tests/Makefile.am (TESTS): Use the new test above.
Index: ltmain.in
===================================================================
RCS file: /cvsroot/libtool/libtool/ltmain.in,v
retrieving revision 1.247
retrieving revision 1.248
diff -b -u -r1.247 -r1.248
--- ltmain.in 2001/03/31 00:08:03 1.247
+++ ltmain.in 2001/03/31 23:51:09 1.248
@@ -2060,25 +2060,11 @@
vars="compile_deplibs finalize_deplibs"
fi
for var in $vars dependency_libs; do
- # Make sure that $var contains only unique libraries
- # and add them in reverse order
+ # Add libraries to $var in reverse order
eval tmp_libs=\"\$$var\"
new_libs=
for deplib in $tmp_libs; do
- case $deplib in
- -L*) new_libs="$deplib $new_libs" ;;
- *)
- case " $specialdeplibs " in
- *" $deplib "*) new_libs="$deplib $new_libs" ;;
- *)
- case " $new_libs " in
- *" $deplib "*) ;;
- *) new_libs="$deplib $new_libs" ;;
- esac
- ;;
- esac
- ;;
- esac
+ new_libs="$deplib $new_libs"
done
tmp_libs=
for deplib in $new_libs; do
Index: tests/Makefile.am
===================================================================
RCS file: /cvsroot/libtool/libtool/tests/Makefile.am,v
retrieving revision 1.25
retrieving revision 1.26
diff -b -u -r1.25 -r1.26
--- tests/Makefile.am 2000/01/19 20:34:37 1.25
+++ tests/Makefile.am 2001/03/31 23:51:10 1.26
@@ -5,28 +5,29 @@
TESTS = cdemo-static.test cdemo-make.test cdemo-exec.test \
demo-static.test demo-make.test demo-exec.test \
demo-inst.test demo-unst.test \
- depdemo-static.test depdemo-make.test depdemo-exec.test \
- depdemo-inst.test depdemo-unst.test \
+ depdemo-static.test depdemo-make.test depdemo-dups.test \
+ depdemo-exec.test depdemo-inst.test depdemo-unst.test \
mdemo-static.test mdemo-make.test mdemo-exec.test \
mdemo-inst.test mdemo-unst.test \
cdemo-conf.test cdemo-make.test cdemo-exec.test \
demo-conf.test demo-make.test demo-exec.test \
demo-inst.test demo-unst.test deplibs.test \
- depdemo-conf.test depdemo-make.test depdemo-exec.test \
- depdemo-inst.test depdemo-unst.test \
+ depdemo-conf.test depdemo-make.test depdemo-dups.test \
+ depdemo-exec.test depdemo-inst.test depdemo-unst.test \
mdemo-conf.test mdemo-make.test mdemo-exec.test \
mdemo-inst.test mdemo-unst.test dryrun.test \
demo-nofast.test demo-make.test demo-exec.test \
demo-inst.test demo-unst.test \
demo-pic.test demo-make.test demo-exec.test \
demo-nopic.test demo-make.test demo-exec.test \
- depdemo-nofast.test depdemo-make.test depdemo-exec.test \
- depdemo-inst.test depdemo-unst.test \
+ depdemo-nofast.test depdemo-make.test depdemo-dups.test \
+ depdemo-exec.test depdemo-inst.test depdemo-unst.test \
cdemo-shared.test cdemo-make.test cdemo-exec.test \
demo-shared.test demo-make.test demo-exec.test demo-inst.test \
hardcode.test build-relink.test noinst-link.test demo-unst.test \
- depdemo-shared.test depdemo-make.test depdemo-exec.test \
- depdemo-inst.test build-relink2.test depdemo-unst.test \
+ depdemo-shared.test depdemo-make.test depdemo-dups.test \
+ depdemo-exec.test depdemo-inst.test build-relink2.test \
+ depdemo-unst.test \
mdemo-shared.test mdemo-make.test mdemo-exec.test \
mdemo-inst.test mdemo-unst.test \
assign.test link.test link-2.test nomode.test \
Index: tests/depdemo-dups.test
===================================================================
RCS file: depdemo-dups.test
diff -N depdemo-dups.test
--- /dev/null Tue Feb 13 06:06:23 2001
+++ tests/depdemo-dups.test Sat Mar 31 17:01:49 2001
@@ -0,0 +1,39 @@
+#! /bin/sh
+# depdemo-dups.test - check that duplicate deplibs are not removed
+
+# Test script header.
+need_prefix=no
+if test -z "$srcdir"; then
+ srcdir=`echo "$0" | sed 's%/[^/]*$%%'`
+ test "$srcdir" = "$0" && srcdir=.
+ test "${VERBOSE+set}" != "set" && VERBOSE=yes
+fi
+. $srcdir/defs || exit 1
+
+status=:
+
+# Check that things are built
+if test -f ../depdemo/l2/libl2.la; then :
+else
+ echo "You must run depdemo-make.test before $0" 1>&2
+ exit 77
+fi
+
+# Change to our build directory.
+cd ../depdemo || exit 1
+
+# Try to link with a library, and explicitly name its deplibs
+pwd=`pwd`
+result=`$libtool -n --mode=link gcc -o something $pwd/l2/libl2.la $pwd/l1/libl1.la`
+|| status=false
+
+$status || exit 1
+
+echo "$result"
+case "$result" in
+*/libl1.*/libl1.*) ;;
+*)
+ echo "$0: duplicate deplibs should not be removed."
+ exit 1
+ ;;
+esac
+exit 0