Re: [PATCH] Do not absolutize paths eagerly.
* Ralf Wildenhues wrote on Fri, Aug 20, 2010 at 06:34:58AM CEST: * libltdl/config/ltmain.m4sh (func_resolve_sysroot): Partly revert v2.2.10-83-gc45a288: Do not absolutize path here, only do sysroot replacement. (func_mode_link): Adjust. Fixes AIX testsuite regression. Maybe it's as simple as this? I'm testing this patch now. Would be nice if somebody could test it on a sysroot-enabled setup (i.e., where the sysroot tests don't skip). Fixed the regression as expected, didn't show up any other failures. OK to apply to the sysroot branch? I still need somebody to test a sysroot-enabled setup with this. Thanks! Ralf
Re: versioning test on AIX
* Ralf Wildenhues wrote on Sat, Aug 07, 2010 at 12:30:01AM CEST: The test tries to ensure that with an incompatible library upgrade, programs previously linked against the old library still work. This usually works on systems where different major versions of a library have different file names. Which isn't the case for AIX without runtimelinking (liba.a is the same name whether it contains liba.so.2 or liba.so.0): [...] Now, the part that really surprised me was that this doesn't even work with runtimelinking (configure LDFLAGS=-Wl,-brtl), even though the file names aren't the issue here: [...] So, while I'm not completely sure yet that there isn't another bug lurking in libtool here, it seems that this is another AIX limitation. One way out may be to use loader domains; see here for a description: http://stromberg.dnsalias.org/~strombrg/AIX-shared-libs.html I don't really see how to apply this concept in general, i.e., without user intervention. So, for now I propose the patch below to skip this part of the part; I will leave time for comments before pushing it. No comments, so I'm pushing this patch. Also pushing the trivial cleanup patch below. Cheers, Ralf Skip part of versioning test on AIX. * tests/versioning.at (versioning): The AIX linker always records the unversioned library name, even with runtimelinking, so skip the execution test for the incompatibly upgraded library. Report by Rainer Tammer. diff --git a/tests/versioning.at b/tests/versioning.at index eef7c4a..1d75f62 100644 --- a/tests/versioning.at +++ b/tests/versioning.at @@ -227,6 +227,11 @@ AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS $LDFLAGS -o liba.la liba4.lo ]dnl # available, so test_uninstalled will not necessarily work here any more. AT_CHECK([$LIBTOOL --mode=install cp liba.la $libdir], [], [ignore], [ignore]) AT_CHECK([$LIBTOOL --mode=clean rm -f liba.la], [], [ignore], [ignore]) + +# This test does not work on AIX, not even with runtimelinking, because +# the linker always records the unversioned name as dependency. +AT_CHECK([:; case $host_os in aix*) exit 77;; esac]) + test_installed Remove dead code from versioning test. * tests/versioning.at (versioning): No need to build unused prog3. diff --git a/tests/versioning.at b/tests/versioning.at index 69bf731..eef7c4a 100644 --- a/tests/versioning.at +++ b/tests/versioning.at @@ -91,14 +91,6 @@ int main (void) } ]]) -AT_DATA([prog3.c], [[ -extern int a (void), internal_detail; -int main (void) -{ - return a () + internal_detail - 42; -} -]]) - inst=`pwd`/inst libdir=$inst/lib @@ -109,7 +101,7 @@ mkdir $inst $libdir $bindir for file in liba1.c liba2.c liba3.c liba4.c libb.c; do $LIBTOOL --mode=compile $CC $CPPFLAGS $CFLAGS -c $file done -for file in prog1.c prog2.c prog3.c; do +for file in prog1.c prog2.c; do $CC $CPPFLAGS $CFLAGS -c $file done
Re: libtool-2.2.11a on AIX 5.3 current git master / followup on the old test suite and failures in the new testsuit
* Rainer Tammer wrote on Sat, Aug 07, 2010 at 09:35:56AM CEST: I have added one additional patch (as I did for the last run): # diff /daten/source/libtool-2.2.11a/tests/defs.in defs.in [...] # On AIX, shared libraries remain loaded in memory after use if they # are world-readable, until root issues slibclean. On NFS, this causes # a testsuite rerun to fail to clean up test group directories. Avoid # this with a suitable umask. Do not do this on other systems, for # example HP-UX suffers unless shared libraries are mode 555. case $host_os in aix*) umask o-rwx ;; esac I have pushed your patch now, as below. Now I get some new errors from the old test suite: # grep FAIL check.log FAIL: tests/f77demo-exec.test FAIL: tests/f77demo-exec.test FAIL: tests/fcdemo-exec.test FAIL: tests/fcdemo-exec.test ... This is because the LIBPATH is not OK: This has been fixed since in git Libtool. Cheers, and thanks again, Ralf 2010-08-21 Rainer Tammer tam...@... (tiny change) Avoid issues with AIX resident shared libraries in old testsuite. * tests/defs.m4sh [aix]: Remove file mode permission for others, so shared libraries are not kept in memory after execution. Fixes failures of repeated mdemo-inst.test with on AIX 5.3. diff --git a/tests/defs.m4sh b/tests/defs.m4sh index 1230555..183783e 100644 --- a/tests/defs.m4sh +++ b/tests/defs.m4sh @@ -130,6 +130,7 @@ func_get_config objext objdir CC host +host_os host_alias build build_alias $LIBTOOL --config : fatal @@ -351,6 +352,15 @@ m4dir=$srcdir/libltdl/m4 auxdir=$srcdir/libltdl/config scripts=$auxdir/ltmain.m4sh $srcdir/libtoolize.m4sh +# On AIX, shared libraries remain loaded in memory after use if they +# are world-readable, until root issues slibclean. On NFS, this causes +# a testsuite rerun to fail to clean up test group directories. Avoid +# this with a suitable umask. Do not do this on other systems, for +# example HP-UX suffers unless shared libraries are mode 555. +case $host_os in +aix*) umask o-rwx ;; +esac + func_msg Running $progname # Local Variables:
Re: using git Libtool with Autoconf 2.59, Automake 1.9.6
Hallo Ralf, On 21 Aug 2010, at 12:06, Ralf Wildenhues wrote: I tried running the Libtool test suites with old Autoconf 2.59 and Automake 1.9.6 (on GNU/Linux only) after 'autoreconf -fvi'-ing all but the toplevel directory with those tools. I was surprised to see that it still works more or less! :-) This patch fixes the fall-out. OK to push if the use of $at_status is sanctioned? http://thread.gmane.org/gmane.comp.sysutils.autoconf.patches/7323 Nice catch! I have no idea about at_status, but pending that please do push. Cheers, -- Gary V. Vaughan (g...@gnu.org) PGP.sig Description: This is a digitally signed message part
Re: [PATCH] Do not absolutize paths eagerly.
On 8/21/2010 2:03 AM, Ralf Wildenhues wrote: * Ralf Wildenhues wrote on Fri, Aug 20, 2010 at 06:34:58AM CEST: Fixed the regression as expected, didn't show up any other failures. OK to apply to the sysroot branch? I still need somebody to test a sysroot-enabled setup with this. Tested sysroot.at tests using cygwin-mingw sysroot-enabled cross compiler. 118: -L=.../lib -l ok 119: -L SYSROOT/.../lib -l ok 120: SYSROOT/.../*.laok -- Chuck
Tidy and fix clean and distclean rules for old testsuite.
In the Libtool tree, invoking 'make distclean' after 'make clean' or before 'make check' has ever run, fails because there are no Makefiles in the old test subdirectories (and automake's distclean rule looks at DIST_SUBDIRS not SUBDIRS). This patch fixes this long-standing error by creating stub Makefiles, and IMHO using minimal insider information about Automake-generated rules: basically only the name of the 'distclean-recursive' rule, to which we must add a prerequisite. Just adding to distclean-local doesn't work, that gets invoked too late. OK to apply? Even with this patch, 'make clean' may be very slow in the case where the test subdirectories need reconfiguring. That is an orthogonal and IMVHO minor issue, which I don't know how fix easily though. Thanks, Ralf Tidy and fix clean and distclean rules for old testsuite. * Makefile.am (clean-local-legacy): Use $(CONF_SUBDIRS) instead of hard-coding the list of test directories. Use $(AM_MAKEFLAGS). (fake-distclean-legacy): New phony rule, to create fake Makefile files if needed so that the automake-generated distclean-recursive rule can work properly. (distclean_recursive): New helper variable. (distclean-recursive): Depend on fake-distclean-legacy. diff --git a/Makefile.am b/Makefile.am index d689e09..2c4a3db 100644 --- a/Makefile.am +++ b/Makefile.am @@ -712,12 +712,26 @@ $(srcdir)/tests/defs.in: $(auxdir)/general.m4sh tests/defs.m4sh Makefile.am # We need to remove any files that the above tests created. clean-local-legacy: - -cd tests; \ - for dir in cdemo demo depdemo f77demo fcdemo mdemo mdemo2 pdemo tagdemo; \ - do \ - test -f $$dir/Makefile ( cd $$dir $(MAKE) distclean; ); \ + -for dir in $(CONF_SUBDIRS); do \ + if test -f $$dir/Makefile; then \ + (cd $$dir $(MAKE) $(AM_MAKEFLAGS) distclean); \ + else :; fi; \ done rm -rf _inst +# For distclean, we may have to fake Makefiles in the test directories +# so that descending in DIST_SUBDIRS works. +# Hide the additional dependency from automake so it still outputs the rule. +distclean_recursive = distclean-recursive +$(distclean_recursive): fake-distclean-legacy +.PHONY: fake-distclean-legacy +fake-distclean-legacy: + -for dir in $(CONF_SUBDIRS); do \ + if test ! -f $$dir/Makefile; then \ + $(mkinstalldirs) $$dir; \ + echo 'distclean: ; rm -f Makefile' $$dir/Makefile; \ + else :; fi; \ + done + $(TESTS): tests/defs DISTCLEANFILES += tests/defs
Re: Tidy and fix clean and distclean rules for old testsuite.
Hallo Ralf, On 22 Aug 2010, at 11:23, Ralf Wildenhues wrote: In the Libtool tree, invoking 'make distclean' after 'make clean' or before 'make check' has ever run, fails because there are no Makefiles in the old test subdirectories (and automake's distclean rule looks at DIST_SUBDIRS not SUBDIRS). This patch fixes this long-standing error by creating stub Makefiles, and IMHO using minimal insider information about Automake-generated rules: basically only the name of the 'distclean-recursive' rule, to which we must add a prerequisite. Just adding to distclean-local doesn't work, that gets invoked too late. OK to apply? Well, it is an improvement over what we have, so... sure, go ahead. However, I continue to strongly dislike the old testsuite, and would much prefer to migrate it's tests into Autotest. I understand the argument that our kludgy old tests are good for coverage of libtool with the bootstrapped autotools... but, honestly, I'd rather find out that the libtool I'm planning to install is going to fail with *my* autotools, than I would be told that the old testsuite still passes with whatever versions it happened to be bootstrapped with! Getting rid of the old testsuite was actually my motivation for starting an Autotest based testsuite in the first place; and because bootstrap and reconf issues with the old testsuite have always been (and continue to be) a real pain. Even with this patch, 'make clean' may be very slow in the case where the test subdirectories need reconfiguring. That is an orthogonal and IMVHO minor issue, which I don't know how fix easily though. I do: see the first six words of my last para ;) Cheers, -- Gary V. Vaughan (g...@gnu.org) PGP.sig Description: This is a digitally signed message part