Re: [cygwin] cwrapper emits wrapper script

2007-04-26 Thread Ralf Wildenhues
* Charles Wilson wrote on Thu, Apr 26, 2007 at 12:41:08AM CEST:

 The only problem I see is if libtool-HEAD-after-2.0 (say, nearing the
 /next/ major release) begins requiring ac-2.61/am-1.10 (or even
 newer).

You'll have my vote against that happening too soon.

 I suspect they will make more of an effort to keep up with current
 autotools, plus I think any future ac/am updates will be much less, err,
 issue-prone than the ac-2.13/ac-2.5x transition was.

Let's also reverse that statement: the more GCC keeps up to date with
autotools, the less there is a chance that they will regress wrt. the
functionality that GCC needs.  Of course if people can 

 On Wed, 25 Apr 2007 23:01:10 +0200, Ralf Wildenhues
  Primary aim is to release Libtool 2.  Effectively you are suggesting
  that Cygwin's transparent_exe feature, its argz bug, and the MinGW
  breakage of cwrapper be considered release blockers.
 
 The latter two, yes: see below.  The first one: no.  Only, if you ARE
 going to accept it before 2.0, then I'd prefer to get that done before
 the upcoming gcc import, rather than miss it by a few days.  If you're
 NOT going to accept it pre-2.0, or if it takes a month to stabilize and
 we miss the gcc deadline by _weeks_, then no problem.

We can try, but running toward a deadline that's not known in advance
can be challenging.  ;-)

 It was you who said in response, last week:
 http://cygwin.com/ml/cygwin/2007-04/msg00549.html
 ... I'd prefer to see such a patch before deciding when it's good to
 put it in.

Yes, and I stand by that now.  Because I understand that these bugs are
important to fix.  Count all my other inconsistencies wrt. what I said
months ago as me being wrong about when we'd have version 2 finished.
Let's try to be as pragmatic as possible.  Hope that works out.

Cheers,
Ralf




Re: mdemo ltdl failure

2007-04-26 Thread Ralf Wildenhues
Hi Charles, Bruno,

* Charles Wilson wrote on Thu, Apr 26, 2007 at 07:34:56AM CEST:

 Attached.  Re-ran *all* of the tests described here:
 http://lists.gnu.org/archive/html/libtool-patches/2007-04/msg00073.html
 with identical results.

Thank you for patching and testing, and thanks to Bruno for the fine
review.

 I did not bump the argz.m4 serial again (I'm not sure what the rules are: 
 bump on EVERY change, or only on big changes?).  So, Ralf, please do that 
 manually if it is necessary.

It can't hurt, so I did that, and applied (libtool and gnulib).

 +  if test $lt_os_major -gt 1 \
 + || { test $lt_os_major -eq 1 \
 +{ test $lt_os_minor -gt 5 \
 + || { test $lt_os_minor -eq 5 \
 +test $lt_os_micro -gt 24; }; }; }; then

Bruno asked for this GCS compliant formatting.  I have some (very minor)
issue with it: it looks uglier in shell, due to the necessary
backslashes.  Also, the GCS specify this for C code only, to be strict.
But I'm not all that strong about it, so I left it in your patch.

Cheers,
Ralf




Re: libtool/ltmain linking wrong (/usr/lib) libstdc++

2007-04-26 Thread Ralf Wildenhues
[ let's continue this discussion on libtool-patches, please ]

Hello Liviu, Vishal,

Could you please try this patch (written for both CVS HEAD and
branch-1-5), and post the --debug link output with the changed
libtool script?  Thank you.

The patch is certainly not ready for prime time yet, as it will need
lots of testing, and quite likely several more iterations.  I have no
idea how to write a good automatic testcase.  Also I have no idea yet
when to apply it if so, or whether also to 1.5.

Cheers,
Ralf

HEAD:
2007-04-27  Ralf Wildenhues  [EMAIL PROTECTED]

* libltdl/config/ltmain.m4sh (func_mode_link): Do not treat
`-l' in conv pass already, just like we skip over `-L' then.
Fixes linking against installed /usr/lib/libstdc++.la when
-lstdc++ happens to be in $postdeps.
* NEWS: Update.
Reports by Liviu Nicoara [EMAIL PROTECTED] and
Vishal Soni-G20083 [EMAIL PROTECTED] and others.

Index: NEWS
===
RCS file: /cvsroot/libtool/libtool/NEWS,v
retrieving revision 1.203
diff -u -r1.203 NEWS
--- NEWS23 Apr 2007 17:10:16 -  1.203
+++ NEWS26 Apr 2007 22:42:27 -
@@ -85,6 +85,10 @@
   - Use of C++ templates together with shared libraries has been
 improved on some systems and with some compilers, but is still
 ongoing work.  Feedback is desirable here.
+  - Linking of libstdc++ (and other GCC compiler-provided libraries) 
+has been fixed in the case when a compiler from a nonstandard location
+was used, but there was also an installation in a location the runtime
+linker would search by default.
 
 * Bug fixes:
 
Index: libltdl/config/ltmain.m4sh
===
RCS file: /cvsroot/libtool/libtool/libltdl/config/ltmain.m4sh,v
retrieving revision 1.74
diff -u -r1.74 ltmain.m4sh
--- libltdl/config/ltmain.m4sh  23 Apr 2007 17:10:17 -  1.74
+++ libltdl/config/ltmain.m4sh  26 Apr 2007 22:42:30 -
@@ -3797,6 +3797,10 @@
  continue
  ;;
-l*)
+ if test $pass = conv; then
+   deplibs=$deplib $deplibs
+   continue
+ fi
  if test $linkmode != lib  test $linkmode != prog; then
func_warning \`-l' is ignored for archives/objects
continue


branch-1-5:
Index: ltmain.in
===
RCS file: /cvsroot/libtool/libtool/Attic/ltmain.in,v
retrieving revision 1.334.2.140
diff -u -r1.334.2.140 ltmain.in
--- ltmain.in   10 Apr 2007 19:10:04 -  1.334.2.140
+++ ltmain.in   26 Apr 2007 22:43:39 -
@@ -2144,6 +2144,10 @@
  continue
  ;;
-l*)
+ if test $pass = conv; then
+   deplibs=$deplib $deplibs
+   continue
+ fi
  if test $linkmode != lib  test $linkmode != prog; then
$echo $modename: warning: \`-l' is ignored for archives/objects 
12
continue




Fix rebuilding rules of ltmain

2007-04-26 Thread Ralf Wildenhues
OK to apply?  With this, if only `ChangeLog' (and `configure.ac' for
ltversion.in) are newer than the respective target, we avoid updating.
This fixes the bug where
  touch $srcdir/libltdl/config/ltmain.m4sh  # or edit otherwise

would fail to update ltmain.sh and thus libtool.

This seems to more or less work with the make implementations of Solaris
10, AIX 4.3.3, FreeBSD 6, and of course GNU.  More or less meaning: the
proprietary make implementations will keep rerunning autotools and
config.status for a while, but eventually they will settle on something.

Cheers,
Ralf

2007-04-27  Ralf Wildenhues  [EMAIL PROTECTED]

* Makefile.am (clean-ltmain-sh): Removed.
(libtool, $(srcdir)/$(m4dir)/ltversion.m4)
($(srcdir)/$(auxdir)/ltmain.sh): Updated to not depend on any
phony rules.  Test `$?' for prerequisites that should always
cause us to update the target.  Fixes rebuilding rules, at the
cost of sometimes updating too much with non-GNU make.

Index: Makefile.am
===
RCS file: /cvsroot/libtool/libtool/Makefile.am,v
retrieving revision 1.218
diff -u -r1.218 Makefile.am
--- Makefile.am 26 Apr 2007 22:34:05 -  1.218
+++ Makefile.am 26 Apr 2007 23:01:31 -
@@ -89,12 +89,15 @@
 # We used to do this with a 'stamp-vcl' file, but non-gmake builds
 # would rerun configure on every invocation, so now we manually
 # check the version numbers from the build rule when necessary.
-libtool: clean-ltmain-sh $(top_builddir)/config.status 
$(srcdir)/$(auxdir)/ltmain.sh ChangeLog
+libtool: $(top_builddir)/config.status $(srcdir)/$(auxdir)/ltmain.sh ChangeLog
@target=libtool; $(rebuild); \
if test -f $$target; then \
  set dummy `./$$target --version | sed 1q`; actualver=$$5; \
  test $$actualver = $$correctver  rebuild=false; \
fi; \
+   for prereq in $?; do \
+ case $$prereq in *ChangeLog);; *) rebuild=:;; esac; \
+   done; \
if $$rebuild; then \
  echo $(SHELL) ./config.status $$target; \
  cd $(top_builddir)  $(SHELL) ./config.status $$target; \
@@ -144,15 +147,6 @@
 CLEANFILES += libtool libtoolize libtoolize.tmp \
  $(auxdir)/ltmain.tmp $(m4dir)/ltversion.tmp
 
-
-## We used to build ltmain.sh in the build tree, but now it is created
-## in the source tree by bootstrap.  This rule removes stale copies from
-## previous builds left behind in the build tree, that would override the
-## source tree version in current builds.
-clean-ltmain-sh:
-   @-test $(srcdir) = $(top_builddir) || \
- rm -f $(top_builddir)/$(auxdir)/ltmain.sh stamp-vcl
-
 ## We build ltversion.m4 here, instead of from config.status,
 ## because config.status is rerun each time one of configure's
 ## dependencies change and ltversion.m4 happens to be a configure
@@ -164,13 +158,16 @@
 ## Use `$(srcdir)/m4' for the benefit of non-GNU makes: this is
 ## how ltversion.m4 appears in our dependencies.
 EXTRA_DIST += $(m4dir)/ltversion.in $(srcdir)/$(m4dir)/ltversion.m4
-$(srcdir)/$(m4dir)/ltversion.m4: clean-ltmain-sh $(m4dir)/ltversion.in 
configure.ac ChangeLog
+$(srcdir)/$(m4dir)/ltversion.m4: $(m4dir)/ltversion.in configure.ac ChangeLog
@target='$(srcdir)/$(m4dir)/ltversion.m4'; $(rebuild); \
if test -f $$target; then \
  set dummy `sed -n '/^# serial /p' $$target`; shift; \
  actualver=1.$$3; \
  test $$actualver = $$correctver  rebuild=false; \
fi; \
+   for prereq in $?; do \
+ case $$prereq in *ChangeLog | *configure.ac);; *) rebuild=:;; esac; \
+   done; \
if $$rebuild; then \
  cd $(srcdir); \
  rm -f $(m4dir)/ltversion.tmp; \
@@ -197,17 +194,22 @@
 ##   distcheck (at least) by rebuilding ltmain.sh in the source
 ##   tree whenever config.status regenerates the Makefile.
 EXTRA_DIST += $(srcdir)/$(auxdir)/ltmain.sh
-$(srcdir)/$(auxdir)/ltmain.sh: clean-ltmain-sh $(sh_files) 
$(auxdir)/ltmain.m4sh configure.ac ChangeLog
+$(srcdir)/$(auxdir)/ltmain.sh: $(sh_files) $(auxdir)/ltmain.m4sh configure.ac 
ChangeLog
@target='$(srcdir)/$(auxdir)/ltmain.sh'; $(rebuild); \
if test -f $$target; then \
  eval `sed -n '/^package_revision=/p' $$target`; \
  actualver=$$package_revision; \
  test $$actualver = $$correctver  rebuild=false; \
fi; \
+   for prereq in $?; do \
+ case $$prereq in *ChangeLog);; *) rebuild=:;; esac; \
+   done; \
if $$rebuild; then \
  cd $(srcdir); \
  rm -f $(auxdir)/ltmain.in $(auxdir)/ltmain.tmp \
$(auxdir)/ltmain.sh; \
+ echo $(M4SH) -B $(auxdir) $(auxdir)/ltmain.m4sh \
+   \ $(auxdir)/ltmain.in; \
  $(M4SH) -B $(auxdir) $(auxdir)/ltmain.m4sh \
 $(auxdir)/ltmain.in; \
  input=ltmain.m4sh; \