[patch #6443] [MSVC 2/7] On Windows, find potential libs regardless of file name case.

2008-03-04 Thread Peter Rosin

URL:
  http://savannah.gnu.org/patch/?6443

 Summary: [MSVC 2/7] On Windows, find potential libs
regardless of file name case.
 Project: GNU Libtool
Submitted by: pekberg
Submitted on: Tuesday 03/04/2008 at 10:56
Category: None
Priority: 5 - Normal
  Status: None
 Privacy: Public
 Assigned to: None
Originator Email: 
 Open/Closed: Open
 Discussion Lock: Any

___

Details:

* libltdl/m4/libtool.m4 (_LT_CHECK_MAGIC_METHOD),
libltdl/config/ltmain.m4sh (func_mode_link): On Windows,
find potential libs regardless of file name case.
* tests/nocase.at: New test, to check for regressions
of the above.
* Makefile.am: Add above new test.




___

File Attachments:


---
Date: Tuesday 03/04/2008 at 10:56  Name: file-magic-glob.patch  Size: 6kB  
By: pekberg

http://savannah.gnu.org/patch/download.php?file_id=15171

___

Reply to this item at:

  http://savannah.gnu.org/patch/?6443

___
  Message sent via/by Savannah
  http://savannah.gnu.org/





[patch #6446] MSVC [5/7] MSVC doesn't support the -l option, instead it expects the exact library file name

2008-03-04 Thread Peter Rosin

URL:
  http://savannah.gnu.org/patch/?6446

 Summary: MSVC [5/7] MSVC doesn't support the -l option,
instead it expects the exact library file name
 Project: GNU Libtool
Submitted by: pekberg
Submitted on: Tuesday 03/04/2008 at 11:01
Category: None
Priority: 5 - Normal
  Status: None
 Privacy: Public
 Assigned to: None
Originator Email: 
 Open/Closed: Open
 Discussion Lock: Any

___

Details:

MSVC doesn't support the -l option, instead it expects the exact
library file name. Retain the -l option as long as possible as
libtool recognizes -l internally. Then, as late as possible
transform the -l option to an exact file name (-lfoo - foo.lib).
This patch is against Libtool 2.2

* libltdl/m4/libtool.m4: Add tag variable dashl_xform which
specifies how to transform -l options for the linker.
* libltdl/config/ltmain.m4sh (func_mode_link): Transform -l
options using dashl_xform right before creating the
program or library.




___

File Attachments:


---
Date: Tuesday 03/04/2008 at 11:01  Name: dashl-xform.patch  Size: 2kB   By:
pekberg

http://savannah.gnu.org/patch/download.php?file_id=15174

___

Reply to this item at:

  http://savannah.gnu.org/patch/?6446

___
  Message sent via/by Savannah
  http://savannah.gnu.org/





[patch #6447] MSVC [6/7] Indicate if the archiver supports a listing file

2008-03-04 Thread Peter Rosin

URL:
  http://savannah.gnu.org/patch/?6447

 Summary: MSVC [6/7] Indicate if the archiver supports a
listing file
 Project: GNU Libtool
Submitted by: pekberg
Submitted on: Tuesday 03/04/2008 at 11:03
Category: None
Priority: 5 - Normal
  Status: None
 Privacy: Public
 Assigned to: None
Originator Email: 
 Open/Closed: Open
 Discussion Lock: Any

___

Details:

Allow the use of a file listing file if the archiver supports it.
Add hint so that the Microsoft lib archiver uses the file listing
feature.
This patch is against Libtool 2.2

* libltdl/m4/libtool.m4 (_LT_PROG_AR): Indicate if the
archiver supports a listing file with the new variable
archiver_list_spec.
* libltdl/config/ltmain.m4sh: If the archiver supports
a listing file, use it when max_cmd_len is exceeded.




___

File Attachments:


---
Date: Tuesday 03/04/2008 at 11:03  Name: archiver-list-spec.patch  Size: 2kB 
 By: pekberg

http://savannah.gnu.org/patch/download.php?file_id=15175

___

Reply to this item at:

  http://savannah.gnu.org/patch/?6447

___
  Message sent via/by Savannah
  http://savannah.gnu.org/





[patch #6442] [MSVC 1/7] Allow Microsoft lib to be used as the archiver.

2008-03-04 Thread Peter Rosin

Update of patch #6442 (project libtool):

 Summary: Allow Microsoft lib to be used as the archiver. =
[MSVC 1/7] Allow Microsoft lib to be used as the archiver.

___

Follow-up Comment #1:

* libltdl/m4/libtool.m4 (_LT_PROG_AR): New macro, detect the
interface used by the archiver. In particullar, add the AR_SEP
variable to allow archivers that does not allow a space between
the options to create an archive and the archive name and the
ar_extract_one_by_one variable which indicates if the archiver
can extract all members in one go.
* libltdl/m4/libtool.m4: Add $AR_SEP between $AR_FLAGS and the
archive file name in all $AR commands.
* libltdl/config/ltmain.m4sh (func_extract_an_archive): Add support
for archivers that only supports extracting one member at a time
and otherwise adjust to the above libtool.m4 changes. Also, add
$AR_SEP to the $AR invocations.
* Makefile.am: Pass AR, AR_FLAGS and AR_SEP through to the
testsuite.
* tests/archive-in-archive.at: Extract archive name from the .la
file instead of hardcodeing the name, and allow different archivers.


___

Reply to this item at:

  http://savannah.gnu.org/patch/?6442

___
  Message sent via/by Savannah
  http://savannah.gnu.org/





[patch #6448] [MSVC 7/7] Add MSVC Support

2008-03-04 Thread Peter Rosin

Follow-up Comment #1, patch #6448 (project libtool):

I have no problems with this patch series on either mingw, nor
cygwin.

I have not found a functioning cccl to test with. I have tried
both cccl 0.03 as found on sf.net and cccl 0.05 as found on
http://tsunanet.net/~tsuna/cccl

Niether cccl can even build libtool. I have tried to patch
around the first few problems in cccl, but I can't see why
I should fix cccl in order to check if it these patches
break cccl. cccl is seriously broken, or please point me
to a version of cccl that I should use.

(I used cygwin and ../configure CC=cccl CXX=cccl LD=cccl F77=no FC=no
GCJ=no)


Annotated testsuite with these patches:

On MSYS and MSVC 12.00.8804 (MSVC 6) with:
../configure CC=cl CFLAGS=-MD CXX=cl CXXFLAGS=-MD LD=link NM=dumpbin
-symbols AR=lib STRIP=: RANLIB=: F77=no FC=no

The problems with the exported variables can be solved with the
right amount of declspecs. I will not work on the other problems
until basic MSVC support is commited.

PASS: tests/link.test
PASS: tests/link-2.test
PASS: tests/nomode.test
PASS: tests/objectlist.test
PASS: tests/quote.test
PASS: tests/sh.test
PASS: tests/suffix.test
SKIP: tests/tagtrace.test
PASS: tests/cdemo-static.test
PASS: tests/cdemo-make.test
PASS: tests/cdemo-exec.test
PASS: tests/demo-static.test
PASS: tests/demo-make.test
PASS: tests/demo-exec.test
PASS: tests/demo-inst.test
PASS: tests/demo-unst.test
PASS: tests/depdemo-static.test
PASS: tests/depdemo-make.test
PASS: tests/depdemo-exec.test
PASS: tests/depdemo-inst.test
PASS: tests/depdemo-unst.test
PASS: tests/mdemo-static.test
PASS: tests/mdemo-make.test
PASS: tests/mdemo-exec.test
PASS: tests/mdemo-inst.test
PASS: tests/mdemo-unst.test
PASS: tests/cdemo-conf.test
PASS: tests/cdemo-make.test
PASS: tests/cdemo-exec.test
PASS: tests/demo-conf.test
FAIL: tests/demo-make.test (exported variable, remove it fixes it)
SKIP: tests/demo-exec.test
SKIP: tests/demo-inst.test
SKIP: tests/demo-unst.test
FAIL: tests/demo-deplibs.test (assumes oldlibs are named lib???.a)
PASS: tests/depdemo-conf.test
FAIL: tests/depdemo-make.test (exported variables, remove them fixes it)
SKIP: tests/depdemo-exec.test
SKIP: tests/depdemo-inst.test
SKIP: tests/depdemo-unst.test
PASS: tests/mdemo-conf.test
PASS: tests/mdemo-make.test
PASS: tests/mdemo-exec.test
PASS: tests/mdemo-inst.test
PASS: tests/mdemo-unst.test
PASS: tests/mdemo-dryrun.test
PASS: tests/mdemo2-conf.test
PASS: tests/mdemo2-make.test
PASS: tests/mdemo2-exec.test
PASS: tests/pdemo-conf.test
FAIL: tests/pdemo-make.test (link can't create reloadable object files (-r))
SKIP: tests/pdemo-exec.test
SKIP: tests/pdemo-inst.test
PASS: tests/demo-nofast.test
FAIL: tests/demo-make.test (exported variable, remove it fixes it)
SKIP: tests/demo-exec.test
SKIP: tests/demo-inst.test
SKIP: tests/demo-unst.test
PASS: tests/depdemo-nofast.test
FAIL: tests/depdemo-make.test (exported variables, remove them fixes it)
SKIP: tests/depdemo-exec.test
SKIP: tests/depdemo-inst.test
SKIP: tests/depdemo-unst.test
PASS: tests/demo-pic.test
FAIL: tests/demo-make.test (exported variable, remove it fixes it)
SKIP: tests/demo-exec.test
PASS: tests/demo-nopic.test
FAIL: tests/demo-make.test (exported variable, remove it fixes it)
SKIP: tests/demo-exec.test
PASS: tests/cdemo-shared.test
PASS: tests/cdemo-make.test
PASS: tests/cdemo-exec.test
PASS: tests/demo-shared.test
FAIL: tests/demo-make.test (exported variable, remove it fixes it...)
SKIP: tests/demo-exec.test
SKIP: tests/demo-inst.test
SKIP: tests/demo-hardcode.test (...but fails here, using $CC w/o going
through libtool)
SKIP: tests/demo-relink.test
SKIP: tests/demo-noinst-link.test
SKIP: tests/demo-unst.test
PASS: tests/depdemo-shared.test
FAIL: tests/depdemo-make.test (exported variables, remove them fixes it)
SKIP: tests/depdemo-exec.test
SKIP: tests/depdemo-inst.test
SKIP: tests/depdemo-relink.test
SKIP: tests/depdemo-unst.test
PASS: tests/mdemo-shared.test
PASS: tests/mdemo-make.test
PASS: tests/mdemo-exec.test
PASS: tests/mdemo-inst.test
PASS: tests/mdemo-unst.test
PASS: tests/cdemo-undef.test
PASS: tests/cdemo-make.test
PASS: tests/cdemo-exec.test
PASS: tests/tagdemo-static.test
PASS: tests/tagdemo-make.test
PASS: tests/tagdemo-exec.test
PASS: tests/tagdemo-conf.test
PASS: tests/tagdemo-make.test
PASS: tests/tagdemo-exec.test
PASS: tests/tagdemo-shared.test
PASS: tests/tagdemo-make.test
PASS: tests/tagdemo-exec.test
PASS: tests/tagdemo-undef.test
PASS: tests/tagdemo-make.test
PASS: tests/tagdemo-exec.test

10 of 79 tests failed
(27 tests were not run)
Please report to [EMAIL PROTECTED]



___

Reply to this item at:

  http://savannah.gnu.org/patch/?6448

___
  Message sent via/by Savannah
  http://savannah.gnu.org/





git? branch-2-2?

2008-03-04 Thread Ralf Wildenhues
Hello libtoolers,

1) Can we move to use git now?

2) Can we create a branch-2-2 and cherry-pick bugfixes from HEAD
into it, aiming for a soonish 2.2.2 (let's say, in a few weeks;
already a few important issues are known)?

3) If yes and yes, do you agree with the proposed git policy:
master should usually not contain merges except for merges from public
topic branches, should we have such in the future.  Generally, master
should be the first to receive a patch, and stable branches should
cherry-pick from master.  In your local trees, you should rebase private
topic branches against the upstream tree before inclusion.

If you agree, I just might look into doing the work.

I'm a bit unsure whether 2.2.2 should come before the move to git.
Comments appreciated.

Thanks,
Ralf




Re: libltdl memory corruption

2008-03-04 Thread Ralf Wildenhues
Hi Peter,

* Peter O'Gorman wrote on Tue, Mar 04, 2008 at 07:14:51AM CET:
 Ralf Wildenhues wrote:
  
  So I'd appreciate a review of this, and also test results on systems
  with loaders other than preopen and dlopen.  (I haven't even tested
  successful compilation on those other systems.)
 
 I did not manage to try the shl_load loader, only tested dyld. This
 patch causes no regressions on Mac OS X 10.2. If that is also true for
 the loaders you get around to trying, this is ok.

For the preopen, dlopen, shl_load loaders, I confirmed that the
testsuite addition exposes the bug, and the loader changes fixes the
testsuite failure.  For loadlibrary, I only cross-compiled from
GNU/Linux to ensure absense of typos.

I visually inspected the BeOS and dld changes again for typos, and then
applied the patch, after adding a NEWS entry.

 Thank you. Once again you sent a patch for a bug before I even got
 around to reading the list.

My pleasure.  :-)  Kudos to Andreas for reporting the bug.

Cheers,
Ralf




FYI: fix doc typo

2008-03-04 Thread Ralf Wildenhues
I applied this tiny fix.

Cheers,
Ralf

2008-03-04  Ralf Wildenhues  [EMAIL PROTECTED]

* doc/libtool.texi (Module loaders for libltdl): Fix typo.

Index: doc/libtool.texi
===
RCS file: /cvsroot/libtool/libtool/doc/libtool.texi,v
retrieving revision 1.238
diff -u -r1.238 libtool.texi
--- doc/libtool.texi24 Jan 2008 04:08:37 -  1.238
+++ doc/libtool.texi4 Mar 2008 21:06:59 -
@@ -4226,7 +4226,7 @@
   dlloader.sym_prefix= NULL;
   dlloader.module_open   = myloader_open;
   dlloader.module_close  = myloader_close;
-  dlloader.find_sym  = myloader_find_sym.
+  dlloader.find_sym  = myloader_find_sym;
   dlloader.dlloader_exit = myloader_exit;
   dlloader.dlloader_data = (lt_user_data)myloader_function;
 




libtool generated by GNU $PACKAGE (was: [libtool 2.2] testsuite: 34 failed)

2008-03-04 Thread Ralf Wildenhues
* Roberto Bagnara wrote on Mon, Mar 03, 2008 at 09:14:48PM CET:
 P.S. In ./libtool there is the line

# Generated automatically by config.status (GNU ppl) 0.10pre16

  `ppl' is indeed the short name of the project.  I don't know
  why it is preceded by GNU.

Fixed with the patch below.  I don't care much that, in the Libtool
package itself, the will result in a libtool script with the line
# Generated automatically by config.status (libtool 1.2600 2008/03/02 02:19:16) 
2.3a

instead of GNU libtool.

This has been reported several times, please speak up if I forgot to
mention a reporter.  The hard part with this patch was ensuring that
none of the libtool code uses this bit in a sed pattern (in some parts
script headers are checked, but not this one, apparently).

Cheers, and thanks to both of you for the report (I put you in THANKS),
Ralf

2008-03-04  Ralf Wildenhues  [EMAIL PROTECTED]

* libltdl/m4/libtool.m4 (_LT_CONFIG): Drop misleading `GNU'
prefix before the host package name in the Generated by line
for the libtool script.
* THANKS: Update.
Reports by Peter Rosin and Roberto Bagnara.

Index: libltdl/m4/libtool.m4
===
RCS file: /cvsroot/libtool/libtool/libltdl/m4/libtool.m4,v
retrieving revision 1.137
diff -u -r1.137 libtool.m4
--- libltdl/m4/libtool.m4   20 Feb 2008 20:11:39 -  1.137
+++ libltdl/m4/libtool.m4   4 Mar 2008 21:11:56 -
@@ -685,7 +685,7 @@
 #! $SHELL
 
 # `$ECHO $ofile | sed 's%^.*/%%'` - Provide generalized library-building 
support services.
-# Generated automatically by $as_me (GNU $PACKAGE$TIMESTAMP) $VERSION
+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
 # Libtool was configured on host `(hostname || uname -n) 2/dev/null | sed 1q`:
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 #




mode=execute argument munging bug (was: [libtool 2.2] testsuite: 34 failed)

2008-03-04 Thread Ralf Wildenhues
Hello Roberto,

* Roberto Bagnara wrote on Mon, Mar 03, 2008 at 09:14:48PM CET:

 $ cat mycommand
 #!/bin/sh
 echo mycommand invoked with argument '$1'
 $ mycommand ciao
 mycommand invoked with argument 'ciao'
 $ ./libtool --mode=execute mycommand ciao
 mycommand invoked with argument '/home/roberto/tppl/'
 $

 Note that /home/roberto/tppl/ is the directory where the libtool
 script is located.  I can also do

 $ cd interfaces/
 $ ../libtool --mode=execute ../mycommand ciao
 mycommand invoked with argument '/home/roberto/tppl/'

 Is this behavior normal?

No.  Thank you for the bug report.  I've applied the fix below.

FWIW, the ordering of the tests in execute-mode.at is such that the
first set still passes for 1.5.26.

 ./libtool is what has been created at configure time and a bzipped
 version of it is attached to this file.

It wasn't attached to the message, but that's not a problem.  :-)

Cheers,
Ralf

* libltdl/config/ltmain.m4sh (func_mode_execute): Replace only
arguments we have identified as shell or C wrappers.
(func_emit_wrapper): Output error message on stderr.
* tests/execute-mode.at: New file, with --mode=execute tests.
* Makefile.am: Adjust.
* NEWS: Update.
Fixes 2.2 regression.  Report by Roberto Bagnara.

Index: Makefile.am
===
RCS file: /cvsroot/libtool/libtool/Makefile.am,v
retrieving revision 1.229
diff -u -r1.229 Makefile.am
--- Makefile.am 18 Jan 2008 10:49:40 -  1.229
+++ Makefile.am 4 Mar 2008 21:16:26 -
@@ -447,6 +447,7 @@
  tests/search-path.at \
  tests/indirect_deps.at \
  tests/archive-in-archive.at \
+ tests/execute-mode.at \
  tests/destdir.at \
  tests/old-m4-iface.at \
  tests/am-subdir.at \
Index: NEWS
===
RCS file: /cvsroot/libtool/libtool/NEWS,v
retrieving revision 1.220
diff -u -r1.220 NEWS
--- NEWS4 Mar 2008 21:00:18 -   1.220
+++ NEWS4 Mar 2008 21:16:27 -
@@ -6,6 +6,9 @@
 
   - Fix 2.2 regression in libltdl that causes memory corruption upon
 repeated `lt_dlinit(); lt_dlexit()'.
+  - Fix 2.2 regression in that `libtool --mode=execute CMD ARGS' does not
+transform ARGS that do not look like shell or C wrappers of libtool
+programs.
 
 New in 2.2: 2008-03-01; CVS version 2.1c, Libtool team:
 
Index: libltdl/config/ltmain.m4sh
===
RCS file: /cvsroot/libtool/libtool/libltdl/config/ltmain.m4sh,v
retrieving revision 1.97
diff -u -r1.97 ltmain.m4sh
--- libltdl/config/ltmain.m4sh  28 Jan 2008 15:49:46 -  1.97
+++ libltdl/config/ltmain.m4sh  4 Mar 2008 21:16:29 -
@@ -1694,12 +1694,14 @@
# Do a test to see if this is really a libtool program.
if func_ltwrapper_script_p $file; then
  func_source $file
+ # Transform arg to wrapped name.
+ file=$progdir/$program
elif func_ltwrapper_executable_p $file; then
  func_ltwrapper_scriptname $file
  func_source $func_ltwrapper_scriptname_result
+ # Transform arg to wrapped name.
+ file=$progdir/$program
fi
-   # Transform arg to wrapped name.
-   file=$progdir/$program
;;
   esac
   # Quote arguments (to preserve shell metacharacters).
@@ -2468,7 +2470,7 @@
  ;;
esac
$ECHO \
-  \$ECHO \\$0: cannot exec \$program \$*\
+  \$ECHO \\$0: cannot exec \$program \$*\ 12
   exit 1
 fi
   else
--- /dev/null   2008-03-02 10:33:19.200041011 +0100
+++ tests/execute-mode.at   2008-03-04 22:15:22.0 +0100
@@ -0,0 +1,92 @@
+# execute-mode.at -- libtool --mode=execute -*- Autotest -*-
+#
+#   Copyright (C) 2008 Free Software Foundation, Inc.
+#   Written by Ralf Wildenhues, 2008
+#
+#   This file is part of GNU Libtool.
+#
+# GNU Libtool is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# GNU Libtool is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Libtool; see the file COPYING.  If not, a copy
+# can be downloaded from  http://www.gnu.org/licenses/gpl.html,
+# or obtained by writing to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+AT_SETUP([execute mode])
+AT_KEYWORDS([libtool])
+
+AT_DATA([foo],
+[[#! /bin/sh
+if test $# -gt 0; then
+  echo $@
+else

Re: git? branch-2-2?

2008-03-04 Thread Ralf Wildenhues
Hi Bob,

* Bob Friesenhahn wrote on Tue, Mar 04, 2008 at 10:23:57PM CET:

 I think that this topic should be discussed on [EMAIL PROTECTED] before  
 the final decision because not only libtool maintainers retrieve sources 
 and submit patches based on the version control system.

Sure, why not.

 On Tue, 4 Mar 2008, Ralf Wildenhues wrote:
 3) If yes and yes, do you agree with the proposed git policy:
 master should usually not contain merges except for merges from public
 topic branches, should we have such in the future.  Generally, master
 should be the first to receive a patch, and stable branches should
 cherry-pick from master.  In your local trees, you should rebase private
 topic branches against the upstream tree before inclusion.

 I would like to see more open discussion of this since git is a sort of 
 toolkit which can be used in radically different ways.  Git is capable of 
 supporting both cooperation and total anarchy.  Besides official 
 maintainers, we have others to worry about.

Yep, true.  What I was thinking of was to use now-existing savannah
infrastructure, namely a public git repo.  In a first approach, that
repository could just contain the active release branches (branch-1-5,
branch-2-2, master).  These branches should always strictly go forward,
i.e., existing history may not be undone.

 A concern about basing changes to stable branches on the master version 
 (new term for head?)

Yes, git uses the word master; since the term HEAD also has meaning in
git, it's better to not confuse this.

 is that it seems to keep master from flourishing 
 like it could.  Perhaps it might cramp Gary's style.  If this is wrong, 
 then please explain further for the git-impaired.

I have no idea whether Gary's style may be impacted, but I would doubt
it.  All I meant to say with cherry-picking from master to stable was:
patches should not flow from older branches to newer branches.  And we
should avoid merging between the branches: merging brings in not only
the most recent change, but all changes missing from the merge target's
history.

Since git is distributed, I think developers will have much more
freedom in organizing their work as appropriate.  Gary can have several
branches of his own in his repo.  In fact, I do have several Autoconf
branches in my private repo, each representing work on a different
issue.  I frequently rebase them against the public master on savannah.

 If patches are retrieved from local trees, I assume that this requires  
 that the local trees have a git server running?

No.  You can push from a private repo to the public one on savannah, if
you have write access to it.

 Otherwise patches would 
 need to be emailed or the local tree needs to belong to a maintainer with 
 ability to submit to the golden repository.  The apparent flexibility of 
 git is confusing to me.

Yeah, I know.  It's very confusing at first, and typically needs someone
to walk one through the first few steps.  Gets better though.

And no, emailing of patches is not more often necessary than now, i.e.,
mostly for posting OK to apply mails.  That can even be done more
easily, since there is a git format-patch command which will create
formatted message(s) for this purpose.

Cheers,
Ralf




Re: git? branch-2-2?

2008-03-04 Thread Bob Friesenhahn

On Tue, 4 Mar 2008, Ralf Wildenhues wrote:

As far as cramping Gary's style goes, Gary (only used as an example
here) is prone to making large changes, and these changes may soon
render 'master' useless as a good source of patches for stable branches.


Ah, no, this problem is easily avoided.  git cherry-pick allows you to
pick individual patches from one branch into another.


My point is that as the master version advances in time, the baseline 
for submitted patches will become more and more different. 
Eventually a patch from the master version can not reasonably be 
applied against a stable branch.


One reason why I have not contributed all that much to libtool sources 
is that the level of effort to produce an emailable patch for peer 
approval on this list substantially raises the bar for contribution. 
While the patch is waiting to be approved, the local changes sit 
uncommitted in a working directory, hindering further work on the same 
files.  Each developer needed to develop his own system for working 
around this limitation.  I never did.  It seems that git has much more 
to offer to meet these needs than CVS does.


Bob
==
Bob Friesenhahn
[EMAIL PROTECTED], http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer,http://www.GraphicsMagick.org/





libltdl skips dlopen loader if there are others

2008-03-04 Thread Ralf Wildenhues
Hello,

this fixes one of the most long-standing regressions of 2.2 over
branch-1-5.  It causes issues on every system that has not only the
dlopen loader, but also another one.  I bet this is the cause for
some long-standing issues on w32.

On HP-UX, the lt_dladvise test fails with
| ../../libtool-2.1c/tests/lt_dladvise.at:316: $LIBTOOL --mode=execute $modules 
./main; lt_status=$?;
|if test $lt_status -eq 0; then :;
|elif test X$host != X$build  \
| { test -x ./main || test -x ./main$EXEEXT; }
|then (exit 77); else (exit $lt_status); fi
| Not enabling shell tracing (command contains an embedded newline)
| 4c4
|  depend: 5
| ---
|  depend: 4
| 38. lt_dladvise.at:28: 38. lt_dlopenadvise library loading 
(lt_dladvise.at:28): FAILED (lt_dladvise.at:316)

In this test, there are two modules, one to be loaded RTLD_LOCAL and
one RTLD_GLOBAL.  Using the wrong of two symbols 'i' causes the above
failure.

What happens here?  HP-UX 11.23 has both dlopen and shl_load interfaces.
Only the dlopen interface knows how to load with RTLD_LOCAL.  We
actually use prepend priority for dlopen, and append priority for
shl_load.  Compiling with -DLT_DEBUG_LOADERS shows the dlopen loader is
never even used, although dlopen.a has successfully been preopened.

Further, when I munge the config.cache file fooling libtool into
thinking that shl_load does not work, the tests suddenly passes,
which proves that the dlopen loader works here.

So, after lots of searching (I first noted this bugs sometime last year)
I found that our linked list implementation is b0rked.  I feel like Gary
and I both should run around with a rather big brown bag for a while ...
:-/

Gary, could you take care of pushing this change to upstream slist users
if any?

Cheers, and thanks,
Ralf

Fix libltdl to not skip dlopen on systems with several loaders,
such as HP-UX, Cygwin.
* libltdl/slist.c (slist_concat): When appending to the tail
of a list, do not drop items off the beginning of the list.
* NEWS: Update.

Index: NEWS
===
RCS file: /cvsroot/libtool/libtool/NEWS,v
retrieving revision 1.221
diff -u -r1.221 NEWS
--- NEWS4 Mar 2008 21:25:48 -   1.221
+++ NEWS4 Mar 2008 22:30:36 -
@@ -6,6 +6,8 @@
 
   - Fix 2.2 regression in libltdl that causes memory corruption upon
 repeated `lt_dlinit(); lt_dlexit()'.
+  - Fix 2.2 regression in libltdl that skipped the dlopen loader if
+the system also supports other loaders (e.g., Cygwin, HP-UX).
   - Fix 2.2 regression in that `libtool --mode=execute CMD ARGS' does not
 transform ARGS that do not look like shell or C wrappers of libtool
 programs.
Index: libltdl/slist.c
===
RCS file: /cvsroot/libtool/libtool/libltdl/slist.c,v
retrieving revision 1.10
diff -u -r1.10 slist.c
--- libltdl/slist.c 7 Sep 2007 02:44:57 -   1.10
+++ libltdl/slist.c 4 Mar 2008 22:30:36 -
@@ -1,6 +1,6 @@
 /* slist.c -- generalised singly linked lists
 
-   Copyright (C) 2000, 2004, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2004, 2007, 2008 Free Software Foundation, Inc.
Written by Gary V. Vaughan, 2000
 
NOTE: The canonical source of this file is maintained with the
@@ -140,15 +140,18 @@
 SList *
 slist_concat (SList *head, SList *tail)
 {
+  SList *last;
+
   if (!head)
 {
   return tail;
 }
 
-  while (head-next)
-head = head-next;
+  last = head;
+  while (last-next)
+last = last-next;
 
-  head-next = tail;
+  last-next = tail;
 
   return head;
 }




Re: git? branch-2-2?

2008-03-04 Thread Bob Friesenhahn

On Tue, 4 Mar 2008, Gary V. Vaughan wrote:
My point is that as the master version advances in time, the baseline for 
submitted patches will become more and more different. Eventually a patch 
from the master version can not reasonably be applied against a stable 
branch.


That's no different to the effort involved in porting fixes on branch-1-5 
forward to HEAD in CVS.


Exactly.  This was not an easy chore even though CVS could give you a 
nice diff.  If major libtool releases can occur much more often, then 
there should be less pain from maintaining branches.


Incidentally, I suppose we should set about defining a sensible set of goals 
for Libtool 2.4 reasonably soon...  I'll raise that again when 2.2.2 is done.


The only two big things I can think of are

  o Better Windows support (for non-GNU compilers).

  o Multi-lib/multi-arch support (including building the libs).

We have contributed patches for some of this already.  I would be 
happy if 2.4 popped out with just the Windows part since 
multi-lib/multi-arch may be a big project and requires more consensus.


It would also be nice if autoconf and libtool could work with a 
DTrace-fortified shell 
(http://blogs.sun.com/tpenta/entry/psarc_2008_008_dtrace_provider) so 
that we can do some really good performance profiling on it and make 
it faster.  There is likely some low-lying fruit that we are not aware 
of.



I'm looking forward to your patches now :-D


My motiviations toward libtool are mostly selfish in that libtool is 
vital to other software I develop and maintain.  When libtool becomes 
a blocker, then my motiviation level becomes high. :-)


The 2.2 release is the first libtool release which satisfies all of my 
requirements (except for non-GNU Windows) in the last eleven years. 
In other words, it is the first libtool release that I feel 
comfortable with not using a development version in my released 
software.  That is quite an achievement.


Bob
==
Bob Friesenhahn
[EMAIL PROTECTED], http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer,http://www.GraphicsMagick.org/





Re: git? branch-2-2?

2008-03-04 Thread Gary V. Vaughan

Howdy Bob,

On 4 Mar 2008, at 17:29, Bob Friesenhahn wrote:

On Tue, 4 Mar 2008, Ralf Wildenhues wrote:

As far as cramping Gary's style goes, Gary (only used as an example
here) is prone to making large changes, and these changes may soon
render 'master' useless as a good source of patches for stable  
branches.


Ah, no, this problem is easily avoided.  git cherry-pick allows you  
to

pick individual patches from one branch into another.


I feel cramped by CVS!  That's why I invested considerable effort into  
maintaining an Arch mirror for my own work on Libtool.  I feel that my  
style is to hardly work on the tree at all for months on end, and then  
when a flash of inspiration to improve some part of Libtool strikes:  
to work frenetically on deep changes for a while, and then back off  
while the dust settles :-)


With a better distributed system, I'd happily confine my source quake  
to a public topic branch rather than juggling a private quilt patch  
stack.  I'd like to think that might encourage people to jump in and  
help out with the deep changes, since they won't have to wait for me  
to pull back the curtain at the very end of my process to see what  
I've been doing.  (Arch helped a lot in that regard, but was too much  
work to maintain outside of the blessed repository.)


Also, if maintaining patches outside of master and stable (but still  
in public) is easy enough for me, I might feel a lot more inclined to  
help out with the more mundane aspects of maintaining Libtool rather  
than working away behind the scenes towards my occasional source-quakes.


My point is that as the master version advances in time, the  
baseline for submitted patches will become more and more different.  
Eventually a patch from the master version can not reasonably be  
applied against a stable branch.


That's no different to the effort involved in porting fixes on  
branch-1-5 forward to HEAD in CVS.


Ideally, we should be aiming to release frequently enough that there  
isn't 4 years of difference between master and stable, so this can be  
a much smaller problem for future releases.


Incidentally, I suppose we should set about defining a sensible set of  
goals for Libtool 2.4 reasonably soon...  I'll raise that again when  
2.2.2 is done.


One reason why I have not contributed all that much to libtool  
sources is that the level of effort to produce an emailable patch  
for peer approval on this list substantially raises the bar for  
contribution. While the patch is waiting to be approved, the local  
changes sit uncommitted in a working directory, hindering further  
work on the same files.  Each developer needed to develop his own  
system for working around this limitation.  I never did.  It seems  
that git has much more to offer to meet these needs than CVS does.



I had a half baked solution in cvs-utils (from which our commit script  
is taken), and then moved to quilt which handles the ugly parts of  
tracking a moving target underneath our patches.  Git makes all of  
this at least as easy, but without all the extra glue.


I'm looking forward to your patches now :-D

Cheers,
Gary
--
  ())_.  Email me: [EMAIL PROTECTED]
  ( '/   Read my blog: http://blog.azazil.net
  / )= ...and my book: http://sources.redhat.com/autobook
`(_~)_






PGP.sig
Description: This is a digitally signed message part


Re: libltdl skips dlopen loader if there are others

2008-03-04 Thread Gary V. Vaughan

Ouch :-(  Nice catch.

On 4 Mar 2008, at 17:31, Ralf Wildenhues wrote:
Gary, could you take care of pushing this change to upstream slist  
users

if any?



No other active projects are using slist to my knowledge (excepting  
some non-GNU stuff of my own).


I have got some slist unit tests somewhere on my hard disk backups.   
If I haven't lost them, I'll port them into libtool presently -- which  
effectively holds the master copy of slist nowadays.


Cheers,
Gary
--
  =.   Email me: [EMAIL PROTECTED]
 / @ @  /|   Read my blog: http://blog.azazil.net
 \  \\  ...and my book: http://sources.redhat.com/autobook
  \^^\\


PGP.sig
Description: This is a digitally signed message part


Re: git? branch-2-2?

2008-03-04 Thread Eric Blake

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

According to Ralf Wildenhues on 3/4/2008 1:56 PM:
| Hello libtoolers,
|
| 1) Can we move to use git now?

I sure hope so!  It appears to have worked out well for coreutils,
autoconf, automake, m4, and gnulib, which are all closely related projects.

|
| 2) Can we create a branch-2-2 and cherry-pick bugfixes from HEAD
| into it, aiming for a soonish 2.2.2 (let's say, in a few weeks;
| already a few important issues are known)?

Fine by me.

|
| 3) If yes and yes, do you agree with the proposed git policy:
| master should usually not contain merges except for merges from public
| topic branches, should we have such in the future.  Generally, master
| should be the first to receive a patch, and stable branches should
| cherry-pick from master.  In your local trees, you should rebase private
| topic branches against the upstream tree before inclusion.

FYI, this is the same policy on automake.  Coreutils, autoconf, and gnulib
don't really have stable branches at the moment, although that could
change.  M4 has a stable branch (for 1.4.x) and a development branch (the
eventual 2.0), but they have diverged so far (even before conversion to
git) that I have lately been doing the reverse (apply patches to the
branch, then cherry-pick into master).  But I can live with your proposed
policy for libtool, particularly since it means the master branch should
never have regressions merely because a patch was applied to the stable
branch and not ported forward.

| I'm a bit unsure whether 2.2.2 should come before the move to git.
| Comments appreciated.

Once you have a git repository, you can use 'git cvsimport' incrementally
as long as we want to keep the CVS repository alive.  However, I found
with autoconf that the month that I was manually syncing CVS and git was a
bit awkward, and things went more smoothly once we committed to the master
savannah repository being git only.

- --
Don't work too hard, make some time for fun as well!

Eric Blake [EMAIL PROTECTED]
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.5 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHzhIV84KuGfSFAYARAhk7AKDFOm7vCDdEPpdnTcQ27JNu6CPpmQCgnvwW
O41MpqrXfN7URD1gk6fXEgA=
=FM8f
-END PGP SIGNATURE-




Re: libtool generated by GNU $PACKAGE

2008-03-04 Thread Eric Blake

-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

According to Ralf Wildenhues on 3/4/2008 2:14 PM:
| Fixed with the patch below.  I don't care much that, in the Libtool
| package itself, the will result in a libtool script with the line
| # Generated automatically by config.status (libtool 1.2600 2008/03/02
02:19:16) 2.3a
|
| instead of GNU libtool.

Hmm.  While this avoids the bug, I'm not sure if it was the best fix.

|  # `$ECHO $ofile | sed 's%^.*/%%'` - Provide generalized
library-building support services.
| -# Generated automatically by $as_me (GNU $PACKAGE$TIMESTAMP) $VERSION
| +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION

TIMESTAMP is a libtool invention, and is not documented in autoconf or
automake as a typical variable.  At one point, M4 also tried using it, by
parsing the CVS revision from ChangeLog, but ever since m4 switched to
git, that aspect is broken (besides, I like what autoconf has achieved
with intra-release versioning via the git-version-gen script).  Can we
expect reasonable semantics from TIMESTAMP in all other libtoolized
packages, if we don't document it?  Meanwhile, is there one of the
Autoconf-provided variables, such as PACKAGE_NAME, which might fit better
(and in the case of libtool, preserve the name 'GNU libtool')?

- --
Don't work too hard, make some time for fun as well!

Eric Blake [EMAIL PROTECTED]
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.5 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFHzhNz84KuGfSFAYARAjXyAKCG0gUxWNp20+nzPnF4P4rlCxkPdwCeIQjg
kcOLg6gqYcxkKnVDWqS3iU0=
=m0KX
-END PGP SIGNATURE-




Re: git? branch-2-2?

2008-03-04 Thread Ralf Wildenhues
Hi Gary,

* Gary V. Vaughan wrote on Wed, Mar 05, 2008 at 12:10:30AM CET:
 On 4 Mar 2008, at 15:56, Ralf Wildenhues wrote:

 2) Can we create a branch-2-2 and cherry-pick bugfixes from HEAD
 into it, aiming for a soonish 2.2.2 (let's say, in a few weeks;
 already a few important issues are known)?

 Is CVS HEAD already the recipient of destabilising patches?  I had  
 anticipated applying fixes on CVS HEAD for a while and then branching to 
 save time moving patches between branches during the interim...

Good thinking.  All patches so far should strictly be bug fixes.

 If all the patches that went in so far are fixes, then let's wait until 
 the last possible moment before branching, and save on the number of 
 simultaneous branches we have to maintain.

It's true that maintaining branches is much easier with git, as long as
the trees are similar enough that cherry-picking between them works well.

 We already discovered that maintaining branch-1-5, branch-2-0 and HEAD  
 was too much work.  I think we should mothball branch-1-5 now, and apply 
 everything to CVS HEAD until such times as a destabilising patch forces 
 us to create branch-2-2.

Fine with me.

 I think we should wait until we are reasonably sure that we won't need a 
 maintenance release for several weeks before cutting over to git.  2.2.2 
 in a few weeks is a worthy goal (2.1b and 2.2 were on the first of the 
 month, so April 1st seems like a good target), so lets use our resources 
 to make that happen before worrying about git.

That's a plan!

Cheers,
Ralf




Re: git? branch-2-2?

2008-03-04 Thread Peter O'Gorman
Ralf Wildenhues wrote:

 I think we should wait until we are reasonably sure that we won't need a 
 maintenance release for several weeks before cutting over to git.  2.2.2 
 in a few weeks is a worthy goal (2.1b and 2.2 were on the first of the 
 month, so April 1st seems like a good target), so lets use our resources 
 to make that happen before worrying about git.
 
 That's a plan!

I have just been reading the git documentation (the only thing I knew
how to do until today was 'git pull'), looks like I will make an error
or two for the first little while, but will be able to work on multiple
problems at once (I share Bob's problem of never having worked out a
system to do that with cvs).

The above plan works for me.

Peter
-- 
Peter O'Gorman
http://pogma.com