Re: [PATCH] Do not absolutize paths eagerly.

2010-08-21 Thread Ralf Wildenhues
* 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

2010-08-21 Thread Ralf Wildenhues
* 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

2010-08-21 Thread Ralf Wildenhues
* 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

2010-08-21 Thread Gary V. Vaughan
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.

2010-08-21 Thread Charles Wilson
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.

2010-08-21 Thread Ralf Wildenhues
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.

2010-08-21 Thread Gary V. Vaughan
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