From 592c5783b74ae5d86d8c37aed7be451ed2ad1c83 Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Sun, 7 Mar 1999 23:28:05 +0000 Subject: [PATCH] * tests/build-relink.test: new; check shlibpath_overrides_runpath * tests/Makefile.am (TESTS): add build-relink.test; remove hardcode.test duplicates * doc/libtool.texi: document it --- ChangeLog | 5 +++ doc/libtool.texi | 6 +++ tests/Makefile.am | 8 ++-- tests/build-relink.test | 94 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 110 insertions(+), 3 deletions(-) create mode 100755 tests/build-relink.test diff --git a/ChangeLog b/ChangeLog index cf2c03ffe..99bea4069 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 1999-03-07 Alexandre Oliva + * tests/build-relink.test: new; check shlibpath_overrides_runpath + * tests/Makefile.am (TESTS): add build-relink.test; remove + hardcode.test duplicates + * doc/libtool.texi: document it + * ltmain.in (relink_command): do not prepend cd `pwd` to it, the scripts already enters the correct directory, and expanding the pathname would prevent the build tree from moving diff --git a/doc/libtool.texi b/doc/libtool.texi index 6c4f69bc5..fc55b44e6 100644 --- a/doc/libtool.texi +++ b/doc/libtool.texi @@ -2948,6 +2948,12 @@ static and shared libraries, @file{cdemo-static.test} builds only static libraries (@samp{--disable-shared}), and @file{cdemo-shared.test} builds only shared libraries (@samp{--disable-static}). +@item build-relink.test +@pindex build-relink.test +Checks whether variable @var{shlibpath_overrides_runpath} is properly +set. If the test fails and @var{VERBOSE} is set, it will indicate what +the variable should have been set to. + @item hardcode.test @pindex hardcode.test On all systems with shared libraries, the location of the library can be diff --git a/tests/Makefile.am b/tests/Makefile.am index 776755cf9..d173a2ee3 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -3,17 +3,19 @@ AUTOMAKE_OPTIONS = gnits TESTS = demo-static.test demo-make.test demo-exec.test \ - demo-inst.test demo-unst.test hardcode.test \ + demo-inst.test demo-unst.test \ mdemo-static.test mdemo-make.test mdemo-exec.test \ mdemo-inst.test mdemo-unst.test \ cdemo-static.test cdemo-make.test cdemo-exec.test \ demo-conf.test demo-make.test demo-exec.test \ - demo-inst.test demo-unst.test hardcode.test \ + demo-inst.test demo-unst.test \ mdemo-conf.test mdemo-make.test mdemo-exec.test \ mdemo-inst.test mdemo-unst.test \ cdemo-conf.test cdemo-make.test cdemo-exec.test \ demo-shared.test demo-make.test demo-exec.test \ - demo-inst.test demo-unst.test hardcode.test \ + demo-inst.test \ + build-relink.test hardcode.test \ + demo-unst.test \ mdemo-shared.test mdemo-make.test mdemo-exec.test \ mdemo-inst.test mdemo-unst.test \ cdemo-shared.test cdemo-make.test cdemo-exec.test \ diff --git a/tests/build-relink.test b/tests/build-relink.test new file mode 100755 index 000000000..1d3a2ee17 --- /dev/null +++ b/tests/build-relink.test @@ -0,0 +1,94 @@ +#! /bin/sh +# build-relink.test - check to see whether shlibpath overrides runpath + +# Test script header. +need_prefix=yes +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 + +# Check that things are built. +if test -f ../demo/hell; then : +else + echo "You must run demo-inst.test before $0" 1>&2 + exit 1 +fi + +# Change to our build directory. +cd ../demo || exit 1 + +# Unfortunately, we need access to libtool internals for this test. +objdir=NONE +eval `egrep -e '^objdir=' ./libtool 2>/dev/null` +if test "$objdir" = NONE; then + echo "objdir not set in ../demo/libtool" 1>&2 + exit 1 +fi + +shlibpath_overrides_runpath=NONE +eval `egrep -e '^shlibpath_overrides_runpath=' ./libtool 2>/dev/null` +if test "$shlibpath_overrides_runpath" = NONE; then + echo "shlibpath_overrides_runpath not set in ../demo/libtool" 1>&2 + exit 1 +fi + +# Check to make sure we have a dynamic library. +library_names=NONE +eval `egrep -e '^library_names=' ./libhello.la 2>/dev/null` + +if test "$library_names" = NONE; then + echo "library_names not set in ../demo/libhello.la" 1>&2 + exit 1 +elif test -z "$library_names"; then + echo "= Exiting: ../demo/libhello.la is not a shared library" + exit 0 +fi + +./hell # so that it links on-demand if needed + +echo "removing libhello.la from ../demo" +rm -f libhello.la $objdir/libhello.* + +echo "running ../demo/hell" +if ./hell; then + : +else + echo "= Exiting: ../demo/hell does not run, maybe libhello was not installed" + exit 1 +fi + +echo "linking a broken ../demo/libhello.la" +if $make libhello.la libhello_la_OBJECTS=; then + : +else + echo "= Exiting: cannot link broken libhello.la" + exit 1 +fi +rm -f libhello.la + +echo "running ../demo/hell with broken libhello.la" +if ./hell; then + echo "= Exiting: ../demo/hell runs even though libhello.la is incomplete" + echo "shlibpath_overrides_runpath should be set to no" + exit 1 +else + echo "Failed, as expected" +fi + +if test "$shlibpath_overrides_runpath" != yes; then + rm $objdir/hellT || exit 1 + cp $objdir/hell $objdir/hellT || exit 1 + echo "running ../demo/hell with installed libhello.la" + if ./hell; then + echo "Worked, as expected" + else + echo "shlibpath_overrides_runpath should be set to yes" + status=1 + fi + rm -f $objdir/hellT +fi + +exit $status -- 2.47.3