Fix versioning test for LDFLAGS=-Wl,--as-needed.

* tests/versioning.at (versioning): For the library update
hypotheses, ensure the unchanged library libb isn't accidentally
relinked against the new liba, by not reinstalling libb.
Fixes testsuite failure for the incompatible update case with
LDFLAGS=-Wl,--as-needed.
* THANKS: Update.
Report by Ryan Hill.

Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
This commit is contained in:
Ralf Wildenhues 2010-06-07 22:30:44 +02:00
parent b188543381
commit 9a801684f6
3 changed files with 21 additions and 10 deletions

View File

@ -1,3 +1,14 @@
2010-06-07 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
Fix versioning test for LDFLAGS=-Wl,--as-needed.
* tests/versioning.at (versioning): For the library update
hypotheses, ensure the unchanged library libb isn't accidentally
relinked against the new liba, by not reinstalling libb.
Fixes testsuite failure for the incompatible update case with
LDFLAGS=-Wl,--as-needed.
* THANKS: Update.
Report by Ryan Hill.
2010-06-06 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
Rewrite manual intro to be gender-neutral.

1
THANKS
View File

@ -158,6 +158,7 @@
Roland Mainz roland.mainz@nrubsig.org
Roumen Petrov bugtrack@roumenpetrov.info
Rudolf Leitgeb r.leitgeb@x-pin.com
Ryan Hill dirtyepic@gentoo.org
Sam Thursfield ssssam@gmail.com
Scott McCreary scottmc2@gmail.com
Sebastian Wilhelmi wilhelmi@ira.uka.de

View File

@ -1,6 +1,6 @@
# versioning.at -- test libtool versioning -*- Autotest -*-
#
# Copyright (C) 2009 Free Software Foundation, Inc.
# Copyright (C) 2009, 2010 Free Software Foundation, Inc.
#
# This file is part of GNU Libtool.
#
@ -190,18 +190,17 @@ AT_CHECK([$LIBTOOL --mode=uninstall rm -f $libdir/liba.la], [], [ignore], [ignor
# Hypothesis: library revision updates do not require (uninstalled
# nor installed) programs to be relinked.
# nor installed) programs or libraries to be relinked.
AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o liba.la liba2.lo ]dnl
[-version-info 0:1:0 -rpath $libdir], [], [ignore], [ignore])
test_uninstalled
AT_CHECK([$LIBTOOL --mode=install cp liba.la libb.la $libdir],
[], [ignore], [ignore])
AT_CHECK([$LIBTOOL --mode=install cp liba.la $libdir], [], [ignore], [ignore])
AT_CHECK([$LIBTOOL --mode=clean rm -f liba.la], [], [ignore], [ignore])
test_installed
# do not uninstall here: the library may be reused in the next test.
# Hypothesis: backward compatible library updates do not require
# (uninstalled nor installed) programs to be relinked.
# (uninstalled nor installed) programs or libraries to be relinked.
# This can have one of several reasons:
# - the soname is the difference between $current and $age, thus
# unchanged; in this case, the newly installed library will be used,
@ -212,26 +211,26 @@ test_installed
AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o liba.la liba3.lo ]dnl
[-version-info 1:0:1 -rpath $libdir], [], [ignore], [ignore])
# Do not test the uninstalled program, it may be broken (in the second case).
AT_CHECK([$LIBTOOL --mode=install cp liba.la libb.la $libdir],
[], [ignore], [ignore])
AT_CHECK([$LIBTOOL --mode=install cp liba.la $libdir], [], [ignore], [ignore])
AT_CHECK([$LIBTOOL --mode=clean rm -f liba.la], [], [ignore], [ignore])
test_installed
# do not uninstall here: the library may be reused in the next test.
# Hypothesis: with shared libraries, incompatible library updates
# will not cause old installed programs (linked against the old
# will not cause old installed programs or libraries (linked against the old
# library version) to break.
# This can have one of several reasons:
# - the soname has changed, so the old installed library will still be
# available,
# - we are linking statically, so the old library code will still be used.
# In order to be sure we are still linking against the old library version,
# we must ensure that libb is not relinked, so we must not reinstall libb here.
AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o liba.la liba4.lo ]dnl
[-version-info 2:0:0 -rpath $libdir], [], [ignore], [ignore])
# We do not guarantee that old versions of an uninstalled library are still
# available, so test_uninstalled will not necessarily work here any more.
AT_CHECK([$LIBTOOL --mode=install cp liba.la libb.la $libdir],
[], [ignore], [ignore])
AT_CHECK([$LIBTOOL --mode=install cp liba.la $libdir], [], [ignore], [ignore])
AT_CHECK([$LIBTOOL --mode=clean rm -f liba.la], [], [ignore], [ignore])
test_installed