Re: [PATCH] bootstrap: use $PATH_SEPARATOR instead of :

2015-01-21 Thread Gary V. Vaughan
On Jan 21, 2015, at 3:46 AM, KO Myung-Hun kom...@gmail.com wrote:
 
 Hi/2.

Hi!

 Gary V. Vaughan wrote:
 
 On Jan 20, 2015, at 5:22 AM, KO Myung-Hun kom...@gmail.com wrote:
 
 On OS/2, a path separator is ';' not ':'.
 
 * bootstrap (func_find_tool, func_check_tool): Use PATH_SEPARATOR.
 * gl/build-aux/bootstrap.in (func_check_tool): Likewise.
 * gl/build-aux/extract-trace (fund_find_tool): Likewise.
 
 These files do not belong to Libtool itself, but rather to
 https://github.com/gvvaughan/bootstrap. 
 
 Then should I send patches for it to different places ?

The main thing is to check that any bootstrap related issues you find in 
libtool are not already fixed in upstream bootstrap.

If you like, you can queue your pull request directly from your clone of the 
bootstrap github repo to make sure it doesnt get lost on the libtool mailing 
list, but sending here is perfectly fine too.

 We already fixed one of the
 PATH_SEPARATOR omissions on your last round of patches (thanks!), but
 I ported the other one upstream, and then updated libtool with the
 result, including a couple of other unrelated improvements.
 
 Thanks.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Re: [PATCH] bootstrap: use $PATH_SEPARATOR instead of :

2015-01-20 Thread Gary V. Vaughan
Hi,

On Jan 20, 2015, at 5:22 AM, KO Myung-Hun kom...@gmail.com wrote:
 
 On OS/2, a path separator is ';' not ':'.
 
 * bootstrap (func_find_tool, func_check_tool): Use PATH_SEPARATOR.
 * gl/build-aux/bootstrap.in (func_check_tool): Likewise.
 * gl/build-aux/extract-trace (fund_find_tool): Likewise.

These files do not belong to Libtool itself, but rather to
https://github.com/gvvaughan/bootstrap.  We already fixed one of the
PATH_SEPARATOR omissions on your last round of patches (thanks!), but
I ported the other one upstream, and then updated libtool with the
result, including a couple of other unrelated improvements.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



Re: [PATCH] testsuite: fix race conditions in ltdl dryrun

2015-01-20 Thread Gary V. Vaughan
On Dec 15, 2014, at 1:13 PM, Pavel Raiskup prais...@redhat.com wrote:
 
 [+cc autoconf, as this seems to be relevant]
 
 Hi all,

Hi Pavel,

Thanks for the fix.  This one has caught me out occasionally too, so I'll also
be glad to banish it!

Sorry for the delay in applying and pushing... it's been a crazy month!

 after several random [ltdl dryrun] failures, I used the 'make --debug' and
 some stat calls to debug.  Logs are attached for ok  failed runs as
 tarball.  Seems like after 'aclocal' run there should be an explicit
 'sleep 1', similarly like in autoreconf [1].  Possible fix attached.  The
 problem seems to be in autoheader and Perl's move function (underlying
 utime() handling?):
 
   $ touch /tmp/a
   $ stat /tmp/a
 File: ‘/tmp/a’
 Size: 0   Blocks: 0  IO Block: 4096   regular empty 
 file
   Device: 23h/35d Inode: 1296845 Links: 1
   Access: (0664/-rw-rw-r--)  Uid: ( 1000/praiskup)   Gid: ( 1000/praiskup)
   Context: unconfined_u:object_r:user_tmp_t:s0
   Access: 2014-12-15 14:03:35.744530946 +0100
   Modify: 2014-12-15 14:03:35.744530946 +0100
   Change: 2014-12-15 14:03:35.744530946 +0100
Birth: -
   $ perl -MFile::Copy -e 'move (/tmp/a, a);'
   $ stat a
 File: ‘a’
 Size: 0   Blocks: 0  IO Block: 4096   regular empty 
 file
   Device: fd00h/64768dInode: 11068678Links: 1
   Access: (0664/-rw-rw-r--)  Uid: ( 1000/praiskup)   Gid: ( 1000/praiskup)
   Context: unconfined_u:object_r:user_home_t:s0
   Access: 2014-12-15 14:03:42.0 +0100
   Modify: 2014-12-15 14:03:35.0 +0100
   ^^^ floor()-ed
   Change: 2014-12-15 14:03:42.678581581 +0100
Birth: -
 
 [1] http://git.savannah.gnu.org/cgit/autoconf.git/tree/bin/autoreconf.in#n356
 
 Pavel
 racy-tests.tar.gz0001-tests-fix-race-in-aclocal-autoheader-calls.patch

Applied and pushed.  Thanks again!

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)




Re: [PATCH] libtoolize: fix ltdl installation order

2015-01-16 Thread Gary V. Vaughan
On Jan 16, 2015, at 10:34 AM, Pavel Raiskup prais...@redhat.com wrote:
 
 * Makefile.am (pkgltdl_files): Move the Makefile.in file down in
 the list after aclocal.m4.
 ---
 Makefile.am | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
 
 diff --git a/Makefile.am b/Makefile.am
 index f1b7ead..794d58d 100644
 --- a/Makefile.am
 +++ b/Makefile.am
 @@ -441,13 +441,14 @@ pkgmacro_files  = libtool.m4 ltargz.m4 ltdl.m4 
 ltoptions.m4 ltsugar.m4 \
 ltversion.m4 lt~obsolete.m4
 
 ## These are installed as a subdirectory of pkgdatadir so that
 -## libtoolize --ltdl can find them later:
 +## libtoolize --ltdl can find them later.  Note that this list requires
 +## specific order to avoid unnecessary re-autotooling after libtoolize run.
 pkgltdl_files = COPYING.LIB \
 Makefile.am \
 -   Makefile.in \
 README \
 configure.ac \
 aclocal.m4 \
 +   Makefile.in \
 config-h.in \
 configure \
 libltdl/lt__alloc.h \

Agreed, thank you.  Applied and pushed!

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)




Re: [PATCH] AIX: Optional filename-based shlib versioning

2014-12-05 Thread Gary V. Vaughan
Hi /haubi/ :),

On Dec 5, 2014, at 8:37 AM, Michael Haubenwallner 
michael.haubenwall...@ssi-schaefer.com wrote
 On 12/03/2014 11:09 PM, Gary V. Vaughan wrote:
 
 I'm sorry I forgot to thank you for this patch, which I applied in
 time for the recent 2.4.4 release.
 
 On Nov 24, 2014, at 1:09 PM, Michael Haubenwallner 
 michael.haubenwall...@ssi-schaefer.com wrote:
 
 Support filename-based shared library versioning on AIX with the lib.so
 library filename extension, which is used with runtime linking only.
 Runtime linking is enabled by the -brtl linker flag for executables and
 the -G linker flag for Shared Objects. The behaviour is similar to
 Linux/SVR4 DT_SONAME, hence the name aix-soname=svr4.
 
 Much appreciated!  I did make some slight edits after applying, so
 please check that it still works for you.
 
 Yes, testsuite results still works as expected.
 
 One note for the case-separator in tests/versioning.at to remember:
 LDFLAGS may contain both ':' and ',' eventually. OTOH, to break here
 LDFLAGS value would need to be invalid anyway (sth. like -Wl,,).

Good point, I hadn't considered that when I changed your patch to match the
Libtool style precedent.  However, I think it would take an exceptionally
pathological case to actually fall into the wrong branch of the case statement,
so I'm inclinded not to worry about it just yet.

 Thank you so much!

No problem!

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)




Re: [PATCH] make freebsd-elf version type similar to linux version type

2014-12-04 Thread Gary V. Vaughan
Hi Tijl,

 On Dec 4, 2014, at 9:00 AM, Tijl Coosemans t...@freebsd.org wrote:
 
 On Thu, 27 Nov 2014 18:59:56 +0100 Tijl Coosemans t...@freebsd.org wrote:
 --- a/m4/libtool.m4
 +++ b/m4/libtool.m4
 @@ -2543,7 +2543,8 @@ freebsd* | dragonfly*)
   version_type=freebsd-$objformat
   case $version_type in
 freebsd-elf*)
 -  library_names_spec='$libname$release$shared_ext$versuffix 
 $libname$release$shared_ext $libname$shared_ext'
 +  library_names_spec='$libname$release$shared_ext$versuffix 
 $libname$release$shared_ext$major $libname$shared_ext'
 +  soname_spec='$libname$release$shared_ext$major'
 
 This patch seems to have been committed without this soname_spec line.

Argh.  Sorry about that, and thanks for picking up the mistake.  Hopefully,
this also fixes the test failures reported on freebsds recently.

Please confirm that current master is behaving for you, and I'll put out
a patch release.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)




Re: [PATCH] AIX: Optional filename-based shlib versioning

2014-12-03 Thread Gary V. Vaughan
Hi Michael,

I sorry I forgot to thank you for this patch, which I applied in
time for the recent 2.4.4 release.

 On Nov 24, 2014, at 1:09 PM, Michael Haubenwallner 
 michael.haubenwall...@ssi-schaefer.com wrote:
 
 Support filename-based shared library versioning on AIX with the lib.so
 library filename extension, which is used with runtime linking only.
 Runtime linking is enabled by the -brtl linker flag for executables and
 the -G linker flag for Shared Objects. The behaviour is similar to
 Linux/SVR4 DT_SONAME, hence the name aix-soname=svr4.

Much appreciated!  I did make some slight edits after applying, so
please check that it still works for you.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)




Re: [PATCH] libtoolize.in: remove two umask 0

2014-11-28 Thread Gary V. Vaughan
Hi Tijl,

Thanks for the patches.  Applied already, and will be pushed as soon
as the test suite completes successfully.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)

 On Nov 27, 2014, at 5:59 PM, Tijl Coosemans t...@freebsd.org wrote:
 
 libtoolize --ltdl -c creates some files with write permissions for
 everybody because it sets umask 0 in two places.  This patch removes
 the umask commands.
 
 ---
 libtoolize.in | 12 ++--
 1 file changed, 2 insertions(+), 10 deletions(-)
 
 diff --git a/libtoolize.in b/libtoolize.in
 index d819470..530232d 100644
 --- a/libtoolize.in
 +++ b/libtoolize.in
 @@ -392,11 +392,7 @@ func_copy ()
 
 # Filters always take priority.
 if test -n $my_filter; then
 -  if $opt_dry_run || {
 -  ( umask 0
 -$SED -e $my_filter $my_srcfile  $my_destfile
 -  ) /dev/null 21
 -}
 +  if $opt_dry_run || $SED -e $my_filter $my_srcfile  $my_destfile 
 2/dev/null
   then
 func_notquiet_once $my_msg_var
 if $opt_verbose; then
 @@ -422,11 +418,7 @@ func_copy ()
 my_copy_msg=$my_copy_type file '$my_destfile'
 $opt_verbose  my_copy_msg=$my_copycmd $my_srcfile $my_destdir
 
 -if $opt_dry_run || {
 -( umask 0
 -  $my_copycmd $my_srcfile $my_destfile
 -) /dev/null 21
 -  }
 +if $opt_dry_run || $my_copycmd $my_srcfile $my_destfile /dev/null 
 21
 then
   func_notquiet_hdr $my_msg_var $my_copy_msg
 else
 -- 
 2.1.0
 
 




Re: [PATCH] ltdl: set libltdl_cv_need_uscore to yes on OS/2

2014-11-27 Thread Gary V. Vaughan
Hi,

 On Nov 27, 2014, at 4:53 AM, KO Myung-Hun kom...@gmail.com wrote:
 Gary V. Vaughan wrote:
 
 On 27 Nov 2014, at 02:47, KO Myung-Hun kom...@gmail.com wrote:
 I agree.
 
 Gary V. Vaughan wrote:
 I pushed the core of a new macro that does exactly that to M4 master just
 now.
 
 Would you let me know whether this works correctly on OS2 for you please?
 
 Of course. Unfortunately, however, it does not work. dlopen() in
 configure fails due to 'file not found'.
 
 Thanks for checking.  Can you tell me why it fails (module is not compiled 
 correctly;
 path argument to dlopen() is wrong), and maybe suggest what would fix it, 
 please?
 
 
 I've look into this problem. Module is not built. To build it, some
 additional variables are required. They are soname, libname,
 output_objdir. And archive_cmds on OS/2 consists of multi lines
 separated by ~. So when using it, quotation is needed. And to eval it
 the function such as func_execute_cmds is needed. In addition, make sure
 .libs exist before building a module.
 
 Finally, please remember that OS/2 does not support DLLs whose base name
 is longer than 8 characters.

Thanks for the swift and helpful feedback.  I pushed some new changes that 
should
address all of those issues.  Please let me know if anything is still wrong, and
in what way it is broken for you if so -- otherwise, I'll port this code into a
new libtool macro and make the next libtool release for m4 master to depend on.

I know I have some other issues you reported to work out in M4, but I'd like to
clear this one up first so I can make the promised libtool release asap.

Many thanks for your help!

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Re: [PATCH] ltdl: set libltdl_cv_need_uscore to yes on OS/2

2014-11-26 Thread Gary V. Vaughan
Hi!

 On 27 Nov 2014, at 02:47, KO Myung-Hun kom...@gmail.com wrote:
 
 Hi/2.
 
 Gary V. Vaughan wrote:
 Hi,
 
 Thanks for the report and the patch!
 
 On Nov 22, 2014, at 4:08 AM, KO Myung-Hun kom...@gmail.com wrote:
 
 On OS/2, dlopen() does not support a program. So libltdl_cv_need_uscore
 is set to unknown, but dlsym() requires an underscore prefix. So set
 libltdl_cv_need_uscore to yes on OS/2 if lt_cv_sys_symbol_underscore is
 yes and libltdl_cv_need_uscore is unknown.
 
 Actually, I think the real problem here is that LT_FUNC_DLSYM_USCORE is
 making the bad assumption that dlsym() only requires a leading symbol
 name underscore on machines where self dlopening works.
 
 Better than your suggested patch, we should really be checking whether
 dlsym of ordinary loadable module symbol names requires a leading underscore.
 
 I agree.
 
 I pushed the core of a new macro that does exactly that to M4 master just
 now.
 
 Would you let me know whether this works correctly on OS2 for you please?
 
 Of course. Unfortunately, however, it does not work. dlopen() in
 configure fails due to 'file not found'.

Thanks for checking.  Can you tell me why it fails (module is not compiled 
correctly;
path argument to dlopen() is wrong), and maybe suggest what would fix it, 
please?

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Re: [PATCH] question mark is extended regex for non-GNU grep

2014-11-21 Thread Gary V. Vaughan
On Nov 21, 2014, at 2:53 PM, Michael Haubenwallner 
michael.haubenwall...@ssi-schaefer.com wrote:
 
 On 11/21/2014 03:06 PM, Eric Blake wrote:
 On 11/21/2014 05:11 AM, Michael Haubenwallner wrote:
 Accepting \? for at-most-once in basic regex is a GNU grep extension,
 not accepted by AIX grep for example.
 * tests/libtool.at: Need EGREP for ? operator, and ? without \ then.
 With EGREP, need one more \ for $.
 
 Or, stick with GREP but use \{0,1\} instead of \?.
 
 Possible as well, thanks!
 /haubi/
 0001-question-mark-is-extended-regex-for-non-GNU-grep.patch

Applied and pushed on master, many thanks!
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Re: [PATCH] Fixed -fvisbility=hidden typo in a comment

2014-11-18 Thread Gary V. Vaughan
Hi Eric,

 On Nov 17, 2014, at 6:52 PM, Eric Blake ebl...@redhat.com wrote:
 On 11/17/2014 10:58 AM, Gary V. Vaughan wrote:
 On 17 Nov 2014, at 17:29, Vincent Lefevre vinc...@vinc17.net wrote:
 
 There are other
 ones in libtool, e.g. in NEWS:
 
 NEWS:607: propogate  == propagate
 NEWS:1101: modeled  == modelled
 
 The latter is a legitimate spelling (according to my British English 
 dictionary at least),
 but unfortunately the NEWS file is checksummed to prevent changes after a 
 release,
 so not easy to fix without tweaking the release process :-(
 
 It's possible to update the expected checksum when intentionally
 correcting old news entries.  Since you are using gnulib's maint.mk,
 look at the update-NEWS-hash target.

Thanks for the prod... I was too lazy to dig for the right target.

I've fixed the propagate mis-spelling too and updated the hash accordingly.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Re: [PATCH] Fixed -fvisbility=hidden typo in a comment

2014-11-17 Thread Gary V. Vaughan
Hi Vincent,

 On Nov 15, 2014, at 1:44 PM, Vincent Lefevre vinc...@vinc17.net wrote:
 
 Fixed -fvisbility=hidden typo in a comment.
 
 Signed-off-by: Vincent Lefevre vinc...@vinc17.net
 ---
 m4/libtool.m4 | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/m4/libtool.m4 b/m4/libtool.m4
 index 281e70f..6143541 100644
 --- a/m4/libtool.m4
 +++ b/m4/libtool.m4
 @@ -1840,7 +1840,7 @@ else
 #  endif
 #endif
 
 -/* When -fvisbility=hidden is used, assume the code has been annotated
 +/* When -fvisibility=hidden is used, assume the code has been annotated
correspondingly for the symbols needed.  */
 #if defined __GNUC__  (((__GNUC__ == 3)  (__GNUC_MINOR__ = 3)) || 
 (__GNUC__  3))
 int fnord () __attribute__((visibility(default)));
 -- 
 2.1.3

Nice catch! I had no idea people scrutinized the comments so carefully :-)

Applied and pushed.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Re: [PATCH] OS/2 patches

2014-11-04 Thread Gary V. Vaughan
Hi KO,

Very sorry for the immense delay in getting to this.

 On Nov 4, 2014, at 6:12 AM, KO Myung-Hun kom...@gmail.com wrote:
 
 Hi/2.
 
 I've rebased to master.

Awesome, and thanks for persevering :)

 Review, please...
 
 [PATCH 01/11] libtool: don't eliminate duplications in $postdeps and $predeps 
 on OS/2

no effect on systems other than *-os2*, applied

 [PATCH 02/11] libtool: support to link against static libraries on OS/2

same again, applied with minimal edits to pass `make syntax-check`

 [PATCH 03/11] ltdl: OS/2 uses other APIs to load a DLL than LoadLibrary() on 
 Windows

no effect on systems other than *-os2*, applied

 [PATCH 04/11] libtool: there is no need to relink DLLs on OS/2

same again, reworded commit message

 [PATCH 05/11] libtool: set lt_cv_deplibs_check_method to pass_all on OS/2

likewise

 [PATCH 06/11] libtool: support -Zxxx options used on OS/2

I have some concerns on letting all -Z options through, as this may affect other
compilers that I can't test, so I made -Z conditional on $host matching os2*.

 [PATCH 07/11] libtool: fix DLL creation/installation/uninstallation on OS/2

no effect an systems other than *-os2* again, applied with light edits to commit
message, comments and to fix failures with `make syntax-check`.

 [PATCH 08/11] libtool: add -os2dllname option

applied with some edits for English, and moving the NEWS entry to the correct
release

 [PATCH 09/11] libtool: support -export-symbols and -export-symbols-regex on 
 OS/2

no effect on systems other than *-os2*, applied with edits to pass `make 
syntax-check`

 [PATCH 10/11] libtool: support versioning on OS/2

likewise

 [PATCH 11/11] bootstrap: double quote an expression with a wildcard

imported to upstream bootstrap repo, and synchronised with libtool

Please check that everything still works for you as expected, as I don't have 
OS/2
to maintain the integrity of the OS/2 port.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Re: [PATCH] libtoolize: do not delete gnulib headers

2014-11-02 Thread Gary V. Vaughan
Hi Mike,

 On Oct 31, 2014, at 9:07 PM, Mike Frysinger vap...@gentoo.org wrote:
 
 These snippet/ headers are installed by gnulib, not libtool.  There's no
 reason libtool should be trying to delete these for us (and will break
 projects), so drop that logic.
 
 People who are using gnulib can use gnulib to update/manage these.
 
 * libtoolize.in (func_require_seen_libtool): Delete snippet/ header files
 from $all_pkgaux_files.
 
 Signed-off-by: Mike Frysinger vap...@gentoo.org
 ---
 libtoolize.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/libtoolize.in b/libtoolize.in
 index d819470..d0cbfb0 100644
 --- a/libtoolize.in
 +++ b/libtoolize.in
 @@ -1897,7 +1897,7 @@ func_require_seen_libtool ()
   # Do not remove config.guess, config.sub or install-sh, we don't
   # install them without --install, and the project may not be using
   # Automake.
 -  all_pkgaux_files=compile depcomp missing ltmain.sh snippet/_Noreturn.h 
 snippet/arg-nonnull.h snippet/c++defs.h snippet/warn-on-use.h
 +  all_pkgaux_files=compile depcomp missing ltmain.sh
   all_pkgmacro_files=argz.m4 libtool.m4 ltdl.m4 ltoptions.m4 ltsugar.m4 
 ltversion.in ltversion.m4 lt~obsolete.m4
   all_pkgltdl_files=COPYING.LIB Makefile Makefile.in Makefile.inc 
 Makefile.am README acinclude.m4 aclocal.m4 argz_.h argz.c config.h.in 
 config-h.in configure configure.ac configure.in libltdl/lt__alloc.h 
 libltdl/lt__dirent.h libltdl/lt__glibc.h libltdl/lt__private.h 
 libltdl/lt__strl.h libltdl/lt_dlloader.h libltdl/lt_error.h 
 libltdl/lt_system.h libltdl/slist.h loaders/dld_link.c loaders/dlopen.c 
 loaders/dyld.c loaders/load_add_on.c loaders/loadlibrary.c loaders/preopen.c 
 loaders/shl_load.c lt__alloc.c lt__dirent.c lt__strl.c lt_dlloader.c 
 lt_error.c ltdl.c ltdl.h ltdl.mk slist.c

Thanks for the patch.

Working backwards through my InBox I already applied Pavel Raiskup's identical
patch.  The fix will be in 2.4.4 in any case.

If you'd like me to credit you in the 2.4.4 ChangeLog alongside Pavel, just let
me know and I'll add a ChangeLog edit into build-aux/git-log-fix.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Re: libtool mailing lists

2014-10-31 Thread Gary V. Vaughan
Hii Pavel,

They've been working fine for me so far... CCed just to be sure! :-)

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)

 On 31 Oct 2014, at 07:57, Pavel Raiskup prais...@redhat.com wrote:
 
 Hi Gary, has something happened with libtool's mailing lists?  I was
 unable to send there an email yesterday (and I doubt I have done something
 bad;  apart from that I mistakenly did not re-add you to CC and
 reply-to-all did also not that for me).
 
 Pavel
 



Re: Add dynamic export support for tcc

2014-10-29 Thread Gary V. Vaughan
Hi Reuben,

 On Jul 31, 2014, at 4:55 PM, Reuben Thomas r...@sc3d.org wrote:
 
 The attached patch adds support for tcc's -rdynamic, the equivalent of GNU 
 ld's -Wl,--export-dynamic.

Sorry for the long delay.

I found this uncontroversial patch (and your other one) in my libtool archives, 
and applied it to master HEAD just now.

Unfortunately libtool-2.4.3 went out a day or two already, but I'm expecting to 
accumulate a few more patches against it over the next week or two, after which 
I'll roll libtool-2.4.4 including both your tcc patches.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Re: bug#16452: opt_duplicate_compiler_generated_deps is harmful on Solaris

2014-01-17 Thread Gary V. Vaughan
Hi Rainer,

On Jan 16, 2014, at 1:59 AM, Rainer Orth r...@cebitec.uni-bielefeld.de wrote:
 diff --git a/ltmain.sh b/ltmain.sh
 --- a/ltmain.sh
 +++ b/ltmain.sh
 @@ -976,7 +976,7 @@ func_enable_tag ()
 
 
   case $host in
 -*cygwin* | *mingw* | *pw32* | *cegcc*)
 +*cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* )
   # don't eliminate duplications in $postdeps and $predeps
   opt_duplicate_compiler_generated_deps=:
   ;;
 
 I think that patch should go into upstream libtool as well, although
 this won't help for all the copies of libtool already included in
 released packages.  As described in the PR, I'm uncertain how to move
 forward here.  Suggestions?

I took the liberty of writing a ChangeLog on your behalf.

Pushed, this will be in the incoming release as long as testing doesn't find
any issues.  Thanks.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



Re: libtool fails with uninstalled frameworks and the -F flag

2014-01-13 Thread Gary V. Vaughan
Hi Michael,

[moved to libtool-patches list]

On Jan 14, 2014, at 11:45 AM, Michael C. Grant m...@cvxr.com wrote:

 I'm trying to compile GNU Octave and its new Qt GUI on a Mac OSX with 
 Homebrew. Homebrew installs the Qt frameworks in 
 /usr/local/Cellar/qt/4.8.5/lib, so after some fiddling with the configure 
 script I get this:
 
 QT_LDFLAGS=-F/usr/local/Cellar/qt/4.8.5/lib
 QT_LIBS=-framework QtCore -framework QtGui -framework QtNetwork
 
 However, the libtool script does not handle the -F argument through properly, 
 so it is stripped out of the linking process.
 
 I created the following patch for the generated libtool script, which causes 
 libtool to treat -F exactly like it treats -L. This seems to do the trick.
 
 I did notice that scanning through past discussions that this has come up a 
 couple of times, but there is reluctance to provide full support for -F for 
 some reason. Perhaps the relative simplicity of this patch would convince you 
 to reconsider. I'm also discussing this with the Homebrew folks to see if 
 they would consider including in their formula, but they do prefer not to use 
 patches if they can help it.

Thanks for the patch.  Sorry I didn't reply to your earlier emails - I marked 
them for further attention, but didn't make the time to actually go back and 
respond.

My main worry is whether that changing libtool's treatment of -F is going to do 
something unexpected on another platform.  That said, apart from your 
conflating of -L and -F in the case branches with the patch you sent, I'm open 
to including it in the upcoming release if you don't mind reworking it a little?

Please keep the -L and -F branches separate, factoring the branch bodies into a 
shell function if necessary to prevent cut-n-pasting blocks of code between the 
two.  Bonus points if you could also make -F behave as before on all platforms 
but *-darwin*.

If you have github, I keep a mirror of libtool at 
http://github.com/gvvaughan/GNU-libtool, so that might be a more convenient way 
for you to submit a pull request than dropping patch attachments into the 
mailing list.

I have a couple of small fixes of my own that I need to polish and push, and 
then I'll do another round of platform testing to nail down what else is a 
show-stopper for a final pre-release.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: [SCM] GNU Libtool branch, master, updated. v2.4.2.444-2-g581d90b

2014-01-02 Thread Gary V. Vaughan
Hi Peter,

On Jan 3, 2014, at 11:55 AM, Peter Rosin p...@lysator.liu.se wrote:

 On 2014-01-02 01:32, Gary V. Vaughan wrote:
Peter's a7462c5 fix was applied to the generated bootstrap script
instead of the funclib.sh source, and had have been overwritten
the next time bootstrap was regenerated.
 
 Nice catch! As my feeble defense, I claim that there should have been a
 generated, do not edit comment in the files that are generated with
 funclib.sh. :-)

┌─┤gary@kamala│~/Dropbox/Projects/libtool--devo--0  

  ├!68795=grep -i 'do not edit' bootstrap   
│master│95e1f34│
## DO NOT EDIT THIS FILE, CUSTOMIZE IT USING A BOOTSTRAP.CONF ##
## DO NOT EDIT THIS FILE! ##

:-p

Joking aside, you're quite right, I'll shuffle the order of bootstrap.in
to leave that warning at the top, and remove the write bit from the
generated file.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: bootstrap breakage starting with fec7d87

2013-11-19 Thread Gary V. Vaughan
Hi Ozkan, Petor,

On Nov 19, 2013, at 11:57 PM, Peter Rosin p...@lysator.liu.se wrote:

 On 2013-11-19 10:08, Ozkan Sezer wrote:
 Starting with fec7d87 (funclib.sh: simplify version comparison
 functions) I am getting the following error from bootstrap:
 
 bootstrap:   error:   'makeinfo' version == 4.13 is too old
 bootstrap:'makeinfo' version = 4.8 is required
 
 9fd7b88 is fine.
 
 This is with Fedora 16, with grep-2.9-3.fc16.x86_64,
 sed-4.2.1-9.fc16.x86_64, and bash-4.2.37-1.fc16.x86_64
 
 
 Will this be fixed anytime soon?
 
 Yes, please.

Ouch, sorry about that.

 I came up with this patch, but I don't know how portable it is, so I would
 like someone knowledgeable to comment on it before pushing it...

I don't have access to any Windows environments, but your patch works
correctly for me on various flavours of  Mac OS, GNU/Linux, Solaris, HPUX,
and AIX -- I no longer have access to Tru64 Unix, SCO Unix or IRIX.

Thanks for the quick fix.  Assuming it works on cygwin, mingw and other
windows variants we support, please go ahead and push.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: bootstrap breakage starting with fec7d87

2013-11-19 Thread Gary V. Vaughan

On Nov 20, 2013, at 12:32 PM, Gary V. Vaughan g...@gnu.org wrote:

 Hi Ozkan, Petor,

^H^H^H^H^H^H^HPeter,  *blush*


signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: bug#15734: libtool 2.4.2.418 in UnixWare

2013-10-27 Thread Gary V. Vaughan
Hi Tim,

Thanks for the report.

On Oct 28, 2013, at 9:06 AM, Tim Rice t...@multitalents.net wrote:

 On Sun, 27 Oct 2013, Tim Rice wrote:
 
 | On Sun, 27 Oct 2013, Tim Rice wrote:
 | 
 |  
 |  UnixWare 7.1.4
 |  
 |  Things don't look so good on the alpha release.
 |  ..
 | To: bug-libt...@gnu.org
 | Subject: [GNU Libtool 2.4.2.418] testsuite: 9 10 11 15 16 18 21 122 
 123 124 125 129 failed
 |  ..
 | 
 | Saw this in the build log.
 | --
 |   GEN  libtoolize
 | UX:sed: ERROR: Command garbled:   s|^m4trace: -1- 
 AC_CONFIG_AUX_DIR[([]*||
 |   GEN  libltdl/argz.h
 | --
 
 This patch helps some.
 
 .
 --- libtool-2.4.2.418/Makefile.am.old 2013-01-25 20:19:11.0 -0800
 +++ libtool-2.4.2.418/Makefile.am 2013-10-27 12:13:43.776276925 -0700
 @@ -248,7 +248,7 @@
 ##  ##
 
 abs_aux_dir = `$(lt__cd) '$(srcdir)/$(aux_dir)'  pwd`
 -ltdl_ac_aux_dir = `$(extract_trace) AC_CONFIG_AUX_DIR 
 $(srcdir)/libltdl/configure.ac`
 +ltdl_ac_aux_dir = `SED=$(SED) $(extract_trace) AC_CONFIG_AUX_DIR 
 $(srcdir)/libltdl/configure.ac`
 
 configure_edit = $(bootstrap_edit) \
   -e '/^\. /s|@auxscriptsdir\@|'$(abs_aux_dir)'|g' \
 .
 
   To: bug-libt...@gnu.org
   Subject: [GNU Libtool 2.4.2.418] testsuite: 21 122 123 124 125 129 failed
 


Most of the remaining failures seem to be caused by the unset variable in the 
testsuite
getting set to ‘no’ rather than ‘unset’ or ‘:’ as was originally intended on 
your host.
However, Autotest already provides as_unset, so the following patch switches to 
that:

diff --git a/tests/demo.at b/tests/demo.at
index f1fd9a8..c0a1486 100644
--- a/tests/demo.at
+++ b/tests/demo.at
@@ -796,7 +796,7 @@ rm -f libhello.la hell$EXEEXT

 # If this check fails (i.e. the make succeeds), then the installed library
 # was used, which is wrong.
-AT_CHECK([$unset LIBTOOL LIBTOOLIZE; $MAKE hell$EXEEXT 
libhello_la_OBJECTS=hello.lo || (exit 1)],
+AT_CHECK([$as_unset LIBTOOL; $as_unset LIBTOOLIZE; $MAKE hell$EXEEXT 
libhello_la_OBJECTS=hello.lo || (exit 1)],
  [1], [ignore], [ignore])

 AT_CLEANUP
diff --git a/tests/testsuite.at b/tests/testsuite.at
index ecbdfc2..99122be 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -51,11 +51,6 @@ fi
 if test -n $to_tool_file_cmd; then
   configure_options=$configure_options 
lt_cv_to_tool_file_cmd=$to_tool_file_cmd
 fi
-if (FOO=bar; unset FOO) /dev/null 21; then
-  unset=unset
-else
-  unset=false
-fi
 : ${mkdir_p=$abs_top_srcdir/build-aux/install-sh -d}
 # Fix relative paths in $lt_INSTALL
 case $lt_INSTALL in
@@ -193,7 +188,7 @@ m4_define([LT_AT_CONFIGURE],
 m4_define([LT_AT_MAKE],
 [for target in m4_default([$1], [all])
 do
-  AT_CHECK([$unset LIBTOOL LIBTOOLIZE; $MAKE $target $2], [0], [ignore], 
[ignore])
+  AT_CHECK([$as_unset LIBTOOL; $as_unset LIBTOOLIZE; $MAKE $target $2], [0], 
[ignore], [ignore])
 done
 ])

I’ve pushed this patch already.

The remaining failure looks to be a similar problem to the sed issue you 
discovered but with
grep.  Since extract-trace is supposed to work standalone, I’ll find a way to 
have funclib.sh
find a suitable sed and grep, which will fix not only the problems your patch 
works on, but
also the remaining test failure, and no doubt similar latent bugs in other 
funclib.sh clients
(bootstrap and libtoolize).

Please, let me know if your still having issues after that.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: Patch for mips64 libtool.m4

2013-08-23 Thread Gary V. Vaughan
Hi Steve,

On Aug 20, 2013, at 4:35 AM, Steve Ellcey sell...@mips.com wrote:

 A user was trying to build the buildroot product for mips64 with the -mabi=64
 option and ran into a libtool problem when building libiscsi because it calls
 the linker via libtool and the linker was defaulting to the n32 ABI instead of
 the 64 bit ABI.  This patch to libtool.m4 checks for the correct ABI to use
 like IA64, AIX, and other platforms already do and passes the correct 
 emulation
 mode into the linker.
 
 I am hoping someone can review this patch and check it in to libtool, though
 the list appears very quiet lately.

Thanks for the patch.  Applied.

I took the liberty of writing a ChangeLog entry for you, correcting some
syntax standards violations flagged by 'make syntax-check', and then massaging
a little to match the surrounding code better.  Please pull the latest revision
and check that I didn't break your patch in the process.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: Two-month patch ping: Re: powerpc*le-linux support

2013-08-22 Thread Gary V. Vaughan
Hi Brooks, Alan,

On Aug 22, 2013, at 12:59 AM, Brooks Moses bmo...@google.com wrote:

 Ping?
 
 (And adding libtool@, in hopes of getting a little more attention, as pings 
 on libtool-patches@ seem to be going nowhere.)
 
 On 06/05/2013 07:01 PM, Alan Modra wrote:
 This adds support for little-endian powerpc linux, and tidies the
 existing host match for powerpc.  config.sub won't return ppc*-*linux*
 so there isn't much point in matching that.
 
  * m4/libtool.m4 (ld -m flags): Remove non-canonical ppc host match.
  Support little-endian powerpc linux host.
 
 (http://lists.gnu.org/archive/html/libtool-patches/2013-06/msg1.html)
 
 It's been two and a half months since this patch was posted, without any 
 review or response.

My sincere apologies.  Sadly, your patch is among a backlog of unapplied 
patches that
are growing faster than I can keep up alongside my current workload :(

 Can we please get this simple patch pushed?

Done.

 I understand maintainers becoming busy and/or moving on to other things and 
 being unable to keep up -- I've been there, too.  What can we do to help?

Thank you immensely for your extreme patience.

The problem has become triaging the unapplied patches from the mailing-list.

My involvement with libtool has almost always been new features and release
management, and extremely sporadic (I work on libtool a lot in bursts of a
month or two here and there, between long gaps of several months) - which has
been fine until recently, because there have always been sufficient maintainers
to keep up with the backlog.  That is obviously no longer the case :(

Would you, or anyone else you know be interested in helping with the somewhat 
dull,
but very important process of applying patches that obviously move libtool 
forward,
asking for revisions to patches that could be useful but are obviously lacking 
in
some way, and flagging the rest for further review by me (in the remaining non-
obvious cases)? That would help immensely in getting libtool over the current 
state
of stagnation…

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: powerpc*le-linux support

2013-08-22 Thread Gary V. Vaughan
On Aug 22, 2013, at 2:59 PM, Peter Rosin p...@lysator.liu.se wrote:
 Hi!
 
 Ok, Gary pushed something while I wrote this, but I'm sending it
 anyway since what he pushed didn't look quite right to me…

Argh.  I pasted the patch from my browser to a terminal to save hunting
my archives for the original email, and mangled the hunks during application.
I pushed a fix too, so that the last two commits do match the original
patch.

 On 2013-06-06 07:18, Alan Modra wrote:
 On Thu, Jun 06, 2013 at 11:31:34AM +0930, Alan Modra wrote:
 This adds support for little-endian powerpc linux, and tidies the
 existing host match for powerpc.  config.sub won't return ppc*-*linux*
 so there isn't much point in matching that.
 
 - ppc*-*linux*|powerpc*-*linux*)
 + powerpcle*)
 +   LD=${LD-ld} -m elf64lppc
 +   ;;
 + powerpc*)
 LD=${LD-ld} -m elf64ppc
 ;;
 
 I didn't get that quite right.  'powerpc*' in the above matches too
 much, for example when your host is powerpc64-linux and target
 powerpc64le-linux you'll get -melf64ppc added to LD.  Since
 powerpc64le-linux-ld wants -melf64lppc (or nothing) that will fail.
 Revised as follows.
 
  * m4/libtool.m4 (ld -m flags): Remove non-canonical ppc host match.
 
 The macro/function you are changing is _LT_ENABLE_LOCK, so that should be
 
   * m4/libtool.m4 (_LT_ENABLE_LOCK): …

Agreed.  I should have checked and changed that on commit, my bad.

  Support little-endian powerpc linux host.
 
 diff --git a/m4/libtool.m4 b/m4/libtool.m4
 index d7013c5..501246d 100644
 --- a/m4/libtool.m4
 +++ b/m4/libtool.m4
 @@ -1307,7 +1307,7 @@ ia64-*-hpux*)
   rm -rf conftest*
   ;;
 
 -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
 +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
 s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;'  conftest.$ac_ext
 @@ -1328,7 +1328,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
  ;;
  esac
  ;;
 -  ppc64-*linux*|powerpc64-*linux*)
 +  powerpc64le-*)
 +LD=${LD-ld} -m elf32lppclinux
 +;;
 +  powerpc64-*)
  LD=${LD-ld} -m elf32ppclinux
  ;;
s390x-*linux*)
 
 All other inner cases match one of the outer or-ed expressions (i.e.
 from the first hunk) quite closely, but the outer match is still
 powerpc*-*linux* while the inner match has dropped the trailing
 -*linux* part. I would have kept them in sync.

The other branches are inconsistent here too, so either is fine IMHO.

 This also made me think
 about the 32-bit case; is there no le variant for 32-bit powerpc?
 Compare with the x86_64 case just above this hunk. To me, it seems as
 if -m elf32lppclinux should be added to $LD at least in some case?

That's only because I fumbled the initial commit.  The original patch
catches ppcle on 32 and 64 bit legs of that case statement.

 When you build 32-bit output and $host is 64-bit, you need to specify
 endianess (elf32lppclinux or elf32ppclinux). When you build 64-bit
 output and $host is 64-bit, you need to specify endianess (elf64lppc
 or elf64ppc). I miss the case when you build 32-bit output and $host
 is 32-bit, i.e. something like the below (assuming $host is
 powerpcle-* and powerpc-* for 32-bit) at the end of the second hunk:
 
 +   powerpcle-*linux*)
 + LD=${LD-ld} -m elf32lppclinux
 + ;;
 +   powerpc-*linux*)
 + LD=${LD-ld} -m elf32ppclinux
 + ;;
 
 If there is no 32-bit le powerpc variant (why wouldn't there be?), then
 the subject is somewhat misleading when le is only handled for 64-bit
 hosts.
 
 @@ -1347,7 +1350,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*)
  LD=${LD-ld} -m elf_x86_64
  ;;
 -  ppc*-*linux*|powerpc*-*linux*)
 +  powerpcle-*)
 +LD=${LD-ld} -m elf64lppc
 +;;
 +  powerpc-*)
  LD=${LD-ld} -m elf64ppc
  ;;
s390*-*linux*|s390*-*tpf*)
 
 
 
 Or what am I not getting? I'm probably just ignorant...ö

Without access to ppc linux compilers and cross compilers, I only ran
the test suite on my Mac before committing, which doesn't exercise any
of the changes, but is at least a sanity check against syntax errors or
similar breakage.

Alan, your patch is already a step forward in providing the support you
need without breaking anything else, so I'm happy to have committed it
finally.  Peter, your point about cross compiling between the 32bit and
64bit APIs is valid too, so I'd be even happier to apply a follow-up that
handles those cases too.

Unfortunately, we still need to figure out a plan to handle the patch
backlog problem that left the original in limbo for so long.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: Two-month patch ping: Re: powerpc*le-linux support

2013-08-22 Thread Gary V. Vaughan
Hi Peter,

On Aug 22, 2013, at 2:54 PM, Peter Rosin p...@lysator.liu.se wrote:

 On 2013-08-22 09:40, Gary V. Vaughan wrote:
 Can we please get this simple patch pushed?
 
 Done.
 
 To me, it appears as if what you actually pushed was not what was posted?

I am an idiot.  Thanks for the heads up, fixed in the following change set.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: powerpc*le-linux support

2013-08-22 Thread Gary V. Vaughan
Hi Peter,

On Aug 22, 2013, at 3:19 PM, Gary V. Vaughan g...@gnu.org wrote:
 All other inner cases match one of the outer or-ed expressions (i.e.
 from the first hunk) quite closely, but the outer match is still
 powerpc*-*linux* while the inner match has dropped the trailing
 -*linux* part. I would have kept them in sync.
 
 The other branches are inconsistent here too, so either is fine IMHO.

Oh, I see what you mean, and I agree.  I was fixating on the *linux*
suffix.  Fixed, thanks.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: Two-month patch ping: Re: powerpc*le-linux support

2013-08-22 Thread Gary V. Vaughan
Hi Peter,

On Aug 22, 2013, at 8:58 PM, Peter Rosin p...@lysator.liu.se wrote:
 On 2013-08-22 10:20, Gary V. Vaughan wrote:
 On Aug 22, 2013, at 2:54 PM, Peter Rosin p...@lysator.liu.se wrote:
 On 2013-08-22 09:40, Gary V. Vaughan wrote:
 Can we please get this simple patch pushed?
 
 Done.
 
 To me, it appears as if what you actually pushed was not what was posted?
 
 I am an idiot.  Thanks for the heads up, fixed in the following change set.
 
 Still not right though, sorry.

Indeed.  I am still an idiot.  I am the one who needs to apologise here, thank
you for paying attention and catching it so quickly.

Note to self: make sure to only apply patches directly from emails from now on.

 You ended up doing:
 
 -   ppc64-*linux*|powerpc64-*linux*)
 +   powerpcle-*)
 + LD=${LD-ld} -m elf32lppclinux
 + ;;
 +   powerpc-*)
 
 but the original wanted:
 
 -   ppc64-*linux*|powerpc64-*linux*)
 +   powerpc64le-*)
 + LD=${LD-ld} -m elf32lppclinux
 + ;;
 +   powerpc64-*)
 
 But, the originally supplied version confuses me yet again, so I'm not
 committing the fix myself...
 
 How can it be correct to say -m elf32lppclinux (32-bit) when $host is
 explicitly 64-bit? That seems like utter garbage to me. What am I
 missing this time?

I don't get it either, and I can't test it.  I trust the ppcle community
will commence shouting if the patches have done something horrible. However,
if there is any nonsense here, it predates my recent patch butchering,
because even the pre-patched code seems to mix 32bit and 64bit concepts
liberally.

If someone would like to apply (or send me) a patch that adds a comment
explaining why this code needs to look so odd, that would be very helpful!

Hopefully the repository at least reflects the changes you wanted now in
any case.  Sorry for the earlier sloppiness.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: Two-month patch ping: Re: powerpc*le-linux support

2013-08-22 Thread Gary V. Vaughan
Hi Alan,

Thanks for the fast feedback.

On Aug 22, 2013, at 10:48 PM, Alan Modra amo...@gmail.com wrote:
 On Thu, Aug 22, 2013 at 09:34:10PM +0700, Gary V. Vaughan wrote:
 How can it be correct to say -m elf32lppclinux (32-bit) when $host is
 explicitly 64-bit? That seems like utter garbage to me. What am I
 missing this time?
 
 As far as I understand, this piece of libtool is supplying ld options
 when your host compiler defaults to something other than what $host
 implies.  Which sounds very strange, but consider that on a
 powerpc64-linux host your gcc will usually compile to both 32-bit and
 64-bit objects.  Both 32-bit and 64-bit objects will run on the host,
 and whether gcc produces 32-bit by default (most common a few years
 ago) or 64-bit (most common now), depends on how gcc was configured.
 
 So if $host is powerpc64-linux and $CC is gcc and gcc produces 64-bit
 by default, and $LD is powerpc64-linux-ld then no ld options are
 needed.  When generating 32-bit libraries on this system, $host is
 powerpc-linux, $CC is still gcc, and $LD may be powerpc-linux-ld.
 That's a problem because $CC with no options produces 64-bit objects
 but $LD with no options is expecting 32-bit.
 
 This is all somewhat of a guess on my part, but I've seen these $LD
 and $CC selections.  Most configure scripts seem to prefer
 powerpc64-linux-ld over plain ld when $host is powerpc64-linux,
 and similarly powerpc-linux-ld for $host of powerpc-linux.
 
 I don't get it either, and I can't test it.

Thanks for the explanation, I finally do get it.  Phew :)

  I trust the ppcle community
 will commence shouting if the patches have done something horrible.
 
 It's broken.  Please apply exactly the tested patch I submitted, or if
 powerpc-* and similar in the switch statement is somehow the wrong
 style (we've tested for powerpc*-*linux* already!), then make them
 powerpc-*linux*.  Not powerpc*-*linux*, which is exactly the same
 mistake I made with my first patch..

I believe I already fixed it with the most recent amendment committed
under your name (exactly by removing the errant * from the case branch
matches).  Please pull the most recent revision and let me know if I still
didn't fix everything I broke recently.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: [patch] Comments for linker-option section, was Re: powerpc*le-linux support

2013-08-22 Thread Gary V. Vaughan
Hi Brooks,

On Aug 23, 2013, at 5:52 AM, Brooks Moses bmo...@google.com wrote:
 Based on Alan's explanation and what I could tell from looking at the code, 
 I've tried to expand the comments to explain what's going on, as per the 
 attached patch.  Does this look like a useful improvement to the situation?

Perfect!

And applied.  Many thanks.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


signature.asc
Description: Message signed with OpenPGP using GPGMail


Re: bug#13414: Valid DLL def file mangled by libtool

2013-01-18 Thread Gary V. Vaughan
Hi Peter,

Thanks for working on this.

On 19 Jan 2013, at 05:55, Peter Rosin p...@lysator.liu.se wrote:
 On 2013-01-12 01:26, Peter Rosin wrote:
 On 2013-01-11 12:34, Martin Doucha wrote:
 I'd like to report a bug in libtool 2.4 (including the latest git revision) 
 which mangles valid DLL def files under MinGW and makes the linker barf.
 
 This issue has been reported before [1].
 
 So, as hinted above, I'm following up with a pair of patches that
 appear to mend this.
 
 Ok to push?

By inspection, these patches look good to me - presuming there are no 
regressions, please go ahead.

One nit: your new test has a Copyright notice starting at 2007 followed by 
written in 2013. The new code doesn't look derivative of existing tests, so 
I'd suggest deleting the years prior to 2013 before pushing.

 Or are the white-space changes in the first patch too intrusive?

If you would like to separate those into a separate patch then please feel 
free; but I'd rather see functional progress in Libtool development than being 
overly anal about changeset minutiae for potential future git archaeology at 
the expense of using your Libtool hacking time more wisely :)

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Re: [PATCH] Add Bitrig support

2013-01-02 Thread Gary V. Vaughan
Hi Brad,

On 2 Jan 2013, at 15:17, Brad Smith b...@comstyle.com wrote:
 On Wed, Jan 02, 2013 at 01:31:15AM +0700, Gary V. Vaughan wrote:
 The patch content looks innocuous enough to me, and I'd like to commit
 it to master... but first, would you mind regenerating agaist current
 git master (ltmain.m4sh does not exist any more!), and also writing a
 commit log entry suitable for inclusion in the generated ChangeLog
 file at release time?
 
 How about the following?
 [[patch content snipped]]

Thanks, yes that's much easier to apply.

I took the liberty of editing the patched code very lightly to maintain
alphabetical ordering where possible, and your tweaking your NEWS and
ChangeLog entries to match existing style.  The git commit hook will post
that version to libtool-com...@gnu.org presently so you can compare.

Please let me know if I broke anything during editing.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



Re: [PATCH] Add Bitrig support

2013-01-01 Thread Gary V. Vaughan
Hi Brad,

On 29 Dec 2012, at 08:50, Brad Smith b...@comstyle.com wrote:
 On Tue, Aug 21, 2012 at 11:50:21PM -0400, Brad Smith wrote:
 The following diff adds support for Bitrig, which is a
 fork of OpenBSD.
 
 ping.

Thanks for the patch, and sorry for the delay in reviewing it.

The patch content looks innocuous enough to me, and I'd like to commit
it to master... but first, would you mind regenerating agaist current
git master (ltmain.m4sh does not exist any more!), and also writing a
commit log entry suitable for inclusion in the generated ChangeLog
file at release time?

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)





Re: [RFC] Fix libltdl preloader issues with MSVC

2012-10-19 Thread Gary V. Vaughan
Hi Peter,

On Oct 20, 2012, at 4:06 AM, Peter Rosin p...@lysator.liu.se wrote:
 With the latest dumpbin work in place, libtool starts to add
 symbols from import libraries to the generated fooS.c files
 in func_generate_dlsyms, as needed by the preloader. And then
 the next problem naturally rears its head. This time it is
 the age-old data exports problem responsible for code such
 as this (in demo.at):
 
 else if (STREQ (nothing, name))
 #ifndef _WIN32
  /* In an ideal world we could do this... */
  pnothing = (int*)s-address;
 #else /* !_WIN32 */
  /* In an ideal world a shared lib would be able to export data */
  pnothing = (int*)nothing;
 #endif
 
 I.e., demo.at isn't even trying to use the data symbol from the
 preloader, it just picks data up directly using the import
 library on Windows. Which is of course cheating and circumvents
 the API etc etc. However, MinGW has long supported pseudo-relocs
 and anto-import and the Ideal world case should work just fine
 with gcc even on _WIN32. But not with MSVC, which fails to link
 since data symbols from import libraries are not declared
 __declspec(dllimport).

That's because demo stems from the original test code that Gord
wrote over 15 years ago alongside the embryonic preloading
implementation, all before the current API was available! :)

Having said that, it's kinda nice to have this test of the low-level
structure of preloaded library data, although calling it demo might
seem like we're still encouraging folk to use preloaded libraries
this way :(  If you feel inclined to move the existing low-level tests
aside and rename them to something less inviting, and then rewrite
the demo tests to actually use the API that would be great for our
test coverage too!

 Example from demo.at:
 
 helldl.exeS.obj : error LNK2001: unresolved external symbol _nothing
 
 Fixing that, and making data symbols __declspec(dllimport) is
 however not the entire solution, as that yields:
 
 helldl.exeS.c(47) : error C2099: initializer is not a constant
 
 during compilation instead.
 
 The underlying problem is that MSVC does not have pseudo-relocs.

More hoops to jump through at the Microsoft circus.  Hurray!

 So, this patch adds an @INIT@ entry to the preloader symbol
 table, with the address of a function that is intended to do the
 relocations of data items from user-provided code instead of
 relying on the tools. This function is then filled with
 relocation code for MSVC, but left empty everywhere else
 where it is not needed.
 
 This is clearly not a finalized patch (it's actually pretty
 rough), it's just proof of concept. I have e.g. not optimized
 it, but it is clearly possibly to set the @INIT@ address to
 NULL and don't call @INIT@ at all in non-MSVC cases. It should
 also not be necessary to relocate data symbols from static
 libraries from user code, and it should be possible to add a
 done variable to the relocation function, so that it only
 does the work once.
 
 What I'm looking for is feedback. Is it acceptable to add a
 new virtual @INIT@ entry like this?  I.e. is this approach
 workable or should I just drop it?

I have no objections, except perhaps that it would be good to check
that the ABI doesn't stop pre-patch libltdl from preloading libraries
built with post-patch libtool.  But that's likely overly pedantic of me,
since I don't think anyone is likely to preload libraries built from a
different package (potentially using different libtool versions)... but
if it's easy to be compatible, we might as well do that.

I can't think of any other use for @INIT@ than beating MSVC into
submission, but as long as you can do the final implementation
cleanly enough that it doesn't force all the well behaved platforms
to carry around dead weight for MSVC (eg not adding @INIT@ to
the symbol list when it's not going to be used), and that we can keep
everything nicely separated so that people who don't need to
understand it to contribute in other areas can easily skip past... then,
sure, go right ahead :)

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



Re: git-version-gen w/o git

2012-10-18 Thread Gary V. Vaughan
On Oct 18, 2012, at 7:50 PM, Peter Rosin p...@lysator.liu.se wrote:
 Hi!

Hi Peter,

 I used to use a libtool git checkout from a platform that lacks
 git [MSYS], but that broke at some point. I would like something
 like the below to unbreak my work flow.
 
 Please?
 [[patches snipped]]

That looks like a reasonable request, useful to more folks than
just you.  You should propose your patches to bug-gnu...@gnu.org,
and when accepted, add the extra support on this side if necessary.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



Re: Windows Line Endings

2012-10-06 Thread Gary V. Vaughan
Hi Peter,

On 6 Oct 2012, at 06:20, Peter Rosin p...@lysator.liu.se wrote:
 And lastly libtool.at. It is only \' that is a problem. If I take
 that char out of the backslashified list, the test is ok.
 Another data point is that if I replace the grep on line 110 like
 this:
 -LT_AT_CHECK([$EGREP 
 $mode:.*$match_preflag\?$flag\\$mchar:test\\$mchar\?  stdout], 
 [0], [ignore])
 +LT_AT_CHECK([$EGREP 
 $mode:.*$match_preflag\?$flag$mchar:test$mchar\?  stdout], [0], 
 [ignore])
 it is ok for \ and \', but not for \$ and \\.

Actually the \\$ is my mistake, since the point of using LT_AT_CHECK
rather than straight AT_CHECK is to echo the expanded output to the
testsuite.log before executing the test, and escaping the $ like that
defeats the expansion.

 Looking at LT_ESCAPE in testsuite.at (which is expanded as part of
 LT_AT_CHECK), it seems to handle \` specially, but not $.

Interesting.  Then it looks like it is the echo expansion in LT_AT_CHECK
that is tripping Windows $SHELL, so moving to straight AT_CHECK will
remove that problem...

 My $EGREP is GNU grep 2.6.3 on Cygwin, and GNU grep 2.5.4 on MinGW.
 
 I don't have enough quotefuu to fix this.

Changing all LT_AT_CHECK to AT_CHECK for the tests formerly in quote.test
and removing the extra \\ before $ doesn't regress on Mac, where make
distcheck still succeeds.

I'll push if you can confirm that it fixes the test on Windows for you,
otherwise we'll have to wait until I have a Windows test environment to
figure out what I'm missing.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Re: Windows Line Endings

2012-10-06 Thread Gary V. Vaughan

On 6 Oct 2012, at 14:05, Gary V. Vaughan g...@gnu.org wrote:

 Hi Peter,
 
 On 6 Oct 2012, at 06:20, Peter Rosin p...@lysator.liu.se wrote:
 And lastly libtool.at. It is only \' that is a problem. If I take
 that char out of the backslashified list, the test is ok.
 Another data point is that if I replace the grep on line 110 like
 this:
 -LT_AT_CHECK([$EGREP 
 $mode:.*$match_preflag\?$flag\\$mchar:test\\$mchar\?  stdout], 
 [0], [ignore])
 +LT_AT_CHECK([$EGREP 
 $mode:.*$match_preflag\?$flag$mchar:test$mchar\?  stdout], [0], 
 [ignore])
 it is ok for \ and \', but not for \$ and \\.
 
 Actually the \\$ is my mistake, since the point of using LT_AT_CHECK
 rather than straight AT_CHECK is to echo the expanded output to the
 testsuite.log before executing the test, and escaping the $ like that
 defeats the expansion.
 
 Looking at LT_ESCAPE in testsuite.at (which is expanded as part of
 LT_AT_CHECK), it seems to handle \` specially, but not $.
 
 Interesting.  Then it looks like it is the echo expansion in LT_AT_CHECK
 that is tripping Windows $SHELL, so moving to straight AT_CHECK will
 remove that problem...
 
 My $EGREP is GNU grep 2.6.3 on Cygwin, and GNU grep 2.5.4 on MinGW.
 
 I don't have enough quotefuu to fix this.
 
 Changing all LT_AT_CHECK to AT_CHECK for the tests formerly in quote.test
 and removing the extra \\ before $ doesn't regress on Mac, where make
 distcheck still succeeds.

Scratch that, on closer inspection there are a couple of thinkos and
portable quoting errors in the original port of quote.test to Autotest.

 I'll push if you can confirm that it fixes the test on Windows for you,
 otherwise we'll have to wait until I have a Windows test environment to
 figure out what I'm missing.

I've pushed what I think is the correct fix.  Let me know if you still
have issues with the test.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Re: [PATCH] tests: feed -no-undefined when linking libtool libraries

2012-10-05 Thread Gary V. Vaughan
Hi Peter,

On Oct 3, 2012, at 4:53 PM, Peter Rosin p...@lysator.liu.se wrote:
 On 2012-10-03 05:45, Gary V. Vaughan wrote:
 On Oct 3, 2012, at 12:32 AM, Peter Rosin p...@lysator.liu.se wrote:
 I just fired up a test suite run...
 
 Good news! Clean runs on Cygwin, MSYS/MinGW and MSYS/MSVC.

Awesome.

I'll push the merge now, along with some other resurrected patches that
got stuck in the review queue last year.

 Now into nitpicking and other useless ramblings...
 
 The patch libtool: unroll nested if into a single case statement has
 whitespace issues (leading spaces instead of tabs on a few lines), and it
 should perhaps use a simple catch-all * (retaining the fast_install is
 set to needless comment) as the last case instead of *,needless that
 you have put there. But I guess it's harmless as $fast_install is not any
 random string, sans hacks, so no rereredo request from me, just a
 nitpick that I saw when reviewing the libtool: ... changes at the
 tip of gary/reredo-test-operand-order. Can always be cleaned up later,
 if someone has the energy.

Agreed on all counts.  Having now split out all the unrelated patches has me
wondering how on earth all that extra crud got in there... especially since 
every
review used to be like a few weeks on the rack.

 I also wonder about the relationship between libtool: fold if into a
 compound OR statement when more readable and the next commit libtool:
 simplify multiple string tests. What I mean is that about half the
 tests from the later commit fit the pattern of the first, why did you
 for example not change
 
if test yes,no = $avoid_version,$need_version; then
  major=
  versuffix=
  verstring=
fi
 
 into
 
test yes,no = $avoid_version,$need_version  {
  major=
  versuffix=
  verstring=
}
 
 (or some such) when you where at it? (but to me it looks like churn)

Yep :(  But, remember these changes are all to match the conflated original
changeset so that we end up with a useful diff showing errors in the original
that can be applied easily to the current tip of master.  That said, your
comments are more than valid, and a lot of that stuff shouldn't really have
gotten in and/or should have been done consistently.

With my newly self appointed benevolent dictator hat on, and the commit
process being infinitely less arduous as a result, I hope to come back and
undo some of this damage prior to freezing for the next release.

 Anyway, to sum up, I'm ok with merging reredo branch into master.
 Lets put this to rest now, thanks!

And thanks to you too :)

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Windows Line Endings [WAS Re: [SCM] GNU Libtool branch, master, updated. v2.4.2-273-ge24f183]

2012-10-05 Thread Gary V. Vaughan
Hi Peter,

Apologies for having entirely forgotten about the old thread reviewing
those patches first time around.

And thanks for looking into it.  Is there a legal way to get access
to Windows and the various flavours of gcc and MSVC that libtool users
care about, without spending hundreds of dollars on software I would
never use for anything else?  It pretty much sucks that everytime I
push a well tested (on various Unix varieties) patch, that Windows likes
to blow up gratuitously.  I don't mind wasting a bit of time checking
things on Windows, but I really don't want to also waste money on
Microsoft.

On 5 Oct 2012, at 22:21, Peter Rosin p...@lysator.liu.se wrote:

 The above looks just like a classic Windows failure. I.e. a line
 ending mismatch between the expout file created by the posixy
 shell (\n) and the Win32 program (\r\n) and I would guess that
 this is a problem that caused failures for Chuck last year as
 well.
 
 I think you need to use LT_AT_HOST_DATA instead of AT_DATA, where
 appropriate.
 
 Unfortunately, the below is not enough since LT_AT_HOST_DATA
 eats whitespace (  foo - foo) which affects depdemo.at,
 f77demo.at and fcdemo.at. mdemo.at also seems to have
 more trouble that I need to look into...

[[Patch snipped]]

I appear to have arrived at the same patch, and it still passes
make distcheck on Mac OS X.  So LT_AT_HOST_DATA must only eat
whitespace on Windows?  So the fix must be in the windows loop to
rewrite lines with \r\n.  What's wrong with using awk or sed to
inject the additional character rather than shell?  That would seem
to be the obvious solution to me:

  awk '{printf (%s\r\n, $0);}'  $1  $1.t  mv -f $1.t $1

(untested on Windows, but doesn't mess with whitespace on Mac or Linux)

Please do push patches that improve the situation for Windows rather
than holding out for a fix-all mega-patch.  This will allow us to
keep each other informed of breakages on platforms the other doesn't
have access to.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)




Re: Windows Line Endings

2012-10-05 Thread Gary V. Vaughan
Hi Eric,

On 5 Oct 2012, at 23:42, Eric Blake ebl...@redhat.com wrote:
 On 10/05/2012 10:03 AM, Gary V. Vaughan wrote:
 Is there a legal way to get access
 to Windows and the various flavours of gcc and MSVC that libtool users
 care about, without spending hundreds of dollars on software I would
 never use for anything else?  It pretty much sucks that everytime I
 push a well tested (on various Unix varieties) patch, that Windows likes
 to blow up gratuitously.  I don't mind wasting a bit of time checking
 things on Windows, but I really don't want to also waste money on
 Microsoft.
 
 If you are a fan of virtual machines, it is possible to set up qemu-kvm
 under Linux to run a default-60-trial of various Windows versions
 without having to pay for a license.  Microsoft also has a documented
 means of expanding that 60 days into 180 days, which means you can test
 Microsoft products at no monetary cost at the expense of reinstalling
 your virtual machine twice per year.

Thanks for the tip.  That's no different to a working Windows install
anyway... when I worked for a company that forced me to use Windows 95
to connect to their exchange server, it needed to be reinstalled at least
once a year even though all it did was run Out Look all day!

I actually run a lot of virtual machines on my Mac, including a couple
of versions of Mac OS and Linux, and I certainly wouldn't want to
squander perfectly good hardware on an OS that I don't use, and wasn't
aware of the 180 days trials, so I'll take a look into that next time I
have half a day spare.

Do they also have similar trials for MSVC?

Any idea what the least painful version of Windows for a VM is these days
(I'm guessing XP is still the best)?

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



Re: Windows Line Endings

2012-10-05 Thread Gary V. Vaughan
Hi Bob,

On 6 ต.ค. 2012, at 1:28, Bob Friesenhahn bfrie...@simple.dallas.tx.us wrote:
 On Sat, 6 Oct 2012, Gary V. Vaughan wrote:
 
 I actually run a lot of virtual machines on my Mac, including a couple
 of versions of Mac OS and Linux, and I certainly wouldn't want to
 squander perfectly good hardware on an OS that I don't use, and wasn't
 aware of the 180 days trials, so I'll take a look into that next time I
 have half a day spare.
 
 I just forked out $350 for Windows 7 to support free software development.  
 There just did not seem any way around it.  The pain is severe.

Ouch! I can't think of anything I'd like to waste $350 on less
than a piece of paper from Microsoft authorizing me to
depress myself by using their software! My Dell Mini came with Windows 
preinstalled, and cost only $255 from the Dell refurbished online store... of 
course the very first thing I did after taking delivery was reformat the disk 
and install a nicer OS. :-(

 Do they also have similar trials for MSVC?
 
 There is free MSVC (Visual Studio Express in Google) available. It is 
 really intended for .net/C# developers, but by following instructions on the 
 net and adding downloadable free SDKs (requires manually editing some 
 configuration files), one can create a Visual Studio capable of building C 
 and C++ code without spending any money.

Thanks for the tip, I'll look into that :-)

 Any idea what the least painful version of Windows for a VM is these days
 (I'm guessing XP is still the best)?
 
 Windows 7 runs very well in VirtualBox.  My wife has been running Windows 7 
 in VirtualBox running on Ubuntu for almost a year now.  I wouldn't recommend 
 that anyone start with XP these days since it is 12 years old, patched beyond 
 all repair, and quickly becoming defunct.

Apart from the number of years you quoted, isn't that true of every version of 
Windows? I think I might go with XP despite your advice though, as I notice 
that one of the stickers glued to my Dell Mini is an XP license number, 
although curiously I didn't get any reinstall media with the netbook - not that 
it contains a CD drive to reinstall from. I can probably find an XP disc at one 
of the street vendor stalls in the center of town for a couple of dollars 
though.

I will try to install it directly in Parallels, rather than in Virtual Box on 
GNU/Linux in Parallels on Mac OS, and then type in the number from the sticker 
on my netbook... and then I'll have to learn how to install mingw and MSYS.

 It is good that you are willing to suffer for the cause.  The cmake build 
 system is quickly becoming popular since it works well for Windows and it is 
 a threat to the GNU build system (as we know it).


We might have better staying power if the Autotools shipped together as a 
single project, and the integration was tight enough not to need a bootstrap 
script just to get things going...

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Re: Windows Line Endings

2012-10-05 Thread Gary V. Vaughan
Hi Peter,

On 6 Oct 2012, at 06:20, Peter Rosin p...@lysator.liu.se wrote:
 Over to mdemo.at. It fails on MinGW because I do not have
 any installed libltdl in MinGW. Temporarily moving the
 installed Cygwin libltdl out of the lib search path makes
 the test fail on Cygwin as well. So, I believe this is
 a generic failure.

Nice catch!  And thanks for the analysis, that allowed me to get to the root
of the problem pretty quickly:

Legacy mdemo{,2} tests tricked their respective builds into reusing the main
project's libltdlc.la, where I tried to retool the replacement Autotest to
do what a user would do and use the project's own ltdl subproject.  Only I
didn't remove all of the trickery while rewriting the test  :-(

 Without an installed libltdl, I get this
 during configure:
 
 checking where to find libltdl headers... -I$(top_srcdir)/libltdl
 checking where to find libltdl library... 
 $(top_build_prefix)libltdl/libltdlc.la
 
 and this when making:
 
 ../../libtool-msvc/tests/mdemo.at:646: $unset LIBTOOL LIBTOOLIZE; $MAKE 
 $target 
 stderr:
 Makefile:1090: warning: overriding commands for target `libltdl/libltdlc.la'
 Makefile:573: warning: ignoring old commands for target `libltdl/libltdlc.la'
 Makefile:1090: warning: overriding commands for target `libltdl/libltdlc.la'
 Makefile:573: warning: ignoring old commands for target `libltdl/libltdlc.la'
 libtool: link: cannot find the library `libltdl/libltdlc.la' or unhandled 
 argument `libltdl/libltdlc.la'
 make[1]: *** [libmlib.la] Error 1

This means LTDL_INIT is finding the ltdl subtree, but I forgot to remove the
Makefile.am trickery to point $(LIBLTDL) back to $(top_srcdir)/libltdl.

 On Cygwin, with the installed libltdl intact, I get this during
 configure:
 
 checking where to find libltdl headers... 
 checking where to find libltdl library... -lltdl
 
 (and the test is ok, in so far one can consider using the
 installed libltdl ok...)

And I also forgot to pass --with-included-ltdl to configure :(

 I'm also noting that some time ago, mdemo had this in it's
 Makefile.am:
 
 ## use @LIBLTDL@ because some broken makes do not accept macros in targets
 ## we can only do this because our LIBLTDL does not contain ${top_builddir}
 top_distdir = ../..
 @LIBLTDL@: $(top_distdir)/libtool \
$(top_distdir)/config.h $(srcdir)/$(top_distdir)/libltdl/ltdl.c \
$(srcdir)/$(top_distdir)/libltdl/ltdl.h
   (cd $(top_distdir); $(MAKE) `echo $(LIBLTDL) | sed 
 's,.*\.\./libltdl/,libltdl/,g'`)
 
 but somewhere along the way, that comment was removed, probably at
 the same time @LIBLTDL@ was converted into $(LIBLTDL). Anyway,
 mdemo.at has this:
 
 \$(LIBLTDL): ${top_build_prefix}libtool \
${top_build_prefix}config.h $top_srcdir/libltdl/ltdl.c \
$top_srcdir/libltdl/ltdl.h
   cd $top_build_prefix; \$(MAKE) \`echo \$(LIBLTDL) | sed 
 's|.*\.\./\.\./libltdl/|libltdl/|g'\`
 
 But the second line of the removed comment seems crucial and
 as our $(LIBLTDL) is not the expected libltdl/libltdlc.la,
 Automake is fooled into creating two targets for the same
 file. Or something.

Something.  This is the trickery I'm talking about, which needs removing
to let mdemo.at use it's own libltdl.

 Also, the old mdemo had LTDL_CONVENIENCE([../../libltdl]), and the
 new mdemo.at have LT_CONFIG_LTDL_DIR([libltdl]) and
 LTDL_INIT([nonrecursive]), which does not seem entirely equivalent?

Right, because I tried to convert from reusing top-level libltdlc.la to
actually building our own subproject libltdl per-test.

 I don't have enough autofuu to fix this.

I've pushed a patch that fixes all of the above.  Pending as-yet-undiscovered
Windows madness, I think that should allow the test to work on your test
environments too.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Re: [PATCH] tests: feed -no-undefined when linking libtool libraries

2012-10-02 Thread Gary V. Vaughan
Hi Peter,

Sorry for the delay, it was more complicated than I had imagined :-o

On 28 Sep 2012, at 11:08, Gary V. Vaughan g...@gnu.org wrote:
 On 27 ก.ย. 2012, at 5:03, Peter Rosin p...@lysator.liu.se wrote:
 On 2012-09-26 14:57, Peter Rosin wrote:
 On 2012-09-22 05:31, Gary V. Vaughan wrote:
 
 [Heavily snipped]
 
 Why not commit the sc_prohibit_test_const_follows_var improvement
 last, after fixing all violations?
 
 That doesn't make sense, sorry. But the idea would have worked
 initially, before the check first existed. I.e., write the check,
 fixup violations and commit in smaller digestible chunks, then
 finally commit the actual check preventing any new violations from
 creeping in.
 
 Even then, I'm on the fence, since that doesn't leave a revision to
 demonstrate that the syntax-check is finding the violations... on the
 other hand, we also don't want to push broken commits since that
 obviously screws up git bisection.

On reflection, I think I prefer to continue to commit a new syntax check
rule along with all the fixes necessary to make it pass.  Although, I'm
horrified by how much unrelated crap crept into 962aa91, and will not be
tackling any patches even close to this size by hand in future :(

 If not, I will branch before 962aa91, run the script, and then apply
 the rest of master to that branch one patch at a time until I arrive
 at a diff that I can apply to master itself, rather than using revert
 as I did on the current temporary branch.
 
 I have to say, given all these difficulties, is it really worth it?
 Besides, I think
 
 Hmmm, I said that in the wrong context. Your plan above seems like the
 best path forward. I guess I was too excited about the bugs and didn't
 read properly, sorry again about my poor communication skills.
 
 No apologies necessary.  I'm working on the revised redo, which will
 result in a much smaller patch for master later today or tomorrow.

It took me longer than anticipated due to being a lot more work after
untangling all those unrelated parts that I've split out on the branch.

The new branch gary/reredo-test-operand-order (notice the double re) has
everything broken down into digestible chunks.  All the differences between
that and master now look like improvements upon the original hand rolled
version made by my recent scripted revisions, or else outright errors in
the original corrected by the script.  All the errors you flagged on the
list are corrected, as well as several others.

Assuming my running 'make dist' doesn't have any regressions compared to
master, and unless you have additional problems with Windows using the
gary/reredo-test-operand-order branch, I plan to merge the differences
back into master in a day or two.

 Some of the noise between master and redo-test-operand-order are a bunch
 of hunks with this pattern:
 -   if test bar $op $foo; then
 +   if test bar $op $foo ; then
 
 Nice catch.  I already tweaked the script regexs to fix that once, but must
 have missed one of the ways for that to happen :(

The script was correctly keeping semi-colons with the same spacing as
was present prior to running the script.  The differences are because
I fixed the errant spacing manually in the original patch.

I'll write another syntax-check, and fix any remaining offenders after
master is fully up to date again.

 BTW, here is another strange-looking hunk from
 git diff master redo-test-operand-order
 
 diff --git a/m4/libtool.m4 b/m4/libtool.m4
 index 4413a6d..8ec9beb 100644
 --- a/m4/libtool.m4
 +++ b/m4/libtool.m4
 @@ -5563,7 +5563,7 @@ _LT_EOF
  ;;
esac
 
 -if test sni = $host_vendor; then
 +if test x$host_vendor = xsni; then
  case $host in
  sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
   _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym'
 
 What has caused the difference in this hunk? Why hasn't the script
 caught this instance? And why isn't the syntax-check triggered?
 Are the missing quotes the key here?
 
 Not sure... investigating now.

The lack of quotes on both sides was not picked up by my script
nor by the syntax check, although I made the manual changes in the
original patch.  Once the branches are back in sync, I'll beef
up the syntax check and fix any new violations it finds.

Thanks again for keeping me honest with this one.  Please let me
know if you'd like me to wait more than a day or two to give you
time to review.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)




Re: [PATCH] tests: feed -no-undefined when linking libtool libraries

2012-10-02 Thread Gary V. Vaughan
Hi Peter,

On Oct 3, 2012, at 12:32 AM, Peter Rosin p...@lysator.liu.se wrote:
 [snipped loads of stuff]

[snipped a bit more stuff]

 You're saying that you are about to:
 
 $ git checkout master
 $ git merge --strategy=recursive -X theirs gary/reredo-test-operand-order \
 -m 'bla bla bla'
 
 right?

Pretty much.  But that's just to show the merge in git history, the end
effect will be identical to having committed the diff back to master.

 Is that better than committing the diff between reredo-... and master
 as a revert-light? Why else would you have gone through all the trouble
 of making all the smaller commits in the first place?

It's better to show the branch merged in for future archaeology; the less
time anyone else has to waste staring at 962aa91, the better a place the
world will be.  And I'm all about making the world a better place! :-)

 I just fired up a test suite run...


Thanks!  I'm crossing my fingers -- I'll sleep a lot better when we've put
this one behind us.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



Re: [PATCH] tests: feed -no-undefined when linking libtool libraries

2012-09-27 Thread Gary V. Vaughan
Hi Peter,

On 27 ก.ย. 2012, at 5:03, Peter Rosin p...@lysator.liu.se wrote:
 On 2012-09-26 14:57, Peter Rosin wrote:
 On 2012-09-22 05:31, Gary V. Vaughan wrote:
 
 [Heavily snipped]
 
 Why not commit the sc_prohibit_test_const_follows_var improvement
 last, after fixing all violations?
 
 That doesn't make sense, sorry. But the idea would have worked
 initially, before the check first existed. I.e., write the check,
 fixup violations and commit in smaller digestible chunks, then
 finally commit the actual check preventing any new violations from
 creeping in.

Even then, I'm on the fence, since that doesn't leave a revision to
demonstrate that the syntax-check is finding the violations... on the
other hand, we also don't want to push broken commits since that
obviously screws up git bisection.

 If not, I will branch before 962aa91, run the script, and then apply
 the rest of master to that branch one patch at a time until I arrive
 at a diff that I can apply to master itself, rather than using revert
 as I did on the current temporary branch.
 
 I have to say, given all these difficulties, is it really worth it?
 Besides, I think
 
 Hmmm, I said that in the wrong context. Your plan above seems like the
 best path forward. I guess I was too excited about the bugs and didn't
 read properly, sorry again about my poor communication skills.

No apologies necessary.  I'm working on the revised redo, which will
result in a much smaller patch for master later today or tomorrow.

 Some of the noise between master and redo-test-operand-order are a bunch
 of hunks with this pattern:
 -   if test bar $op $foo; then
 +   if test bar $op $foo ; then

Nice catch.  I already tweaked the script regexs to fix that once, but must
have missed one of the ways for that to happen :(

 You should perhaps add a commit to redo-test-operand-order which silences
 that and makes other more substantial changes stand out more before you
 proceed with the above plan? There are perhaps other harmless changes
 that can be excluded from the light revert? Because who needs the
 oscillation?

Agreed.  It was all these edge cases that made me abandon the scripted
solution last year.  I'm working on improving the script first to catch this and
the other glitches you found.

 BTW, here is another strange-looking hunk from
 git diff master redo-test-operand-order
 
 diff --git a/m4/libtool.m4 b/m4/libtool.m4
 index 4413a6d..8ec9beb 100644
 --- a/m4/libtool.m4
 +++ b/m4/libtool.m4
 @@ -5563,7 +5563,7 @@ _LT_EOF
   ;;
 esac
 
 -if test sni = $host_vendor; then
 +if test x$host_vendor = xsni; then
   case $host in
   sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
_LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym'
 
 What has caused the difference in this hunk? Why hasn't the script
 caught this instance? And why isn't the syntax-check triggered?
 Are the missing quotes the key here?

Not sure... investigating now.

 The check is named sc_prohibit_test_const_follows_var, so one
 would guess that it should prohibit test x$foo = xbar, no? Or are
 you supposed to be able to dodge the check by needlessly adding x
 in front of LHS $variables?

Not at all.  But the long list of substitutions must be interacting
unexpectedly.  The idea is for the syntax-check rule to flag any of:

  test x$foo = xbar
  test x$foo = xbar
  test x$foo = xbar
  test x$foo = xbar
  test x$foo = xbar

where 'x' is one of '.', 'x', or 'X'.

I think we're getting much closer to a working solution though.  Many
thanks for taking the time to review.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Re: [PATCH] tests: feed -no-undefined when linking libtool libraries

2012-09-26 Thread Gary V. Vaughan
 Hi Peter,

Ping?

 On 19 Sep 2012, at 21:50, Peter Rosin p...@lysator.liu.se wrote:
 
 On 2012-09-19 16:20, Gary V. Vaughan wrote:
 Hi Peter,
 
 My bad, I'm embarrassed to say. I started to write a script to make the
 appropriate changes, but ended up doing it manually rather than adding
 more and more corner cases to the throwaway script... a poor choice in
 hindsight :-(
 
 It's easy to be wise after the fact... If you do redo it, may I suggest
 breaking up the patch in smaller pieces for bisectability?
 
 I've pushed a temporary branch called gary/redo-test-operand-order to
 savannah with seven changesets that reverts the manual version of the
 buggy original and redoes it with a painstaking awk script (also checked
 in, for the morbidly curious).
 
 I'm on the fence about committing in smaller pieces... the policy for
 libtool has always been to make sure the testsuite passes (at least
 on the committer's machine) for every changeset, so that bisecting
 using one of the test cases doesn't fail unexpectedly on another
 commit that was intentionally pushed with know failures.  On the other
 hand, the original was a monster, so I can see the benefits of splitting
 it up a bit too.
 
 
 I think it will be safer to revert the broken patch, and then
 write a script to reapply those changes automatically as I
 should have done originally, and only then to merge the result
 back to head. If you hold off for a few days, I'll do that as
 penance for my sins when I get back to my computer.
 
 I'm not sure a revert of such a big patch is possible after
 50-odd more patches? But I was thinking revert too after
 reading it for a while... Who knows what else hides in
 there?
 
 Well, I wrote and applied the script, diffed the results, and
 the testsuite has no regressions for me.  I get a weird failure
 in distcheck which tries to run distclean in _build/tests/cdemo
 aftec removing _build/tests/cdemo/Makefile, that I haven't had
 time to check against current master to see if it is a new regression
 caused by my patch.
 
 But please hold on to your test case to verify that I've made
 a better job of things on the do over.
 
 That's easy, on Cygwin:
make check-local TESTSUITEFLAGS=-k Runpath
 is supposed to PASS (not FAIL) and
make check-local TESTSUITEFLAGS=-k relpaths
 is supposed to XFAIL (not XPASS)
 
 (mentioning it here so that I don't forget myself)
 
 Cool.  When you have time, please let me know whether the temporary
 branch I made works properly for you.  I'll do some more regression
 testing, and if all goes well, I'll transplant the branch onto
 master.
 
 Commit v2.4.2-120-g962aa91
 syntax-check: fix violations and implement sc_prohibit_test_const_follows_var
 inadvertenty stomped some comparisons.
 
 * build-aux/ltmain.m4sh (func_mode_compile): Reverse test when checking
 if non-PIC is attempted in shared libraries.
 (func_mode_link): Check for dlprefiles, not dlfiles.
 (func_mode_link): Reverse test so that dependencies are checked when
 pass_all is not in effect.
 ---
 build-aux/ltmain.m4sh |6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/build-aux/ltmain.m4sh b/build-aux/ltmain.m4sh
 index 14f3c37..0b8defa 100644
 --- a/build-aux/ltmain.m4sh
 +++ b/build-aux/ltmain.m4sh
 @@ -1350,7 +1350,7 @@ func_mode_compile ()
  pic_mode=default
  ;;
esac
 -if test yes = $pic_mode  test pass_all != $deplibs_check_method; 
 then
 +if test no = $pic_mode  test pass_all != $deplibs_check_method; 
 then
  # non-PIC code in shared libraries is not supported
  pic_mode=default
fi
 @@ -5151,7 +5151,7 @@ func_mode_link ()
   fi
 
   # CHECK ME:  I think I busted this.  -Ossama
 -   if test dlfiles = $prev; then
 +   if test dlprefiles = $prev; then
 # Preload the old-style object.
 func_append dlprefiles  $pic_object
 prev=
 @@ -6191,7 +6191,7 @@ func_mode_link ()
 fi
   elif test yes = $build_libtool_libs; then
 # Not a shared library
 - if test pass_all = $deplibs_check_method; then
 + if test pass_all != $deplibs_check_method; then
   # We're trying link a shared library against a static one
   # but the system doesn't support it.
 
 
 My awk script also matches your changes in these hunks, so I'm
 moderately confident that it will have caught any other lurkers too.
 
 If not, I will branch before 962aa91, run the script, and then apply
 the rest of master to that branch one patch at a time until I arrive
 at a diff that I can apply to master itself, rather than using revert
 as I did on the current temporary branch.
 
 Cheers,
 -- 
 Gary V. Vaughan (gary AT gnu DOT org)
 



Re: [PATCH] tests: feed -no-undefined when linking libtool libraries

2012-09-21 Thread Gary V. Vaughan
Hi Peter,

On 19 Sep 2012, at 21:50, Peter Rosin p...@lysator.liu.se wrote:

 On 2012-09-19 16:20, Gary V. Vaughan wrote:
 Hi Peter,
 
 My bad, I'm embarrassed to say. I started to write a script to make the
 appropriate changes, but ended up doing it manually rather than adding
 more and more corner cases to the throwaway script... a poor choice in
 hindsight :-(
 
 It's easy to be wise after the fact... If you do redo it, may I suggest
 breaking up the patch in smaller pieces for bisectability?

I've pushed a temporary branch called gary/redo-test-operand-order to
savannah with seven changesets that reverts the manual version of the
buggy original and redoes it with a painstaking awk script (also checked
in, for the morbidly curious).

I'm on the fence about committing in smaller pieces... the policy for
libtool has always been to make sure the testsuite passes (at least
on the committer's machine) for every changeset, so that bisecting
using one of the test cases doesn't fail unexpectedly on another
commit that was intentionally pushed with know failures.  On the other
hand, the original was a monster, so I can see the benefits of splitting
it up a bit too.


 I think it will be safer to revert the broken patch, and then
 write a script to reapply those changes automatically as I
 should have done originally, and only then to merge the result
 back to head. If you hold off for a few days, I'll do that as
 penance for my sins when I get back to my computer.
 
 I'm not sure a revert of such a big patch is possible after
 50-odd more patches? But I was thinking revert too after
 reading it for a while... Who knows what else hides in
 there?

Well, I wrote and applied the script, diffed the results, and
the testsuite has no regressions for me.  I get a weird failure
in distcheck which tries to run distclean in _build/tests/cdemo
aftec removing _build/tests/cdemo/Makefile, that I haven't had
time to check against current master to see if it is a new regression
caused by my patch.

 But please hold on to your test case to verify that I've made
 a better job of things on the do over.
 
 That's easy, on Cygwin:
   make check-local TESTSUITEFLAGS=-k Runpath
 is supposed to PASS (not FAIL) and
   make check-local TESTSUITEFLAGS=-k relpaths
 is supposed to XFAIL (not XPASS)
 
 (mentioning it here so that I don't forget myself)

Cool.  When you have time, please let me know whether the temporary
branch I made works properly for you.  I'll do some more regression
testing, and if all goes well, I'll transplant the branch onto
master.

 Commit v2.4.2-120-g962aa91
 syntax-check: fix violations and implement sc_prohibit_test_const_follows_var
 inadvertenty stomped some comparisons.
 
 * build-aux/ltmain.m4sh (func_mode_compile): Reverse test when checking
 if non-PIC is attempted in shared libraries.
 (func_mode_link): Check for dlprefiles, not dlfiles.
 (func_mode_link): Reverse test so that dependencies are checked when
 pass_all is not in effect.
 ---
 build-aux/ltmain.m4sh |6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/build-aux/ltmain.m4sh b/build-aux/ltmain.m4sh
 index 14f3c37..0b8defa 100644
 --- a/build-aux/ltmain.m4sh
 +++ b/build-aux/ltmain.m4sh
 @@ -1350,7 +1350,7 @@ func_mode_compile ()
   pic_mode=default
   ;;
 esac
 -if test yes = $pic_mode  test pass_all != $deplibs_check_method; 
 then
 +if test no = $pic_mode  test pass_all != $deplibs_check_method; 
 then
   # non-PIC code in shared libraries is not supported
   pic_mode=default
 fi
 @@ -5151,7 +5151,7 @@ func_mode_link ()
fi
 
# CHECK ME:  I think I busted this.  -Ossama
 -   if test dlfiles = $prev; then
 +   if test dlprefiles = $prev; then
  # Preload the old-style object.
  func_append dlprefiles  $pic_object
  prev=
 @@ -6191,7 +6191,7 @@ func_mode_link ()
  fi
elif test yes = $build_libtool_libs; then
  # Not a shared library
 - if test pass_all = $deplibs_check_method; then
 + if test pass_all != $deplibs_check_method; then
# We're trying link a shared library against a static one
# but the system doesn't support it.


My awk script also matches your changes in these hunks, so I'm
moderately confident that it will have caught any other lurkers too.

If not, I will branch before 962aa91, run the script, and then apply
the rest of master to that branch one patch at a time until I arrive
at a diff that I can apply to master itself, rather than using revert
as I did on the current temporary branch.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)




Re: [PATCH] tests: skip with-pic test when no real pic flag is used.

2012-09-19 Thread Gary V. Vaughan
Hi Peter,

On 19 ก.ย. 2012, at 15:56, Peter Rosin p...@lysator.liu.se wrote:

 * tests/with-pic.at: Windows uses -DDLL_EXPORT -DPIC as the pic
 flag, but never applies it to static libraries. Cater for this
 and skip if no real pic flag is in use.
 [[...]]
 
 Ok to push?

Yes, with nit below addressed. Thanks!

 I tried to eliminate the loop using variants of this:
 
 real_pic=false
 case  $pic_flag  in
 * [^-]* | * -[^D]*) real_pic=: ;;
 esac
 AT_CHECK([$real_pic || exit 77])
 
 ...but I never got that to work in the test. It worked in an
 interactive bash though. Strange.

M4 will strip one level of square brackets as it generates the testsuite 
script. Normally we just put an extra level of quoting around regexps/globs to 
account for that:

 [* [^-]* | * -[^D]*]) real_pic=: ;; 

(untested -- still on vacation ;-)

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Re: [PATCH] tests: feed -no-undefined when linking libtool libraries

2012-09-19 Thread Gary V. Vaughan
Hi Peter,

My bad, I'm embarrassed to say. I started to write a script to make the 
appropriate changes, but ended up doing it manually rather than adding more and 
more corner cases to the throwaway script... a poor choice in hindsight :-(

On 19 ก.ย. 2012, at 19:27, Peter Rosin p...@lysator.liu.se wrote:
 On 2012-09-19 11:26, Peter Rosin wrote:
 On 2012-09-19 09:31, Peter Rosin wrote:
 * tests/runpath-in-lalib.at: Make sure shared libraries are created
 on Windows by passing -no-undefined. Otherwise libb.la fails to record
 a dependency on liba.la, and the final link of the program then fails
 with undefined symbols.
 
 Signed-off-by: Peter Rosin p...@lysator.liu.se
 ---
 tests/runpath-in-lalib.at |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
 
 Ok to push?
 Or maybe the failure is deeper than this? Should libb.la record a
 dependency on liba.la even if libb.la is static only?
 
 I likely is deeper, it seems this is a regression since 2.4.2.
 
 I have bisected this regression to 962aa919f51cdf8e2cee4fb2d1d9bafa34d50887
 syntax-check: fix violations and implement sc_prohibit_test_const_follows_var.
 
 I looked through that insanely huge patch and it was not fun. I did
 manage to find a couple of problems:
 
 -if test $pic_mode = no  test $deplibs_check_method != pass_all; 
 then
 +if test yes = $pic_mode  test pass_all != $deplibs_check_method; 
 then
 
 -if test $prev = dlprefiles; then
 +if test dlfiles = $prev; then
 
 -if test x`$SED 1q $export_symbols` != xEXPORTS; then
 +if test EXPORTS = `$SED 1q $export_symbols`; then
 
 -if test x[$]$2 = xyes; then
 +if test yes != [$]$2; then
 
 However, my eyes must have glazed over because it is not enough to fix those
 bugs.

I guess my whole brain glazed over while I was checking and rechecking before 
pushing, so I'm not surprised.

 Comparing to master, I notice that:
 
 * The export_symbols change has a fixup in
 b804ffabee2ce373d9bac6ae2b235ec68e0b55e8
 fixup: restore EXPORTS test
 * The x[$]$2 change has a fixup in
 11869b9c9eb8bcc8cb6a615141f522a447377324
 m4: fix logic error leading to -fno-rtti being added wrongly.
 
 I have removed a long rant on my opinion of the offending patch, it
 would do no good anyway...

Thanks for finding it, and sparing me from the additional shame.

 Bottom line: More eyes needed on that patch!
 
 Ok to push the below?

I think it will be safer to revert the broken patch, and then write a script to 
reapply those changes automatically as I should have done originally, and only 
then to merge the result back to head. If you hold off for a few days, I'll do 
that as penance for my sins when I get back to my computer.

But please hold on to your test case to verify that I've made a better job of 
things on the do over.

 Cheers,
 Peter

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Re: FYI: [PATCH] bootstrap: adopt autoconf echo normalization code.

2011-12-23 Thread Gary V. Vaughan
Hi Eric,

On 19 Dec 2011, at 20:48, Eric Blake wrote:
 On 12/18/2011 12:46 AM, Gary V. Vaughan wrote:
 Pushed as obvious.
 
 Dash shipped with Ubutu-11.10 as /bin/sh, among others, still
 has a crippled echo builtin that mis-handles backslashes.
 
 That's an unfair characterization.  Rather, dash ships an echo builtin
 that complies with POSIX by default (which mandates backslash
 interpretation), while bash ships an echo builtin that ignores backslash
 by default, but can be made to comply with POSIX via 'shopt -s xpg_echo'.

I wasn't aware of the POSIX distinction, although while dash my be strictly
correct, it does mean that POSIX compliant echo is essentially useless for
bootstrap (and autoconf, and libtool etc etc)... entailing an ugly blob of
code to detect and circumvent any echo implementation that behaves that way.

 +++ b/build-aux/options-parser
 @@ -173,6 +173,46 @@ basename='s|^.*/||'
 nl='
 '
 
 +# There are still modern systems that have problems with `echo' mis-
 +# handling backslashes, among others, so make sure $bs_echo is set to a
 +# command that correctly interprets backslashes.
 
 Again, a mis-characterization of the problem.

No offense implied or intended by that comment, and I'll be happy to apply
a followup patch if you submit something preferable.

 +# (this code from Autoconf 2.68)
 +
 +# Printing a long string crashes Solaris 7 /usr/bin/printf.
 +bs_echo='\\\'
 +bs_echo=$bs_echo$bs_echo$bs_echo$bs_echo$bs_echo
 +bs_echo=$bs_echo$bs_echo$bs_echo$bs_echo$bs_echo$bs_echo
 +# Prefer a ksh shell builtin over an external printf program on Solaris,
 +# but without wasting forks for bash or zsh.
 +if test -z $BASH_VERSION$ZSH_VERSION \
 + (test X`print -r -- $bs_echo` = X$bs_echo) 2/dev/null; then
 +  bs_echo='print -r --'
 +  bs_echo_n='print -rn --'
 
 Also, I'm not sure that I like the name $bs_echo - it's not namespace
 clean.  I would have expected something more like $lt_echo.

lt_ is the libtool namespace, and options-parser is a module of bootstrap,
so I used bs_.

After the initial encouragement on the gnulib list, I wrote bootstrap for
gnulib, but it looks like it won't ever make it upstream in its previous
form, so I split it into a reusable options-parser script that provides the
hooks and requires framework and uses it to implement a pluggable shell
script options parser that can be extended by writing a few functions...
and then on top of that my much improved extract-trace script which is a
standalone proof of concept that m4 can be used more easily and profitably
for parsing configure.{ac,in} than ad-hoc sed scripts, and finally with the
saner bootstrap implemented on top of both of those.

When I next have some time to hand-hold the process, I'll make another attempt
at getting gnulib to accept this version of bootstrap, which I hope will prove
a bit easier with the separation into smaller chunks, each useful in its own
right, and then try and get autoreconf and others to adopt the extract-trace
script and/or approach over brittle ad-hoc sed scripts.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


FYI: [PATCH] gnulib: update gnulib submodule.

2011-12-23 Thread Gary V. Vaughan
Pushed as obvious.

I have no idea how I ended up with a gnulib subproject that
looks for all the world like f51babfaf is a public commit, but
which at least 2 other folks cannot see, so updating to the
latest master.

Among others, this fixes the reference to a local commit.
* gnulib: Updated to todays master HEAD revision.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 gnulib |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/gnulib b/gnulib
index f51babf..576e46c 16
--- a/gnulib
+++ b/gnulib
@@ -1 +1 @@
-Subproject commit f51babfaf400eb509f854cad509f5e649b9182b1
+Subproject commit 576e46cb89ee781ec9f8352723b5dc96d3c7fd1f
-- 
1.7.8

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



FYI: [PATCH] bootstrap: fix Autoconf version typo.

2011-12-23 Thread Gary V. Vaughan
Pushed as obvious.

I must have forgotten to rerun `git add build-aux/options-parser` in
my local tree between fixing this very short-lived typo and pushing
the patch that came after it.  Sorry about that.

* build-aux/options-parses: s/2\.62/2.68/

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 build-aux/options-parser |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/build-aux/options-parser b/build-aux/options-parser
index 07a9731..9d42418 100644
--- a/build-aux/options-parser
+++ b/build-aux/options-parser
@@ -176,7 +176,7 @@ nl='
 # There are still modern systems that have problems with `echo' mis-
 # handling backslashes, among others, so make sure $bs_echo is set to a
 # command that correctly interprets backslashes.
-# (this code from Autoconf 2.62)
+# (this code from Autoconf 2.68)
 
 # Printing a long string crashes Solaris 7 /usr/bin/printf.
 
bs_echo='\\\'
-- 
1.7.8

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



FYI: [PATCH] gnulib: update gnulib submodule.

2011-12-23 Thread Gary V. Vaughan
Belay that, on my final pre-push `./bootstrap./configuremake all check`
it turns out that upstream README-release changed a colon into a period,
so our local gnulib-tool patch needed updating accordingly.  This is the
version of the patch I'm pushing.

Among others, this fixes the reference to a local commit.
* gnulib: Updated to todays master HEAD revision.
* gl/top/README-release.diff: Update to account for changes to
gnulib/top/README-release since the last gnulib update.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 gl/top/README-release.diff |8 
 gnulib |2 +-
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/gl/top/README-release.diff b/gl/top/README-release.diff
index 9f89724..4cc43f3 100644
--- a/gl/top/README-release.diff
+++ b/gl/top/README-release.diff
@@ -1,5 +1,5 @@
 gnulib/top/README-release  2011-10-23 14:32:58.0 +0700
-+++ gl/top/README-release  2011-10-23 14:38:40.0 +0700
+--- gnulib/top/README-release  2011-12-24 08:28:59.0 +0700
 gl/top/README-release  2011-12-24 09:01:01.0 +0700
 @@ -1,5 +1,9 @@
  Here are most of the steps we (maintainers) follow when making a release.
  
@@ -10,11 +10,11 @@
  * start from a clean, up-to-date git directory.
  
  make -k maintainer-clean || { ./configure  make maintainer-clean; }
-@@ -18,12 +24,24 @@
+@@ -18,12 +22,24 @@
  
  http://hydra.nixos.org/jobset/gnu/@PACKAGE@-master
  
--* Run ./bootstrap  ./configure.  This downloads any new translations:
+-* Run ./bootstrap  ./configure.  This downloads any new translations.
 +* Double check that serial number updates in public m4 files weren't
 +  forgotten since last release (they should be updated in git along with
 +  commits that require it so that users can work with git snapshots).
diff --git a/gnulib b/gnulib
index f51babf..576e46c 16
--- a/gnulib
+++ b/gnulib
@@ -1 +1 @@
-Subproject commit f51babfaf400eb509f854cad509f5e649b9182b1
+Subproject commit 576e46cb89ee781ec9f8352723b5dc96d3c7fd1f
-- 
1.7.8

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



Re: FYI [PATCH] libtool: minimise forks per invocation under bash.

2011-12-18 Thread Gary V. Vaughan
Hi Stefano,

On 18 Dec 2011, at 17:02, Stefano Lattarini wrote:

 On 12/18/2011 10:52 AM, Stefano Lattarini wrote:
 On 12/18/2011 06:15 AM, Gary V. Vaughan wrote:
 +# We should try to minimise forks, especially on Windows where they are
 +# unreasonably slow, so skip the feature probes when bash is being used:
 +if test set = ${BASH_VERSION+set}; then
 +: ${lt_HAVE_ARITH_OP=yes}
 +: ${lt_HAVE_XSI_OPS=yes}
 +# The += operator was introduced in bash 3.1
 +test -z $lt_HAVE_PLUSEQ_OP \
 +  test 3000 -lt $((${BASH_VERSINFO[0]}*1000 + ${BASH_VERSINFO[1]})) \
 +  lt_HAVE_PLUSEQ_OP=yes
 +fi
 This will likely break with dash 0.5.2:
 
  $ cat foo.sh
  #!/bin/sh
  if test set = ${BASH_VERSION+set}; then
: ${lt_HAVE_ARITH_OP=yes}
: ${lt_HAVE_XSI_OPS=yes}
# The += operator was introduced in bash 3.1
test -z $lt_HAVE_PLUSEQ_OP \
  test 3000 -lt $((${BASH_VERSINFO[0]}*1000 + ${BASH_VERSINFO[1]})) \
  lt_HAVE_PLUSEQ_OP=yes
  fi
  $ dash foo.sh
  foo.sh: 7: Syntax error: Bad substitution
 
 Update: the same happens with NetBSD 5.1 /bin/sh (which is probably
 an ash-derivative).

Thanks for the report.

Unfortunately, I'm out of ideas on how to portably detect the bash version 
without
spending a fork, in which case it seems easiest to spend that fork actually 
testing
for += support rather than poking at the bash version.

Can anyone think of something better than just removing the whole 
lt_HAVE_PLUSEQ_OP
clause from the patch quoted above, and letting the shell figure it by itself 
later
on?

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Re: FYI [PATCH] libtool: minimise forks per invocation under bash.

2011-12-18 Thread Gary V. Vaughan
Hi Stefano,

On 18 Dec 2011, at 17:19, Stefano Lattarini wrote:
 On 12/18/2011 11:07 AM, Gary V. Vaughan wrote:
 On 18 Dec 2011, at 17:02, Stefano Lattarini wrote:
 On 12/18/2011 10:52 AM, Stefano Lattarini wrote:
 On 12/18/2011 06:15 AM, Gary V. Vaughan wrote:
 +# We should try to minimise forks, especially on Windows where they are
 +# unreasonably slow, so skip the feature probes when bash is being used:
 +if test set = ${BASH_VERSION+set}; then
 +: ${lt_HAVE_ARITH_OP=yes}
 +: ${lt_HAVE_XSI_OPS=yes}
 +# The += operator was introduced in bash 3.1
 +test -z $lt_HAVE_PLUSEQ_OP \
 +   test 3000 -lt $((${BASH_VERSINFO[0]}*1000 + ${BASH_VERSINFO[1]})) 
 \
 +   lt_HAVE_PLUSEQ_OP=yes
 +fi
 This will likely break with dash 0.5.2:
 
  $ cat foo.sh
  #!/bin/sh
  if test set = ${BASH_VERSION+set}; then
: ${lt_HAVE_ARITH_OP=yes}
: ${lt_HAVE_XSI_OPS=yes}
# The += operator was introduced in bash 3.1
test -z $lt_HAVE_PLUSEQ_OP \
   test 3000 -lt $((${BASH_VERSINFO[0]}*1000 + ${BASH_VERSINFO[1]})) \
   lt_HAVE_PLUSEQ_OP=yes
  fi
  $ dash foo.sh
  foo.sh: 7: Syntax error: Bad substitution
 Update: the same happens with NetBSD 5.1 /bin/sh (which is probably
 an ash-derivative).
 Thanks for the report.
 
 Unfortunately, I'm out of ideas on how to portably detect the bash version 
 without
 spending a fork, in which case it seems easiest to spend that fork actually 
 testing
 for += support rather than poking at the bash version.
 
 Can anyone think of something better than just removing the whole 
 lt_HAVE_PLUSEQ_OP
 clause from the patch quoted above, and letting the shell figure it by 
 itself later
 on?
 Adding an extra eval seems to do the trick:
 
  eval 'test 3000 -lt $((${BASH_VERSINFO[0]}*1000 + ${BASH_VERSINFO[1]}))'
 
 Of course, a comment about why this eval is needed would be definitely
 warranted.

Not that I've looked at the implementation, but isn't eval as bad as a fork on
Windows? (which is the only reason to avoid forks, since they are extremely 
cheap on
Unix.)

 Or, to be even safer, you could directly poke at $BASH_VERSION instead:
 
  case $BASH_VERSION in
[12].*|3.0.*) ;;
*) lt_HAVE_PLUSEQ_OP=yes;;
  esac

Ah, true... I guess I was too focussed on a straight forward one liner, and 
missed
the obvious one.  D'oh!  I'll switch to that and push presently.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


FYI: [PATCH] libtool: make fork minimisation compatible with dash and zsh.

2011-12-18 Thread Gary V. Vaughan
* build-aub/general.m4sh (lt_HAVE_PLUSEQ_OP): Instead of using
$((..)) arithmetic, which causes an error on dash, use a case
based bash version check.
(lt_HAVE_ARITH_OP, lt_HAVE_XSI_OPS): Also short circuit the
feature probing forks and set these automatically when zsh is
detected.
Reported by Stefano Lattarini.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 build-aux/general.m4sh |   12 +++-
 1 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/build-aux/general.m4sh b/build-aux/general.m4sh
index e96c0e4..3cfecee 100644
--- a/build-aux/general.m4sh
+++ b/build-aux/general.m4sh
@@ -75,14 +75,16 @@ basename='s|^.*/||'
 
 
 # We should try to minimise forks, especially on Windows where they are
-# unreasonably slow, so skip the feature probes when bash is being used:
-if test set = ${BASH_VERSION+set}; then
+# unreasonably slow, so skip the feature probes when bash or zsh are
+# being used:
+if test set = ${BASH_VERSION+set}${ZSH_VERSION}; then
 : ${lt_HAVE_ARITH_OP=yes}
 : ${lt_HAVE_XSI_OPS=yes}
 # The += operator was introduced in bash 3.1
-test -z $lt_HAVE_PLUSEQ_OP \
-   test 3000 -lt $((${BASH_VERSINFO[0]}*1000 + ${BASH_VERSINFO[1]})) \
-   lt_HAVE_PLUSEQ_OP=yes
+case $BASH_VERSION in
+  [12].* | 3.0 | 3.0.*) ;;
+  *)lt_HAVE_PLUSEQ_OP=yes ;;
+esac
 fi
 
 
-- 
1.7.8

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



FYI [PATCH] libtool: minimise forks per invocation under bash.

2011-12-17 Thread Gary V. Vaughan
Thanks to Eric Blake, Peter O'Gorman and Bob Friesenhahn for steering
me in this direction.

* build-aux/general.m4sh (lt_HAVE_PLUSEQ_OP, lt_HAVE_ARITH_OP)
(lt_HAVE_XSI_OPS): Set these without forking a test script when
running under bash, to avoid a few unnecessary forks.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 build-aux/general.m4sh |   21 -
 1 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/build-aux/general.m4sh b/build-aux/general.m4sh
index 252b2d2..e96c0e4 100644
--- a/build-aux/general.m4sh
+++ b/build-aux/general.m4sh
@@ -74,12 +74,21 @@ dirname='s|/[^/]*$||'
 basename='s|^.*/||'
 
 
+# We should try to minimise forks, especially on Windows where they are
+# unreasonably slow, so skip the feature probes when bash is being used:
+if test set = ${BASH_VERSION+set}; then
+: ${lt_HAVE_ARITH_OP=yes}
+: ${lt_HAVE_XSI_OPS=yes}
+# The += operator was introduced in bash 3.1
+test -z $lt_HAVE_PLUSEQ_OP \
+   test 3000 -lt $((${BASH_VERSINFO[0]}*1000 + ${BASH_VERSINFO[1]})) \
+   lt_HAVE_PLUSEQ_OP=yes
+fi
+
+
 # lt_HAVE_PLUSEQ_OP
 # Can be empty, in which case the shell is probed, yes if += is useable
 # or anything else if += does not work.
-# NOTE: You can short-circuit the fork and test on every invocation (e.g.
-# on Windows where fork emulations are unreasonably slow) by setting this
-# in the environment of this script.
 test -z $lt_HAVE_PLUSEQ_OP \
  (eval 'x=a; x+= b; test a b = $x') 2/dev/null \
  lt_HAVE_PLUSEQ_OP=yes
@@ -117,9 +126,6 @@ fi
 # lt_HAVE_ARITH_OP
 # Can be empty, in which case the shell is probed, yes if $((...)) is
 # useable or anything else if it does not work.
-# NOTE: You can short-circuit the fork and test on every invocation (e.g.
-# on Windows where fork emulations are unreasonably slow) by setting this
-# in the environment of this script.
 test -z $lt_HAVE_ARITH_OP \
  (eval 'test 2 = $(( 1 + 1 ))') 2/dev/null \
  lt_HAVE_ARITH_OP=yes
@@ -141,9 +147,6 @@ fi
 # lt_HAVE_XSI_OPS
 # Can be empty, in which case the shell is probed, yes if XSI length
 # and matching operators are useable or anything else if they do not work.
-# NOTE: You can short-circuit the fork and test on every invocation (e.g.
-# on Windows where fork emulations are unreasonably slow) by setting this
-# in the environment of this script.
 test -z $lt_HAVE_XSI_OPS \
  (eval 'x=a/b/c;
   test 5aa/bb/cc = ${#x}${x%%/*}${x%/*}${x#*/}${x##*/}') 2/dev/null \
-- 
1.7.8

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



FYI: [PATCH] bootstrap: adopt autoconf echo normalization code.

2011-12-17 Thread Gary V. Vaughan
Pushed as obvious.

Dash shipped with Ubutu-11.10 as /bin/sh, among others, still
has a crippled echo builtin that mis-handles backslashes.
* build-aux/options-parser (bs_echo): Adopt the autoconf echo
normalization code to find a suitable replacement for buggy echo
commands.
Adjust all uses of echo to $bs_echo.
* build-aux/extract-trace (func_extract_trace, func_main):
Likewise.
* bootstrap: To retain some execution speed on platforms with
buggy builtin echo, replace most occurrences of `echo' with
`$bs_echo' - except where its arguments will obviously never
contain backslashes or be overly long.
Reported by Reuben Thomas.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 bootstrap|   20 +++---
 build-aux/extract-trace  |8 +++---
 build-aux/options-parser |   60 ++---
 3 files changed, 64 insertions(+), 24 deletions(-)

diff --git a/bootstrap b/bootstrap
index 147ac08..7b26d00 100755
--- a/bootstrap
+++ b/bootstrap
@@ -1051,7 +1051,7 @@ func_require_buildreq_automake ()
 
   # ...and AM_INIT_AUTOMAKE is declared...
   test -n $func_extract_trace_result  {
-automake_version=`echo $func_extract_trace_result \
+automake_version=`$bs_echo $func_extract_trace_result \
|$SED 's|[^0-9]*||; s| .*$||'`
 test -n $automake_version || automake_version=-
 
@@ -1798,8 +1798,8 @@ func_ifcontains ()
 {
 $debug_cmd
 
-# The embedded echo is to squase whitespace before globbing.
-_G_wslist=`echo  $1 `
+# The embedded echo is to squash whitespace before globbing.
+_G_wslist=`$bs_echo  $1 `
 _G_member=$2
 _G_yes_cmd=$3
 _G_no_cmd=${4-:}
@@ -1833,7 +1833,7 @@ func_append_u ()
 {
 $debug_cmd
 
-eval _G_current_value='`echo $'$1'`'
+eval _G_current_value='`$bs_echo $'$1'`'
 _G_delim=`expr $2 : '\(.\)'`
 
 case $_G_delim$_G_current_value$_G_delim in
@@ -1851,7 +1851,7 @@ func_strpad ()
 $debug_cmd
 
 _G_width=`expr $2 - 1`
-func_strpad_result=`echo $1 |$SED '
+func_strpad_result=`$bs_echo $1 |$SED '
 :a
 s|^.\{0,'$_G_width'\}$|'$3'|
 ta
@@ -1868,7 +1868,7 @@ func_strrpad ()
 $debug_cmd
 
 _G_width=`expr $2 - 1`
-func_strrpad_result=`echo $1 |$SED '
+func_strrpad_result=`$bs_echo $1 |$SED '
 :a
 s|^.\{0,'$_G_width'\}$|'$3'|
 ta
@@ -1953,7 +1953,7 @@ func_strtable ()
 
 # Strip off the indent, and make a divider with `-' chars, then
 # reindent.
-_G_divider=`echo $func_strrow_result \
+_G_divider=`$bs_echo $func_strrow_result \
 |$SED 's|[^ ]|-|g
 :a
 s|- |--|g
@@ -2111,8 +2111,8 @@ func_insert_sorted_if_absent ()
   func_grep_q $str $file \
func_verbose inserting \`$str' into \`$file'
 
-  echo $str |sort -u - $file |func_cmp_s - $file \
-|| echo $str |sort -u - $file -o $file \
+  $bs_echo $str |sort -u - $file |func_cmp_s - $file \
+|| $bs_echo $str |sort -u - $file -o $file \
 || func_permissions_error $file
 done
 }
@@ -2177,7 +2177,7 @@ func_get_version ()
 
 # Rather than uncomment the sed script in-situ, strip the comments
 # programatically before passing the result to $SED for evaluation.
-sed_get_version=`echo '# extract version within line
+sed_get_version=`$bs_echo '# extract version within line
   s|.*[v ]\{1,\}\([0-9]\{1,\}\.[.a-z0-9-]*\).*|\1|
   t done
 
diff --git a/build-aux/extract-trace b/build-aux/extract-trace
index b738257..ee3f284 100755
--- a/build-aux/extract-trace
+++ b/build-aux/extract-trace
@@ -254,8 +254,8 @@ func_extract_trace ()
 $require_configure_ac
 $require_gnu_m4
 
-_G_m4_traces=`echo --trace=$1 |$SED 's%,% --trace=%g'`
-_G_re_macros=`echo ($1) |$SED 's%,%|%g'`
+_G_m4_traces=`$bs_echo --trace=$1 |$SED 's%,% --trace=%g'`
+_G_re_macros=`$bs_echo ($1) |$SED 's%,%|%g'`
 _G_macros=$1; shift
 test $# -gt 0 || {
   set dummy $configure_ac
@@ -357,7 +357,7 @@ func_extract_trace ()
 
 # Save the command pipeline results for further use by callers of
 # this function.
-func_extract_trace_result=`echo $_G_mini \
+func_extract_trace_result=`$bs_echo $_G_mini \
   |$M4 -daq --prefix $_G_m4_traces - $@ 21 1/dev/null \
   |$SED -n -e $_G_transform`
 }
@@ -382,7 +382,7 @@ func_main ()
 
 # Display results.
 test -n $func_extract_trace_result \
- echo $func_extract_trace_result
+ $bs_echo $func_extract_trace_result
 
 # The End.
 exit $EXIT_SUCCESS
diff --git a/build-aux/options-parser b/build-aux/options-parser
index 5d5d8ed..07a9731 100644
--- a/build-aux/options-parser
+++ b/build-aux/options-parser
@@ -173,6 +173,46 @@ basename='s|^.*/||'
 nl='
 '
 
+# There are still modern systems that have problems with `echo' mis-
+# handling backslashes, among others, so make sure $bs_echo is set to a
+# command that correctly interprets backslashes

FYI: [PATCH 1/3] libtoolize: rename ltdl.mk filter function.

2011-12-08 Thread Gary V. Vaughan
This series is just a split-up version of the following patch, for
better readability:

  http://lists.gnu.org/archive/html/libtool-patches/2011-11/msg00156.html

Pushed already, since the original was posted for review almost 2
weeks ago.

* libtoolize.m4sh (require_Makefile_inc_filter): Rename from
this...
(require_ltdl_mk_filter): ...to this. Adjust all callers.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 libtoolize.m4sh |   22 +++---
 1 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/libtoolize.m4sh b/libtoolize.m4sh
index 31bbf3e..65972e7 100644
--- a/libtoolize.m4sh
+++ b/libtoolize.m4sh
@@ -788,7 +788,7 @@ func_install_pkgltdl_files ()
 fi
 
 $require_Makefile_am_filter
-$require_Makefile_inc_filter
+$require_ltdl_mk_filter
 
 # Copy ltdl sources appropriate to the requested ltdl_mode.
 for file in $pkgltdl_files; do
@@ -801,7 +801,7 @@ func_install_pkgltdl_files ()
 
 ltdl.mk)
   test nonrecursive = $ltdl_mode || continue
-  my_copy_filter=$Makefile_inc_filter
+  my_copy_filter=$ltdl_mk_filter
   ;;
 
 aclocal.m4)
@@ -1299,13 +1299,13 @@ $ltdl_ac_aux_dir |$SED $sed_make_literal_regex`
 }
 
 
-# require_Makefile_inc_filter
-# ---
-# Set `Makefile_inc_filter' ready for passing to func_copy in order for
-# the contents of Makefile.inc to match the nonrecursive libltdl
-# directory into which it is copied.
-require_Makefile_inc_filter=func_require_Makefile_inc_filter
-func_require_Makefile_inc_filter ()
+# require_ltdl_mk_filter
+# --
+# Set `ltdl_mk_filter' ready for passing to func_copy in order for the
+# contents of ltdl.mk to match the nonrecursive libltdl directory into
+# which it is copied.
+require_ltdl_mk_filter=func_require_ltdl_mk_filter
+func_require_ltdl_mk_filter ()
 {
 $debug_cmd
 
@@ -1314,7 +1314,7 @@ func_require_Makefile_inc_filter ()
 # Note that we strip comments right here, rather than rely on
 # using a $SED that allows comments.
 my_uscore=`$ECHO $ltdl_dir | $SED 's|[/.+-]|_|g'`
-Makefile_inc_filter=`$ECHO '
+ltdl_mk_filter=`$ECHO '
   /^[^#]/{
 
 # Use only libltdl conditional objects.
@@ -1333,7 +1333,7 @@ func_require_Makefile_inc_filter ()
 
   }' | $SED '/^[]*#/d;/^$/d'`
 
-require_Makefile_inc_filter=:
+require_ltdl_mk_filter=:
 }
 
 
-- 
1.7.7.4

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



FYI: [PATCH 2/3] libtoolize: use _filter as a prefix for better ordering.

2011-12-08 Thread Gary V. Vaughan
* libtoolize.m4sh (require_Makefile_am_filter)
(require_ltdl_mk_filter, require_aclocal_m4_filter)
(require_configure_ac_filter): Rename these functions from this...
(require_filter_Makefile_am, require_filter_ltdl_mk)
(require_filter_aclocal_m4, require_filter_configure_ac): ...to
this, respectively.  Adjust all callers.
(Makefile_am_filter, ltdl_mk_filter, aclocal_m4_filter)
(configure_ac_filter): Rename these global variables from this...
(filter_Makefile_am, filter_ltdl_mk, filter_aclocal_m4)
(filter_configure_ac): ...to this, respectively.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 libtoolize.m4sh |   72 +++---
 1 files changed, 36 insertions(+), 36 deletions(-)

diff --git a/libtoolize.m4sh b/libtoolize.m4sh
index 65972e7..eeabb71 100644
--- a/libtoolize.m4sh
+++ b/libtoolize.m4sh
@@ -787,8 +787,8 @@ func_install_pkgltdl_files ()
   pkgltdl_header=putting libltdl files in \`$ltdl_dir'.
 fi
 
-$require_Makefile_am_filter
-$require_ltdl_mk_filter
+$require_filter_Makefile_am
+$require_filter_ltdl_mk
 
 # Copy ltdl sources appropriate to the requested ltdl_mode.
 for file in $pkgltdl_files; do
@@ -796,23 +796,23 @@ func_install_pkgltdl_files ()
   case $file in
 Makefile.am|Makefile.in)
   test nonrecursive = $ltdl_mode  continue
-  my_copy_filter=$Makefile_am_filter
+  my_copy_filter=$filter_Makefile_am
   ;;
 
 ltdl.mk)
   test nonrecursive = $ltdl_mode || continue
-  my_copy_filter=$ltdl_mk_filter
+  my_copy_filter=$filter_ltdl_mk
   ;;
 
 aclocal.m4)
   test subproject = $ltdl_mode  {
-$require_aclocal_m4_filter
+$require_filter_aclocal_m4
 
 # Always copy aclocal.m4, otherwise regenerating it can
 # overwrite the destination if it is symlinked.
 ( opt_copy=:
   func_copy $file $pkgltdldir $ltdl_dir \
-pkgltdl_header $aclocal_m4_filter
+pkgltdl_header $filter_aclocal_m4
 )
   }
   continue
@@ -824,13 +824,13 @@ func_install_pkgltdl_files ()
 
 configure)
   test subproject = $ltdl_mode  {
-$require_configure_ac_filter
+$require_filter_configure_ac
 
 # Always copy configure, otherwise regenerating it can
 # overwrite the destination if it is symlinked.
 ( opt_copy=:
   func_copy $file $pkgltdldir $ltdl_dir \
-pkgltdl_header $configure_ac_filter
+pkgltdl_header $filter_configure_ac
 )
   }
   continue
@@ -838,8 +838,8 @@ func_install_pkgltdl_files ()
 
 configure.ac)
   test subproject = $ltdl_mode || continue
-  $require_configure_ac_filter
-  my_copy_filter=$configure_ac_filter
+  $require_filter_configure_ac
+  my_copy_filter=$filter_configure_ac
   ;;
   esac
 
@@ -1245,13 +1245,13 @@ for base in '' ltdl_; do
 done
 
 
-# require_Makefile_am_filter
+# require_filter_Makefile_am
 # --
-# Set `Makefile_am_filter' ready for passing to func_copy when libltdl's
+# Set `filter_Makefile_am' ready for passing to func_copy when libltdl's
 # stock Makefile.am contents need to be filtered to work in recursive
 # mode.
-require_Makefile_am_filter=func_require_Makefile_am_filter
-func_require_Makefile_am_filter ()
+require_filter_Makefile_am=func_require_filter_Makefile_am
+func_require_filter_Makefile_am ()
 {
 $debug_cmd
 
@@ -1259,7 +1259,7 @@ func_require_Makefile_am_filter ()
 
 case $ltdl_mode in
   recursive)
-Makefile_am_filter='
+filter_Makefile_am='
 /^[^#]/{
   s|(LIBOBJS)|(ltdl_LIBOBJS)|g
   s|(LTLIBOBJS)|(ltdl_LTLIBOBJS)|g
@@ -1276,7 +1276,7 @@ func_require_Makefile_am_filter ()
   my_am_macro_dir_regex=`$ECHO \
 $ltdl_am_macro_dir |$SED $sed_make_literal_regex`
 
-  Makefile_am_filter=
+  filter_Makefile_am=
 /^ACLOCAL_AMFLAGS = /{
   s| -I $my_am_macro_dir_regex\$| -I $ltdl_relative_macro_dir|
 }
@@ -1287,7 +1287,7 @@ $ltdl_am_macro_dir |$SED $sed_make_literal_regex`
   my_aux_dir_regex=`$ECHO \
 $ltdl_ac_aux_dir |$SED $sed_make_literal_regex`
 
-  Makefile_am_filter=$Makefile_am_filter
+  filter_Makefile_am=$filter_Makefile_am
 s|$my_aux_dir_regex|$ltdl_relative_aux_dir|g
 s|/\./|/|g
   
@@ -1295,17 +1295,17 @@ $ltdl_ac_aux_dir |$SED $sed_make_literal_regex`
 ;;
 esac
 
-require_Makefile_am_filter=:
+require_filter_Makefile_am=:
 }
 
 
-# require_ltdl_mk_filter
+# require_filter_ltdl_mk
 # --
-# Set `ltdl_mk_filter' ready for passing to func_copy in order for the
+# Set `filter_ltdl_mk' ready for passing to func_copy in order

FYI: [PATCH 3/3] libtoolize: reorder function definitions to keep func_filter_* together.

2011-12-08 Thread Gary V. Vaughan
* libtoolize: Restore asciibetical order, so that all the
filter function definitions are together.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 libtoolize.m4sh |  242 +++---
 1 files changed, 121 insertions(+), 121 deletions(-)

diff --git a/libtoolize.m4sh b/libtoolize.m4sh
index eeabb71..7e73098 100644
--- a/libtoolize.m4sh
+++ b/libtoolize.m4sh
@@ -1245,98 +1245,6 @@ for base in '' ltdl_; do
 done
 
 
-# require_filter_Makefile_am
-# --
-# Set `filter_Makefile_am' ready for passing to func_copy when libltdl's
-# stock Makefile.am contents need to be filtered to work in recursive
-# mode.
-require_filter_Makefile_am=func_require_filter_Makefile_am
-func_require_filter_Makefile_am ()
-{
-$debug_cmd
-
-$require_ltdl_mode
-
-case $ltdl_mode in
-  recursive)
-filter_Makefile_am='
-/^[^#]/{
-  s|(LIBOBJS)|(ltdl_LIBOBJS)|g
-  s|(LTLIBOBJS)|(ltdl_LTLIBOBJS)|g
-}'
-;;
-
-  subproject)
-$require_ltdl_ac_aux_dir
-$require_ltdl_am_macro_dir
-$require_ltdl_relative_aux_dir
-$require_ltdl_relative_macro_dir
-
-test $ltdl_am_macro_dir = $ltdl_relative_macro_dir || {
-  my_am_macro_dir_regex=`$ECHO \
-$ltdl_am_macro_dir |$SED $sed_make_literal_regex`
-
-  filter_Makefile_am=
-/^ACLOCAL_AMFLAGS = /{
-  s| -I $my_am_macro_dir_regex\$| -I $ltdl_relative_macro_dir|
-}
-s|dir)/$my_am_macro_dir_regex|dir)/$ltdl_relative_macro_dir|g
-}
-
-test $ltdl_ac_aux_dir = $ltdl_relative_aux_dir || {
-  my_aux_dir_regex=`$ECHO \
-$ltdl_ac_aux_dir |$SED $sed_make_literal_regex`
-
-  filter_Makefile_am=$filter_Makefile_am
-s|$my_aux_dir_regex|$ltdl_relative_aux_dir|g
-s|/\./|/|g
-  
-}
-;;
-esac
-
-require_filter_Makefile_am=:
-}
-
-
-# require_filter_ltdl_mk
-# --
-# Set `filter_ltdl_mk' ready for passing to func_copy in order for the
-# contents of ltdl.mk to match the nonrecursive libltdl directory into
-# which it is copied.
-require_filter_ltdl_mk=func_require_filter_ltdl_mk
-func_require_filter_ltdl_mk ()
-{
-$debug_cmd
-
-$require_ltdl_dir
-
-# Note that we strip comments right here, rather than rely on
-# using a $SED that allows comments.
-my_uscore=`$ECHO $ltdl_dir | $SED 's|[/.+-]|_|g'`
-filter_ltdl_mk=`$ECHO '
-  /^[^#]/{
-
-# Use only libltdl conditional objects.
-s|(LIBOBJS)|(ltdl_LIBOBJS)|g
-s|(LTLIBOBJS)|(ltdl_LTLIBOBJS)|g
-
-# Convert libltdl path and variable sections to $ltdl_dir.
-s|libltdl_|@my_uscore@_|
-s|libltdl/|@ltdl_dir@/|
-s|: libltdl/|: @ltdl_dir@/|
-s| -Ilibltdl | -I@ltdl_dir@ |
-s|\$(libltdl_|\$(@my_uscore@_|
-s|)/libltdl |)/@ltdl_dir@ |
-s|@my_uscore@|'$my_uscore'|g
-s|@ltdl_dir@|'$ltdl_dir'|g
-
-  }' | $SED '/^[]*#/d;/^$/d'`
-
-require_filter_ltdl_mk=:
-}
-
-
 # require_ac_aux_dir
 # --
 # Extract ac_aux_dir from AC_CONFIG_AUX_DIR.
@@ -1459,35 +1367,6 @@ func_require_ac_macro_dir ()
 }
 
 
-# require_filter_aclocal_m4
-# -
-# Set `filter_aclocal_m4' ready for passing to func_copy when libltdl's
-# stock aclocal.m4 contents need to be filtered to work in recursive
-# mode.
-require_filter_aclocal_m4=func_require_filter_aclocal_m4
-func_require_filter_aclocal_m4 ()
-{
-$debug_cmd
-
-$require_ltdl_am_macro_dir
-$require_ltdl_relative_macro_dir
-
-test $ltdl_am_macro_dir = $ltdl_relative_macro_dir || {
-  my_am_macro_dir_regex=`$ECHO \
-$ltdl_am_macro_dir |$SED $sed_make_literal_regex`
-
-  # Tricky [m] quoting to stop m4sh processing from flagging an
-  # undefined macro.
-  filter_aclocal_m4=
-/^[m]4_include(/{
-  s|$my_am_macro_dir_regex|$ltdl_relative_macro_dir|g
-}
-}
-
-require_filter_aclocal_m4=:
-}
-
-
 # require_aux_dir
 # ---
 # Set aux_dir according to AC_CONFIG_AUX_DIR or else use the same
@@ -1552,6 +1431,89 @@ func_require_configure_ac ()
 }
 
 
+# require_filter_Makefile_am
+# --
+# Set `filter_Makefile_am' ready for passing to func_copy when libltdl's
+# stock Makefile.am contents need to be filtered to work in recursive
+# mode.
+require_filter_Makefile_am=func_require_filter_Makefile_am
+func_require_filter_Makefile_am ()
+{
+$debug_cmd
+
+$require_ltdl_mode
+
+case $ltdl_mode in
+  recursive)
+filter_Makefile_am='
+/^[^#]/{
+  s|(LIBOBJS)|(ltdl_LIBOBJS)|g
+  s|(LTLIBOBJS)|(ltdl_LTLIBOBJS)|g
+}'
+;;
+
+  subproject)
+$require_ltdl_ac_aux_dir
+$require_ltdl_am_macro_dir
+$require_ltdl_relative_aux_dir
+$require_ltdl_relative_macro_dir

Re: [PATCH 3/4] maint: pick XSI funcs at runtime, not configure time.

2011-12-08 Thread Gary V. Vaughan
On 28 Nov 2011, at 21:44, Bob Friesenhahn wrote:
 On Mon, 28 Nov 2011, Peter Rosin wrote:
 
 My typical use case is mid-sized at a magnitude or so larger, and
 even there with a fork rate of approx 10-15 Hz as I'm seeing, it wouldn't
 be too harsh with a couple of extra forks - a minutes or so on the
 wall clock time. But it would really add to the pain on some
 (hypothetical?) large project with thousands of libtool invocations.
 That's all I'm saying, but *I* am not building any of those...
 
 Is Windows fork performance observed to improve linearly as processor cores 
 are added, or does it maintain pretty much a fixed rate?  If it does not 
 improve linearly as processor cores are added, then the extra forks will 
 severely impact available performance of parallel builds.
 
 I have become used to seeing substantial speedup with 'make -j 4' on a 
 Windows system with four cores.

I just pushed the series containing this patch, but refactored to add only 3
additional forks per invocation, and with a patch to follow which might be good
enough to eliminate even those 3 forks on windows machines.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


FYI: [PATCH] bootstrap: put back missing spaces before parens.

2011-12-08 Thread Gary V. Vaughan
Pushed as obvious.

* bootstrap (func_require_buildreq_autobuild)
(func_require_buildreq_automake): Vi's delete word command is
too greedy and also eats trailing whitespace before following
non-word-chars. Put back the spaces it ate so that
syntax-checks pass once again.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 bootstrap |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/bootstrap b/bootstrap
index 28f85b0..147ac08 100755
--- a/bootstrap
+++ b/bootstrap
@@ -972,7 +972,7 @@ func_require_build_aux ()
 # --
 # Try to find whether the bootstrap requires autobuild.
 require_buildreq_autobuild=func_require_buildreq_autobuild
-func_require_buildreq_autobuild()
+func_require_buildreq_autobuild ()
 {
 $debug_cmd
 
@@ -1041,7 +1041,7 @@ done
 # Try to find the minimum compatible version of automake required to
 # bootstrap successfully, and add it to `$buildreq'.
 require_buildreq_automake=func_require_buildreq_automake
-func_require_buildreq_automake()
+func_require_buildreq_automake ()
 {
 $debug_cmd
 
-- 
1.7.8

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



FYI: [PATCH] maint: eliminate some more spurious leading Xs.

2011-12-08 Thread Gary V. Vaughan
Applied as obvious.

* m4/libtool.m4: Reverse argument order to eliminate spurious
leading X's.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 m4/libtool.m4 |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/m4/libtool.m4 b/m4/libtool.m4
index 0eef323..9c2574f 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -198,7 +198,7 @@ aix3*)
   # AIX sometimes has problems with the GCC collect2 program.  For some
   # reason, if we set the COLLECT_NAMES environment variable, the problems
   # vanish in a puff of smoke.
-  if test X${COLLECT_NAMES+set} != Xset; then
+  if test set != ${COLLECT_NAMES+set}; then
 COLLECT_NAMES=
 export COLLECT_NAMES
   fi
@@ -739,7 +739,7 @@ _LT_EOF
 # AIX sometimes has problems with the GCC collect2 program.  For some
 # reason, if we set the COLLECT_NAMES environment variable, the problems
 # vanish in a puff of smoke.
-if test X${COLLECT_NAMES+set} != Xset; then
+if test set != ${COLLECT_NAMES+set}; then
   COLLECT_NAMES=
   export COLLECT_NAMES
 fi
-- 
1.7.8

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



[PATCH] libtool: minimise forks per invocation on cygwin and mingw.

2011-12-08 Thread Gary V. Vaughan
The recently pushed series of patches included the controversial
introduction of an additional 3 forks per invocation, which might
add a minute or two of wall-clock time to giant builds on windows.
By assuming that windows will run shell scripts on some shell with
all the modern optional features that libtool wants, this patch
eliminates even those 3 new forks.

Okay to push?

* build-aux/general.m4sh (lt_HAVE_PLUSEQ_OP, lt_HAVE_ARITH_OP)
(lt_HAVE_XSI_OPS) [cygwin, mingw]: Set these without a test on
the assumption that a modern shell (i.e. bash) will be used to
run libtool and libtoolize.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 build-aux/general.m4sh |   13 +
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/build-aux/general.m4sh b/build-aux/general.m4sh
index 252b2d2..2ac6238 100644
--- a/build-aux/general.m4sh
+++ b/build-aux/general.m4sh
@@ -56,6 +56,7 @@ test ${ECHO+set} = set || ECHO=${as_echo-'printf %s\n'}
 : ${SED=@SED@}
 : ${SHELL=${CONFIG_SHELL-/bin/sh}}
 : ${Xsed=$SED -e 1s/^X//}
+: ${host=@host_triplet@}
 
 # Global variables:
 EXIT_SUCCESS=0
@@ -74,6 +75,18 @@ dirname='s|/[^/]*$||'
 basename='s|^.*/||'
 
 
+# Forks are unreasonably slow under Windows, so we assume that, for at
+# least cygwin and mingw, /bin/sh is bash, and save at least 3 forks per
+# invocation:
+case $host in
+  *cygwin* | *mingw*)
+test -n $lt_HAVE_PLUSEQ_OP || lt_HAVE_PLUSEQ_OP=yes
+test -n $lt_HAVE_ARITH_OP  || lt_HAVE_ARITH_OP=yes
+test -n $lt_HAVE_XSI_OPS   || lt_HAVE_XSI_OPS=yes
+;;
+esac
+
+
 # lt_HAVE_PLUSEQ_OP
 # Can be empty, in which case the shell is probed, yes if += is useable
 # or anything else if += does not work.
-- 
1.7.8

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



FYI: [PATCH] tests: make sure file restore traps are called correctly on AIX.

2011-12-08 Thread Gary V. Vaughan
Applied as obvious.

* tests/demo-noinst-link.test (func_save_files): set the restore
trap outside a function, otherwise AIX 5.3 /bin/sh will run the
trap at the end of the function, instead of when the script
exits.
* tests/demo-relink.test (func_save_files): Ditto.
* tests/depdemo-relink.test (func_save_files): Ditto.
Reported by Stefano Lattarini.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 tests/demo-noinst-link.test |5 -
 tests/demo-relink.test  |4 +++-
 tests/depdemo-relink.test   |4 +++-
 3 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/tests/demo-noinst-link.test b/tests/demo-noinst-link.test
index 5e658b0..5654ff9 100755
--- a/tests/demo-noinst-link.test
+++ b/tests/demo-noinst-link.test
@@ -38,13 +38,16 @@ func_save_files ()
 func_mkdir_p $objdir/temp/libs
 cp -f libhello.la hell$EXEEXT $objdir/temp
 cp -f $objdir/* $objdir/temp/libs
-trap func_restore_files 0 1 2 13 15
 }
 
 func_require demo-inst $prefix/lib/libhello.la
 
 func_mkprefixdir
 func_cd tests/demo
+
+# AIX 5.3 `/bin/sh' will invoke the trap for 0 at the end of a
+# function, so we set the trap outside of a function to be portable.
+trap func_restore_files 0 1 2 13 15
 func_save_files
 
 func_msg removing \`libhello.la' and \`hell' from demo
diff --git a/tests/demo-relink.test b/tests/demo-relink.test
index b463441..4b32fba 100755
--- a/tests/demo-relink.test
+++ b/tests/demo-relink.test
@@ -37,7 +37,6 @@ func_save_files ()
 func_mkdir_p $objdir/temp/libs
 cp -f libhello.la $objdir/temp
 cp -f $objdir/libhello.* $objdir/lt-hell$EXEEXT $objdir/temp/libs
-trap func_restore_files 0 1 2 13 15
 }
 
 func_require demo-inst $prefix/lib/libhello.la  tests/demo/libhello.la
@@ -50,7 +49,10 @@ func_get_config library_names cat libhello.la
 test -z $library_names \
func_skip Exiting: demo/libhello.la is not a shared library
 
+# AIX 5.3 `/bin/sh' will invoke the trap for 0 at the end of a
+# function, so we set the trap outside of a function to be portable.
 func_save_files
+trap func_restore_files 0 1 2 13 15
 
 func_get_config 'shlibpath_overrides_runpath
 hardcode_action
diff --git a/tests/depdemo-relink.test b/tests/depdemo-relink.test
index 382f36c..0d01279 100755
--- a/tests/depdemo-relink.test
+++ b/tests/depdemo-relink.test
@@ -47,7 +47,6 @@ func_save_files ()
cp -f $objdir/depdemo$EXEEXT _fnord/temp
 cp -f l3/libl3.la _fnord/temp
 cp -f l3/$objdir/* _fnord/temp/libs
-trap func_restore_files 0 1 2 13 15
 }
 
 func_require depdemo-inst $prefix/lib/libl3.la  tests/depdemo/l3/libl3.la
@@ -60,6 +59,9 @@ func_get_config library_names cat l3/libl3.la
 test -z $library_names \
func_skip Exiting: depdemo/l3/libl3.la is not a shared library
 
+# AIX 5.3 `/bin/sh' will invoke the trap for 0 at the end of a
+# function, so we set the trap outside of a function to be portable.
+trap func_restore_files 0 1 2 13 15
 func_save_files
 
 func_get_config 'shlibpath_overrides_runpath
-- 
1.7.8

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



FYI: [PATCH] tests: s/snippit/snippet/.

2011-12-08 Thread Gary V. Vaughan
Applied as obvious.

* tests/demo/foo.h, tests/pdemo/foo.h: Spell `snippet' correctly.
Reported by Stefano Lattarini.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 tests/demo/foo.h  |2 +-
 tests/pdemo/foo.h |2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/tests/demo/foo.h b/tests/demo/foo.h
index 5609d8d..9ee7f2e 100644
--- a/tests/demo/foo.h
+++ b/tests/demo/foo.h
@@ -27,7 +27,7 @@ or obtained by writing to the Free Software Foundation, Inc.,
 #define _FOO_H_ 1
 
 /* At some point, cygwin will stop defining __CYGWIN32__, but b19 and
- * earlier do not define __CYGWIN__.  This snippit allows us to check
+ * earlier do not define __CYGWIN__.  This snippet allows us to check
  * for __CYGWIN__ reliably for both current, old, and (probable) future
  * releases.
  */
diff --git a/tests/pdemo/foo.h b/tests/pdemo/foo.h
index 2f666f3..1843783 100644
--- a/tests/pdemo/foo.h
+++ b/tests/pdemo/foo.h
@@ -27,7 +27,7 @@ or obtained by writing to the Free Software Foundation, Inc.,
 #define _FOO_H_ 1
 
 /* At some point, cygwin will stop defining __CYGWIN32__, but b19 and
- * earlier do not define __CYGWIN__.  This snippit allows us to check
+ * earlier do not define __CYGWIN__.  This snippet allows us to check
  * for __CYGWIN32__ reliably for both old and (probable) future releases.
  */
 #ifdef __CYGWIN__
-- 
1.7.8

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



Re: [PATCH] libtool: minimise forks per invocation on cygwin and mingw.

2011-12-08 Thread Gary V. Vaughan
Hi Peter,

On 8 Dec 2011, at 20:40, Peter O'Gorman wrote:
 On 12/08/2011 04:21 AM, Gary V. Vaughan wrote:
 The recently pushed series of patches included the controversial
 introduction of an additional 3 forks per invocation, which might
 add a minute or two of wall-clock time to giant builds on windows.
 By assuming that windows will run shell scripts on some shell with
 all the modern optional features that libtool wants, this patch
 eliminates even those 3 new forks.
 
 Okay to push?
 
 The whole reason these checks were done in configure and not in libtool was 
 to avoid these forks, and the slow down involved. We did a lot of work at 
 speeding up libtool so that non-portable tools such as dolt would not be 
 necessary, including moving large chunks of compile mode script closer the 
 the top of libtool so that it would execute faster.

Ack.  However since I wrote all the hairy M4 code to do the configure time 
replacements, I've changed my mind about how well they work in the grand scheme 
of things... The usual mode of integrating libtool is to have your project's 
configure build a libtool script, which you then call as a compiler wrapper.  
With the exception of projects with a huge number of tiny files to compile, I 
seriously doubt that 3 additional forks per invocation would be noticable as it 
stands now, and after looking back through the replacement code I recently 
expunged, we probably save a few hundred forks from sed and perl invocations at 
configure time, which would mean you don't get any slow down overall in a 
'./configure; make; make install' sequence until you've invoked the libtool 
script at least several dozen times.

Also, I'm trying hard to make hacking on libtool much less infuriating to 
attract more outside patches and development.  Having configure switch out 
function definitions is an odd thing to do, and libtool is already hard enough 
to understand without having to worry about having configure rewriting some of 
libtools functions... hopefully it doesn't make any mistakes ;)

 Any additional forks will slow down the script and should be avoided on all 
 platforms.

Agreed.  And using a BASH_VERSION test will get us a good way there.  I'll also 
work on a follow up patch to set the new lt_HAVE_XSI_OPS and friends using the 
existing machinery for injecting configure time variables into libtool, so I 
can also throw out the last couple of M4 replacement macros.

 Simply removing $(SHELL) from the LIBTOOL variable should fix the bug that 
 this is attempting to fix, without slowing down libtool.

But then we go back to having bug reports about libtool not getting an execute 
bit.  I'm not in favour of making that change.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Re: [PATCH] libtool: minimise forks per invocation on cygwin and mingw.

2011-12-08 Thread Gary V. Vaughan
Hi Eric,

On 8 Dec 2011, at 19:56, Eric Blake wrote:
 On 12/08/2011 03:21 AM, Gary V. Vaughan wrote:
 The recently pushed series of patches included the controversial
 introduction of an additional 3 forks per invocation, which might
 add a minute or two of wall-clock time to giant builds on windows.
 By assuming that windows will run shell scripts on some shell with
 all the modern optional features that libtool wants, this patch
 eliminates even those 3 new forks.
 
 Okay to push?
 
 I'm a bit reluctant to do this via a host check;
 
 
 +# Forks are unreasonably slow under Windows, so we assume that, for at
 +# least cygwin and mingw, /bin/sh is bash, and save at least 3 forks per
 +# invocation:
 +case $host in
 +  *cygwin* | *mingw*)
 
 Instead of doing it this way, I'd almost rather see:
 
 if test ${BASH_VERSION+set} = set; then

Face palm!  Absolutely, that is far more sensible.  Assuming we decide
to push this patch, I'll do it that way and ditch the host check.  Thanks!

 although if cygwin ever follows debian's lead of using dash for faster
 /bin/sh, I'm not sure if there is a reliable forkless way to detect dash.

I think we can worry about that later, if it ever happens.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



[PATCH 1/2] maint: disable prohibit_always-defined_macros syntax check.

2011-12-08 Thread Gary V. Vaughan
Applied as obvious.

Aside from Apple grep silently failing to run this test and
report violations, libtool still uses non-gnulib versions of
dirent.h and argz.h which use the same macros, but are not
always-defined.
* cfg.mk (local-checks-to-fix): Move
sc_prohibit_always-defined_macros from here...
(local-checks-to-skip): ...to here.
Reported by Peter O'Gorman.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 cfg.mk |5 -
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/cfg.mk b/cfg.mk
index dc89660..ef1637a 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -38,7 +38,6 @@ endif
 VC_LIST_ALWAYS_EXCLUDE_REGEX = ^mail/
 
 local-checks-to-fix =  \
-   sc_prohibit_always-defined_macros   \
sc_require_config_h \
sc_require_config_h_first
 
@@ -46,12 +45,16 @@ local-checks-to-skip =  \
$(local-checks-to-fix)  \
sc_GPL_version  \
sc_cast_of_x_alloc_return_value \
+   sc_prohibit_always-defined_macros   \
sc_trailing_blank   \
sc_unmarked_diagnostics
 
 # GPL_version: checks for GPLv3, which we don't use
 # cast_of_x_alloc_return_value:
 # We support C++ compilation which does require casting here.
+# prohibit_always-defined_macros:
+#  we have our own argz and dirent, which use the same macros but
+#  which are not always-defined in our case.
 # trailing_blank: flags valid rfc3676 separators
 # unmarked_diagnostics: libtool isn't internationalized
 
-- 
1.7.8

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



FYI: [PATCH 1/5] bootstrap: make sure patch is available to bootstrap if necessary.

2011-12-07 Thread Gary V. Vaughan
A short series of improvements to bootstrap, inspired by the recent
enhancement to gnulib bootstrap to diagnose a missing patch binary
in the cases where that is required for bootstrap to operate.

All applied as obvious.


Make sure we're not lacking any functionality provided by the
incumbent gnulib bootstrap script, and where it's easy to do so
(like it is here), provide better functionality!
* bootstrap (require_patch): Make sure that PATCH expands to the
best `patch' command available on the system, honouring
overrides in the users environment.
(require_patch_buildreq): Automatically add a requirement for a
patch command to buildreq when there are diff files in
$local_gl_dir.
(func_require_buildtools_uptodate): Call require_patch_buildreq
before testing build tool versions.
(func_gnulib_tool_copy_file): Make sure PATCH is set before using
gnulib-tool to copy files.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 bootstrap |   55 +++
 1 files changed, 55 insertions(+), 0 deletions(-)

diff --git a/bootstrap b/bootstrap
index ae65e37..81a4a0d 100755
--- a/bootstrap
+++ b/bootstrap
@@ -556,6 +556,7 @@ func_gnulib_tool_copy_file ()
 
 $require_gnulib_path
 $require_gnulib_tool
+$require_patch
 
 gnulib_copy_cmd=$gnulib_tool --copy-file
 $opt_copy || func_append gnulib_copy_cmd  --symlink
@@ -1080,6 +1081,7 @@ func_require_buildtools_uptodate ()
 $require_automake_buildreq
 $require_libtoolize_buildreq
 $require_autopoint_buildreq
+$require_patch_buildreq
 
 test -n $buildreq  {
   _G_error_hdr=
@@ -1613,6 +1615,59 @@ func_gnulib_tool has installed the \`git-version-gen' 
script.
 }
 
 
+# require_patch
+# -
+# Find patch, according to the PATCH environment variable, or else
+# searching the user's PATH.
+require_patch=func_require_patch
+func_require_patch ()
+{
+$debug_cmd
+
+test -n $PATCH || {
+  # Find a patch program, preferring gpatch which is usually better
+  # than the vendor patch.
+  func_find_tool PATCH gpatch patch
+}
+
+func_verbose export PATCH='$PATCH'
+
+# Make sure the search result is visible to subshells
+export PATCH
+
+require_patch=:
+}
+
+
+# require_patch_buildreq
+# --
+# Automatically add a patch build-requirement if there are diff files
+# in $local_gl_dir.
+require_patch_buildreq=func_require_patch_buildreq
+func_require_patch_buildreq ()
+{
+$debug_cmd
+
+# This ensures PATCH is set appropriately by the time
+# func_check_versions enforces $buildreq.
+$require_patch
+
+# If patch is not already listed in $buildreq...
+printf '%s\n' $buildreq |func_grep_q '^[  ]*patch' || {
+  # The ugly find invocation is necessary to exit with non-zero
+  # status for old find binaries that don't support -exec fully.
+  if test ! -d $local_gl_dir \
+  || find $local_gl_dir -name *.diff -exec false {} +; then :
+  else
+  func_append buildreq 'patch - http://www.gnu.org/s/patch/
+'
+  fi
+}
+
+require_patch_buildreq=:
+}
+
+
 # require_source_base
 # ---
 # Ensure that source_base has a sensible value, extracted from
-- 
1.7.7.4

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



FYI: [PATCH 2/5] bootstrap: ensure consistent function header comments.

2011-12-07 Thread Gary V. Vaughan
* bootstrap (require_bootstrap_uptodate)
(require_buildtools_uptodate): Use `require_...' in header
comment for these functions to be consistent with the rest,
rather than `func_require_...'.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 bootstrap |8 
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/bootstrap b/bootstrap
index 81a4a0d..8aba09b 100755
--- a/bootstrap
+++ b/bootstrap
@@ -1013,8 +1013,8 @@ func_require_autopoint ()
 }
 
 
-# func_require_bootstrap_uptodate
-# ---
+# require_bootstrap_uptodate
+# --
 # Complain if the version of bootstrap in the gnulib directory differs
 # from the one we are running.
 require_bootstrap_uptodate=func_require_bootstrap_uptodate
@@ -1067,8 +1067,8 @@ func_require_build_aux ()
 }
 
 
-# func_require_buildtools_uptodate
-# 
+# require_buildtools_uptodate
+# ---
 # Ensure all the packages listed in BUILDREQS are available on the build
 # machine at the minimum versions or better.
 require_buildtools_uptodate=func_require_buildtools_uptodate
-- 
1.7.7.4

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



FYI:[PATCH 3/5] bootstrap: use _buildreq as a prefix for better ordering.

2011-12-07 Thread Gary V. Vaughan
* bootstrap (require_autobuild_buildreq)
(require_autoconf_buildreq, require_automake_buildreq)
(require_autopoint_buildreq, require_libtoolize_buildreq)
(require_patch_buildreq): Rename from these...
(require_buildreq_autobuild, require_buildreq_autoconf)
(require_buildreq_automake, require_buildreq_autopoint)
(require_buildreq_libtoolize, require_buildreq_patch): ...to
these, respectively.  Adjust all callers.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 bootstrap |   44 ++--
 1 files changed, 22 insertions(+), 22 deletions(-)

diff --git a/bootstrap b/bootstrap
index 8aba09b..0c2bbc2 100755
--- a/bootstrap
+++ b/bootstrap
@@ -862,11 +862,11 @@ func_require_aclocal_amflags ()
 }
 
 
-# require_autobuild_buildreq
+# require_buildreq_autobuild
 # --
 # Try to find whether the bootstrap requires autobuild.
-require_autobuild_buildreq=func_require_autobuild_buildreq
-func_require_autobuild_buildreq ()
+require_buildreq_autobuild=func_require_buildreq_autobuild
+func_require_buildreq_autobuild()
 {
 $debug_cmd
 
@@ -883,19 +883,19 @@ func_require_autobuild_buildreq ()
   }
 }
 
-require_autobuild_buildreq=:
+require_buildreq_autobuild=:
 }
 
 
-# require_autoconf_buildreq
-# require_autopoint_buildreq
-# require_libtoolize_buildreq
+# require_buildreq_autoconf
+# require_buildreq_autopoint
+# require_buildreq_libtoolize
 # ---
 # Try to find the minimum compatible version of autoconf/libtool
 # required to bootstrap successfully, and add it to `$buildreq'.
 for tool in autoconf libtoolize autopoint; do
   b=$tool
-  v=require_${tool}_buildreq
+  v=require_buildreq_${tool}
   f=func_$v
   case $tool in
 autoconf) m=AC_PREREQ ;;
@@ -957,12 +957,12 @@ func_require_autoheader ()
 }
 
 
-# require_automake_buildreq
+# require_buildreq_automake
 # -
 # Try to find the minimum compatible version of automake required to
 # bootstrap successfully, and add it to `$buildreq'.
-require_automake_buildreq=func_require_automake_buildreq
-func_require_automake_buildreq ()
+require_buildreq_automake=func_require_buildreq_automake
+func_require_buildreq_automake()
 {
 $debug_cmd
 
@@ -984,7 +984,7 @@ func_require_automake_buildreq ()
   }
 }
 
-require_automake_buildreq=:
+require_buildreq_automake=:
 }
 
 
@@ -1076,12 +1076,12 @@ func_require_buildtools_uptodate ()
 {
 $debug_cmd
 
-$require_autobuild_buildreq
-$require_autoconf_buildreq
-$require_automake_buildreq
-$require_libtoolize_buildreq
-$require_autopoint_buildreq
-$require_patch_buildreq
+$require_buildreq_autobuild
+$require_buildreq_autoconf
+$require_buildreq_automake
+$require_buildreq_libtoolize
+$require_buildreq_autopoint
+$require_buildreq_patch
 
 test -n $buildreq  {
   _G_error_hdr=
@@ -1639,12 +1639,12 @@ func_require_patch ()
 }
 
 
-# require_patch_buildreq
+# require_buildreq_patch
 # --
 # Automatically add a patch build-requirement if there are diff files
 # in $local_gl_dir.
-require_patch_buildreq=func_require_patch_buildreq
-func_require_patch_buildreq ()
+require_buildreq_patch=func_require_buildreq_patch
+func_require_buildreq_patch ()
 {
 $debug_cmd
 
@@ -1664,7 +1664,7 @@ func_require_patch_buildreq ()
   fi
 }
 
-require_patch_buildreq=:
+require_buildreq_patch=:
 }
 
 
-- 
1.7.7.4

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



FYI: [PATCH 4/5] bootstrap: reorder function definitions to keep func_buildreq_* together.

2011-12-07 Thread Gary V. Vaughan
From: Gary V. Vaughan g...@gnu.org

* bootstrap: Restore asciibetical order, so that all the
buildreq function definitions are together.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 bootstrap |  252 ++--
 1 files changed, 126 insertions(+), 126 deletions(-)

diff --git a/bootstrap b/bootstrap
index 0c2bbc2..5cd9cb0 100755
--- a/bootstrap
+++ b/bootstrap
@@ -862,6 +862,112 @@ func_require_aclocal_amflags ()
 }
 
 
+# require_autoheader
+# --
+# Skip autoheader if it's not needed.
+require_autoheader=func_require_autoheader
+func_require_autoheader ()
+{
+$debug_cmd
+
+test true = $AUTOHEADER || {
+  func_extract_trace AC_CONFIG_HEADERS
+  test -n $func_extract_trace_result \
+ || func_extract_trace AC_CONFIG_HEADER
+
+  test -n $func_extract_trace_result || {
+AUTOHEADER=true
+
+func_verbose export AUTOHEADER='$AUTOHEADER'
+
+# Make sure the search result is visible to subshells
+export AUTOHEADER
+  }
+}
+
+require_autoheader=:
+}
+
+
+# require_autopoint
+# -
+# Skip autopoint if it's not needed.
+require_autopoint=func_require_autopoint
+func_require_autopoint ()
+{
+$debug_cmd
+
+test true = $AUTOPOINT || {
+  func_extract_trace AM_GNU_GETTEXT_VERSION
+
+  test -n $func_extract_trace_result || {
+AUTOPOINT=true
+
+func_verbose export AUTOPOINT='$AUTOPOINT'
+
+# Make sure the search result is visible to subshells
+export AUTOPOINT
+  }
+}
+
+require_autopoint=:
+}
+
+
+# require_bootstrap_uptodate
+# --
+# Complain if the version of bootstrap in the gnulib directory differs
+# from the one we are running.
+require_bootstrap_uptodate=func_require_bootstrap_uptodate
+func_require_bootstrap_uptodate ()
+{
+$debug_cmd
+
+$require_gnulib_path
+
+test x = x$gnulib_path \
+|| func_cmp_s $progpath $gnulib_path/build-aux/bootstrap \
+|| func_warning upgrade \
+\`$progpath' differs from \`./$gnulib_path/build-aux/bootstrap',
+please consider adopting the canonical version from gnulib.
+
+require_bootstrap_uptodate=:
+}
+
+
+# require_build_aux
+# -
+# Ensure that `$build_aux' is set, and if it doesn't already point to an
+# existing directory, create one.
+require_build_aux=func_require_build_aux
+func_require_build_aux ()
+{
+$debug_cmd
+
+test -n $build_aux || {
+  func_extract_trace AC_CONFIG_AUX_DIR
+  build_aux=$func_extract_trace_result
+  func_check_configuration build_aux \
+  AC_CONFIG_AUX_DIR([name of a directory for build scripts])
+
+  func_verbose build_aux='$build_aux'
+}
+
+$require_vc_ignore_files
+
+# If the build_aux directory doesn't exist, create it now, and mark it
+# as ignored for the VCS.
+if test ! -d $build_aux; then
+  func_show_eval mkdir '$build_aux'
+
+  test -n $vc_ignore_files \
+  || func_insert_sorted_if_absent $build_aux $vc_ignore_files
+fi
+
+require_build_aux=:
+}
+
+
 # require_buildreq_autobuild
 # --
 # Try to find whether the bootstrap requires autobuild.
@@ -930,33 +1036,6 @@ for tool in autoconf libtoolize autopoint; do
 done
 
 
-# require_autoheader
-# --
-# Skip autoheader if it's not needed.
-require_autoheader=func_require_autoheader
-func_require_autoheader ()
-{
-$debug_cmd
-
-test true = $AUTOHEADER || {
-  func_extract_trace AC_CONFIG_HEADERS
-  test -n $func_extract_trace_result \
- || func_extract_trace AC_CONFIG_HEADER
-
-  test -n $func_extract_trace_result || {
-AUTOHEADER=true
-
-func_verbose export AUTOHEADER='$AUTOHEADER'
-
-# Make sure the search result is visible to subshells
-export AUTOHEADER
-  }
-}
-
-require_autoheader=:
-}
-
-
 # require_buildreq_automake
 # -
 # Try to find the minimum compatible version of automake required to
@@ -988,82 +1067,32 @@ func_require_buildreq_automake()
 }
 
 
-# require_autopoint
-# -
-# Skip autopoint if it's not needed.
-require_autopoint=func_require_autopoint
-func_require_autopoint ()
-{
-$debug_cmd
-
-test true = $AUTOPOINT || {
-  func_extract_trace AM_GNU_GETTEXT_VERSION
-
-  test -n $func_extract_trace_result || {
-AUTOPOINT=true
-
-func_verbose export AUTOPOINT='$AUTOPOINT'
-
-# Make sure the search result is visible to subshells
-export AUTOPOINT
-  }
-}
-
-require_autopoint=:
-}
-
-
-# require_bootstrap_uptodate
-# --
-# Complain if the version of bootstrap in the gnulib directory differs
-# from the one we are running.
-require_bootstrap_uptodate=func_require_bootstrap_uptodate
-func_require_bootstrap_uptodate ()
-{
-$debug_cmd
-
-$require_gnulib_path
-
-test x = x$gnulib_path

FYI: [PATCH 5/5] bootstrap: escape quotes properly in generated functions.

2011-12-07 Thread Gary V. Vaughan
* bootstrap: Although not a real bug, for consistency, be sure
to correctly escape single quotes inside a single quoted
function generator.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 bootstrap |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/bootstrap b/bootstrap
index 5cd9cb0..d0567be 100755
--- a/bootstrap
+++ b/bootstrap
@@ -1018,7 +1018,7 @@ for tool in autoconf libtoolize autopoint; do
 # in order for `func_find_tool` to run.
 ${require_'$tool'-:}
 
-printf '%s\n' $buildreq |func_grep_q '\''^[   ]*'$tool\'' || {
+printf '\''%s\n'\'' $buildreq |func_grep_q '\''^[ ]*'$tool\'' || 
{
   func_extract_trace '$m'
   _G_version=$func_extract_trace_result
   test -n $_G_version  {
-- 
1.7.7.4

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



Re: [PATCH 3/4] maint: pick XSI funcs at runtime, not configure time.

2011-11-28 Thread Gary V. Vaughan
Hi Peter,

On 28 Nov 2011, at 15:48, Peter Rosin wrote:
 Gary V. Vaughan skrev 2011-11-25 09:57:
 Determine, on a function by function basis, what XSI features
 are available in the shell that is actually running the script,
 rather than the one that was picked at configure time by the
 re-execution engine.
 
 Doesn't this mean that the libtool script will do a number of
 extra forks each time it is run?

Well, yes and no.  There will be an extra 4 or 8 evals (depending
on whether the XSI function is chosen) as libtool starts up when
compared to 2.4.2, but the fast_funcs will each save a fork or
two on every invocation compared to if libtool configure found a non-
XSI shell when libtool was installed.  However, don't forget that
almost always, libtool is generated by the configure script of the
project that uses it, and the loss of seds, evals, and file renames
at configure time to splice in the fast_funcs most likely means
you'll be at a net win on total execution time for at least a couple
of dozen libtool invocations.

And let's not forget this actually fixes a bug... we've had reports
of configure re-execing with a good shell (say /opt/bin/bash) and
substituting in the XSI fast_funcs, but the libtool script doesn't
have all the slow re-exec machinery and runs with /bin/sh which then
chokes on the XSI extensions spliced in to libtool, unless the
caller manually sets SHELL and CONFIG_SHELL in their environment
before calling make (which is a bad idea for other reasons).

  If that's the case, I would like
 to know how that impacts the execution time on Cygwin/MinGW...

I don't have access to Windows so I can't actually measure it, but
I doubt that the difference will be noticeable for even a large
project, and quite possibly a small project like libltdl that only
runs libtool a hand full of times will actually be (imperceptibly)
faster.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



Re: [PATCH 3/4] maint: pick XSI funcs at runtime, not configure time.

2011-11-28 Thread Gary V. Vaughan
Hi Peter,

On 28 Nov 2011, at 18:05, Peter Rosin wrote:
 Gary V. Vaughan skrev 2011-11-28 10:20:
 On 28 Nov 2011, at 15:48, Peter Rosin wrote:
 Gary V. Vaughan skrev 2011-11-25 09:57:
 Determine, on a function by function basis, what XSI features
 are available in the shell that is actually running the script,
 rather than the one that was picked at configure time by the
 re-execution engine.
 
 Doesn't this mean that the libtool script will do a number of
 extra forks each time it is run?
 
 Well, yes and no.  There will be an extra 4 or 8 evals (depending
 on whether the XSI function is chosen) as libtool starts up when
 
 That's the evals in sub-shells, right? Those with this pattern:
 
   if $_use_fast_funcs  (eval ...) 2/dev/null
   then
 eval '...
 
 or this:
 
   if (eval ...) 2/dev/null
   then
 eval '...

Yes, that's them.

 [[snip]]
 If that's the case, I would like
 to know how that impacts the execution time on Cygwin/MinGW...
 
 I don't have access to Windows so I can't actually measure it, but
 I doubt that the difference will be noticeable for even a large
 project, and quite possibly a small project like libltdl that only
 runs libtool a hand full of times will actually be (imperceptibly)
 faster.
 
 I think you are underestimating the Cygwin fork pain.
 
 BTW, libltdl runs libtool more like 20 times, but I agree it's very
 small and the number of forks will not matter much.
 
 My typical use case is mid-sized at a magnitude or so larger, and
 even there with a fork rate of approx 10-15 Hz as I'm seeing, it wouldn't
 be too harsh with a couple of extra forks - a minutes or so on the
 wall clock time. But it would really add to the pain on some
 (hypothetical?) large project with thousands of libtool invocations.
 That's all I'm saying, but *I* am not building any of those...

Maybe I should switch the sense of the _use_fast_funcs, so that the
pattern becomes:

  if $libtool_force_fast_funcs || (eval ...) 2/dev/null
  then
 eval '...

And then recommend that cygwin users always use an XSI and += capable
shell, with libtool_force_fast_funcs=: in the environment to cut out the
forks?

 Hmm, looking closer, shouldn't _use_fast_funcs have some kind of lt
 prefix?

Good point.  I'll add a prefix before pushing.  Thanks.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



FYI: [PATCH] build: fix a quoting bug when regenerating with bootstrap_edit.

2011-11-25 Thread Gary V. Vaughan
Applied as obvious.

* Makefile.am (m4/ltversion.m4, build-aux/ltmain.sh): The
bootstrap_edit make macro already contains double quotes, so
when echoing it, don't surround it with more double quotes since
it is not escaped.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 Makefile.am |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 2c6cf81..5420510 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -152,7 +152,7 @@ $(ltversion_m4): $(ltversion_in) $(dotversion)
serial=`$(git_commit_count)`; \
  fi; \
  if test 0 = '$(V)'; then echo   GEN$@; \
- else echo $(bootstrap_edit) '$(ltversion_in)'  '$@'; fi; \
+ else echo $(bootstrap_edit) '$(ltversion_in)'  '$@'; fi; \
  $(bootstrap_edit) '$(ltversion_in)'  '$@'; \
  chmod a-w '$@'; \
fi
@@ -179,7 +179,7 @@ $(ltmain_sh): $(ltmain_m4sh) $(sh_files) $(dotversion)
if $$rebuild; then \
  rm -f '$@'; \
  if test 0 = '$(V)'; then echo   GEN$@; \
- else echo $(LT_M4SH) '$(ltmain.m4sh)' | $(ltmain_sh_edit)  '$@'; 
fi; \
+ else echo $(LT_M4SH) '$(ltmain.m4sh)' | $(ltmain_sh_edit)  '$@'; 
fi; \
  $(LT_M4SH) '$(ltmain_m4sh)' | $(ltmain_sh_edit)  '$@'; \
  chmod a-w '$@'; \
fi
-- 
1.7.7.4

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



FYI: [PATCH] maint: quote $file correctly in bootstrap.

2011-11-25 Thread Gary V. Vaughan
From: Gary V. Vaughan g...@gnu.org

Applied as obvious.

* bootstrap (func_insert_sorted_if_absent): Don't forget the
double quotes, since we can't control the content of $file.
Reported by Steffano Lattarini.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 bootstrap |6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/bootstrap b/bootstrap
index 8776e21..6ae2feb 100755
--- a/bootstrap
+++ b/bootstrap
@@ -2051,13 +2051,13 @@ func_insert_sorted_if_absent ()
 
 for file
 do
-  test -f $file || touch $file
+  test -f $file || touch $file
 
   func_grep_q $str $file \
func_verbose inserting \`$str' into \`$file'
 
-  echo $str |sort -u - $file |func_cmp_s - $file \
-|| echo $str |sort -u - $file -o $file \
+  echo $str |sort -u - $file |func_cmp_s - $file \
+|| echo $str |sort -u - $file -o $file \
 || func_permissions_error $file
 done
 }
-- 
1.7.7.4

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



[PATCH 1/4] libtoolize: rename and reorder copy filter functions.

2011-11-25 Thread Gary V. Vaughan
This short series of changesets refactors the copy filtering process
to be more managable and easily extensible (which comes in handy for
some of the later changesets still incubating in my queue), with a
slight detour in the middle to generalize and tidy up the XSI support
the filter functions make use of.

I'll push the whole series in 72 hours or so subject to feedback.

Keep all the sorted copy filtering functions together by
renaming them to have `_filter' first.
* libtoolize.m4sh (require_Makefile_am_filter)
(require_Makefile_inc_filter, require_aclocal_m4_filter)
(require_configure_ac_filter): Renamed from these...
(require_filter_Makefile_am, require_filter_ltdl_mk)
(require_filter_aclocal_m4, require_filter_configure_ac): ...to
these, respectively.  Move the definitions to maintain
asciibetical ordering of require functions.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 libtoolize.m4sh |  274 +++---
 1 files changed, 137 insertions(+), 137 deletions(-)

diff --git a/libtoolize.m4sh b/libtoolize.m4sh
index 31bbf3e..bfa84f3 100644
--- a/libtoolize.m4sh
+++ b/libtoolize.m4sh
@@ -787,8 +787,8 @@ func_install_pkgltdl_files ()
   pkgltdl_header=putting libltdl files in \`$ltdl_dir'.
 fi
 
-$require_Makefile_am_filter
-$require_Makefile_inc_filter
+$require_filter_Makefile_am
+$require_filter_ltdl_mk
 
 # Copy ltdl sources appropriate to the requested ltdl_mode.
 for file in $pkgltdl_files; do
@@ -796,23 +796,23 @@ func_install_pkgltdl_files ()
   case $file in
 Makefile.am|Makefile.in)
   test nonrecursive = $ltdl_mode  continue
-  my_copy_filter=$Makefile_am_filter
+  my_copy_filter=$filter_Makefile_am
   ;;
 
 ltdl.mk)
   test nonrecursive = $ltdl_mode || continue
-  my_copy_filter=$Makefile_inc_filter
+  my_copy_filter=$filter_ltdl_mk
   ;;
 
 aclocal.m4)
   test subproject = $ltdl_mode  {
-$require_aclocal_m4_filter
+$require_filter_aclocal_m4
 
 # Always copy aclocal.m4, otherwise regenerating it can
 # overwrite the destination if it is symlinked.
 ( opt_copy=:
   func_copy $file $pkgltdldir $ltdl_dir \
-pkgltdl_header $aclocal_m4_filter
+pkgltdl_header $filter_aclocal_m4
 )
   }
   continue
@@ -824,13 +824,13 @@ func_install_pkgltdl_files ()
 
 configure)
   test subproject = $ltdl_mode  {
-$require_configure_ac_filter
+$require_filter_configure_ac
 
 # Always copy configure, otherwise regenerating it can
 # overwrite the destination if it is symlinked.
 ( opt_copy=:
   func_copy $file $pkgltdldir $ltdl_dir \
-pkgltdl_header $configure_ac_filter
+pkgltdl_header $filter_configure_ac
 )
   }
   continue
@@ -838,8 +838,8 @@ func_install_pkgltdl_files ()
 
 configure.ac)
   test subproject = $ltdl_mode || continue
-  $require_configure_ac_filter
-  my_copy_filter=$configure_ac_filter
+  $require_filter_configure_ac
+  my_copy_filter=$filter_configure_ac
   ;;
   esac
 
@@ -1245,98 +1245,6 @@ for base in '' ltdl_; do
 done
 
 
-# require_Makefile_am_filter
-# --
-# Set `Makefile_am_filter' ready for passing to func_copy when libltdl's
-# stock Makefile.am contents need to be filtered to work in recursive
-# mode.
-require_Makefile_am_filter=func_require_Makefile_am_filter
-func_require_Makefile_am_filter ()
-{
-$debug_cmd
-
-$require_ltdl_mode
-
-case $ltdl_mode in
-  recursive)
-Makefile_am_filter='
-/^[^#]/{
-  s|(LIBOBJS)|(ltdl_LIBOBJS)|g
-  s|(LTLIBOBJS)|(ltdl_LTLIBOBJS)|g
-}'
-;;
-
-  subproject)
-$require_ltdl_ac_aux_dir
-$require_ltdl_am_macro_dir
-$require_ltdl_relative_aux_dir
-$require_ltdl_relative_macro_dir
-
-test $ltdl_am_macro_dir = $ltdl_relative_macro_dir || {
-  my_am_macro_dir_regex=`$ECHO \
-$ltdl_am_macro_dir |$SED $sed_make_literal_regex`
-
-  Makefile_am_filter=
-/^ACLOCAL_AMFLAGS = /{
-  s| -I $my_am_macro_dir_regex\$| -I $ltdl_relative_macro_dir|
-}
-s|dir)/$my_am_macro_dir_regex|dir)/$ltdl_relative_macro_dir|g
-}
-
-test $ltdl_ac_aux_dir = $ltdl_relative_aux_dir || {
-  my_aux_dir_regex=`$ECHO \
-$ltdl_ac_aux_dir |$SED $sed_make_literal_regex`
-
-  Makefile_am_filter=$Makefile_am_filter
-s|$my_aux_dir_regex|$ltdl_relative_aux_dir|g
-s|/\./|/|g
-  
-}
-;;
-esac
-
-require_Makefile_am_filter=:
-}
-
-
-# require_Makefile_inc_filter
-# ---
-# Set

[PATCH 2/4] maint: share useful functions from general.m4sh.

2011-11-25 Thread Gary V. Vaughan
* build-aux/ltmain.m4sh (func_append, func_append_quoted)
(func_arith, func_len): Removed from here...
* build-aux/general.m4sh (func_append, func_append_quoted)
(func_arith, func_len): ...and added to here.
(func_dirname, func_dirname_and_basename, func_normal_abspath)
(func_relative_path): Use func_append.
* tests/getopt-m4sh.at (_LT_AT_FALLBACK_FUNC_EXTRACT): Removed.
Fallback functions are now in any m4sh generated file
automatically.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 build-aux/general.m4sh |   42 ++
 build-aux/ltmain.m4sh  |   31 ---
 tests/getopt-m4sh.at   |   14 --
 3 files changed, 38 insertions(+), 49 deletions(-)

diff --git a/build-aux/general.m4sh b/build-aux/general.m4sh
index 566dc39..eeda222 100644
--- a/build-aux/general.m4sh
+++ b/build-aux/general.m4sh
@@ -73,6 +73,40 @@ IFS= $lt_nl
 dirname='s|/[^/]*$||'
 basename='s|^.*/||'
 
+
+# func_append var value
+# Append VALUE to the end of shell variable VAR.
+func_append ()
+{
+eval $1=\$$1\$2
+} # func_append may be replaced by extended shell implementation
+
+
+# func_append_quoted var value
+# Quote VALUE and append to the end of shell variable VAR, separated
+# by a space.
+func_append_quoted ()
+{
+func_quote_for_eval $2
+eval $1=\$$1\\ \$func_quote_for_eval_result
+} # func_append_quoted may be replaced by extended shell implementation
+
+
+# func_arith arithmetic-term...
+func_arith ()
+{
+func_arith_result=`expr $@`
+} # func_arith may be replaced by extended shell implementation
+
+
+# func_len string
+# STRING may not start with a hyphen.
+func_len ()
+{
+func_len_result=`expr $1 : .* 2/dev/null || echo $max_cmd_len`
+} # func_len may be replaced by extended shell implementation
+
+
 # func_dirname file append nondir_replacement
 # Compute the dirname of FILE.  If nonempty, add APPEND to the result,
 # otherwise set result to NONDIR_REPLACEMENT.
@@ -82,7 +116,7 @@ func_dirname ()
 if test X$func_dirname_result = X$1; then
   func_dirname_result=$3
 else
-  func_dirname_result=$func_dirname_result$2
+  func_append func_dirname_result $2
 fi
 } # func_dirname may be replaced by extended shell implementation
 
@@ -113,7 +147,7 @@ func_dirname_and_basename ()
 if test X$func_dirname_result = X$1; then
   func_dirname_result=$3
 else
-  func_dirname_result=$func_dirname_result$2
+  func_append func_dirname_result $2
 fi
 func_basename_result=`$ECHO $1 | $SED -e $basename`
 } # func_dirname_and_basename may be replaced by extended shell implementation
@@ -212,7 +246,7 @@ func_normal_abspath ()
   ;;
   *)
 # Actual path component, append it.
-
func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
+func_append func_normal_abspath_result 
/$func_normal_abspath_tcomponent
   ;;
 esac
   done
@@ -268,7 +302,7 @@ func_relative_path ()
   func_relative_path_result=$func_stripname_result
   func_stripname '/' '/' $func_relative_path_tcancelled
   if test -n $func_stripname_result; then
-func_relative_path_result=$func_relative_path_result/$func_stripname_result
+func_append func_relative_path_result /$func_stripname_result
   fi
 
   # Normalisation. If bindir is libdir, return `.' else relative path.
diff --git a/build-aux/ltmain.m4sh b/build-aux/ltmain.m4sh
index 160d8af..b88c984 100644
--- a/build-aux/ltmain.m4sh
+++ b/build-aux/ltmain.m4sh
@@ -148,37 +148,6 @@ extracted_serial=0
 # left over by shells.
 exec_cmd=
 
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
-eval $1=\$$1\$2
-} # func_append may be replaced by extended shell implementation
-
-# func_append_quoted var value
-# Quote VALUE and append to the end of shell variable VAR, separated
-# by a space.
-func_append_quoted ()
-{
-func_quote_for_eval $2
-eval $1=\$$1\\ \$func_quote_for_eval_result
-} # func_append_quoted may be replaced by extended shell implementation
-
-
-# func_arith arithmetic-term...
-func_arith ()
-{
-func_arith_result=`expr $@`
-} # func_arith may be replaced by extended shell implementation
-
-
-# func_len string
-# STRING may not start with a hyphen.
-func_len ()
-{
-func_len_result=`expr $1 : .* 2/dev/null || echo $max_cmd_len`
-} # func_len may be replaced by extended shell implementation
-
 
 # func_lo2o object
 func_lo2o ()
diff --git a/tests/getopt-m4sh.at b/tests/getopt-m4sh.at
index 5eec5c2..81160db 100644
--- a/tests/getopt-m4sh.at
+++ b/tests/getopt-m4sh.at
@@ -53,18 +53,6 @@ $SED s|@LN_S\@|$LN_S|g;s|@SED\@|$SED|g t-options  options
 ])# _LT_AT_GETOPT_M4SH_SETUP
 
 
-# _LT_AT_FALLBACK_FUNC_EXTRACT(FUNC-NAME)
-# ---
-# Extract the fallback function FUNC-NAME from ltmain.m4sh
-m4_define([_LT_AT_FALLBACK_FUNC_EXTRACT],
-[dnl {{
-$SED '/^# func_dirname /q' options  options.tmp
-echo '# func_append var

[PATCH 3/4] maint: pick XSI funcs at runtime, not configure time.

2011-11-25 Thread Gary V. Vaughan
Determine, on a function by function basis, what XSI features
are available in the shell that is actually running the script,
rather than the one that was picked at configure time by the
re-execution engine.
* m4/libtool.m4 (_LT_PROG_FUNCTION_REPLACE)
(_LT_PROG_REPLACE_SHELLFNS): Remove.
(_LT_CHECK_SHELL_FEATURES): Remove tests for XSI and += support.
* build-aux/general.m4sh (func_append, func_append_quoted)
(func_arith, func_len, func_basename, func_dirname)
(func_dirname_and_basename, func_stripname): List both enhanced
and fallback implementations, and choose one based on whether
the enhanced features required by the fastest version are
available.
* build-aux/getopt.m4sh (func_split_short_opt)
(func_split_long_opt): Ditto.
* build-aux/ltmain.m4sh (func_lo2o, func_xform): Ditto.
* tests/getopt-m4sh.at: Add tests for enhanced and fallback
implementations of func_arith, func_len, func_stripname and
func_dirname_and_basename.
* NEWS: Updated.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 NEWS   |4 +
 build-aux/general.m4sh |  162 ---
 build-aux/getopt.m4sh  |   38 ++--
 build-aux/ltmain.m4sh  |   33 --
 m4/libtool.m4  |  117 +--
 tests/getopt-m4sh.at   |  116 --
 6 files changed, 256 insertions(+), 214 deletions(-)

diff --git a/NEWS b/NEWS
index 0479a34..ecd4fa1 100644
--- a/NEWS
+++ b/NEWS
@@ -49,6 +49,10 @@ NEWS - list of user-visible changes between releases of GNU 
Libtool
 mode is selected; `--standalone' never worked, and is no longer
 accepted.
   - Libtool and libtoolize no longer choke on paths with a comma in them.
+  - In the case where $SHELL does not have the same enhanced features
+(e.g. the ability to parse `var+=append') as $CONFIG_SHELL, libtool
+will now correctly fallback to using only vanilla shell features
+instead of failing with a parse at startup.
 
 ** Important incompatible changes:
 
diff --git a/build-aux/general.m4sh b/build-aux/general.m4sh
index eeda222..648315d 100644
--- a/build-aux/general.m4sh
+++ b/build-aux/general.m4sh
@@ -73,63 +73,114 @@ IFS=   $lt_nl
 dirname='s|/[^/]*$||'
 basename='s|^.*/||'
 
-
-# func_append var value
-# Append VALUE to the end of shell variable VAR.
-func_append ()
-{
+: ${_use_fast_funcs=:}
+
+if $_use_fast_funcs  (eval 'x=a; x+= b; test a b = $x') 2/dev/null
+then
+  # func_append var value
+  # Append VALUE to the end of shell variable VAR.
+  eval 'func_append ()
+  {
+eval $1+=\$2
+  }'
+
+  # func_append_quoted var value
+  # Quote VALUE and append to the end of shell variable VAR, separated
+  # by a space.
+  eval 'func_append_quoted ()
+  {
+func_quote_for_eval $2
+eval $1+=\\ \$func_quote_for_eval_result
+  }'
+else
+  func_append ()
+  {
 eval $1=\$$1\$2
-} # func_append may be replaced by extended shell implementation
+  }
 
-
-# func_append_quoted var value
-# Quote VALUE and append to the end of shell variable VAR, separated
-# by a space.
-func_append_quoted ()
-{
+  func_append_quoted ()
+  {
 func_quote_for_eval $2
 eval $1=\$$1\\ \$func_quote_for_eval_result
-} # func_append_quoted may be replaced by extended shell implementation
+  }
+fi
 
 
 # func_arith arithmetic-term...
-func_arith ()
-{
+if $_use_fast_funcs  (eval 'x=$(( 1 + 1 )); test 2 = $x') 2/dev/null
+then
+  eval 'func_arith ()
+  {
+func_arith_result=$(( $* ))
+  }'
+else
+  func_arith ()
+  {
 func_arith_result=`expr $@`
-} # func_arith may be replaced by extended shell implementation
+  }
+fi
 
 
 # func_len string
 # STRING may not start with a hyphen.
-func_len ()
-{
+if $_use_fast_funcs  (eval 'x=12; test 2 = ${#x}') 2/dev/null
+then
+  eval 'func_len ()
+  {
+func_len_result=${#1}
+  }'
+else
+  func_len ()
+  {
 func_len_result=`expr $1 : .* 2/dev/null || echo $max_cmd_len`
-} # func_len may be replaced by extended shell implementation
+  }
+fi
 
 
-# func_dirname file append nondir_replacement
-# Compute the dirname of FILE.  If nonempty, add APPEND to the result,
-# otherwise set result to NONDIR_REPLACEMENT.
-func_dirname ()
-{
-func_dirname_result=`$ECHO $1 | $SED $dirname`
-if test X$func_dirname_result = X$1; then
-  func_dirname_result=$3
-else
-  func_append func_dirname_result $2
-fi
-} # func_dirname may be replaced by extended shell implementation
+if $_use_fast_funcs \
+ (eval 'x=a/x/b; a=${x%/*}; b=${x##*/}; test ba/x = $a$b') 2/dev/null
+then
+  # If this shell supports suffix pattern removal, then use it to avoid
+  # forking. Hide the definitions single quotes in case the shell chokes
+  # on unsupported syntax...
+
+  _b='func_basename_result=${1##*/}'
+  _d='case $1 in
+*/*) func_dirname_result=${1%/*}$2 ;;
+*  ) func_dirname_result=$3;;
+  esac'
+
+else
+  # ...otherwise fall back to using sed.
+
+  _b='func_basename_result=`$ECHO $1 |$SED $basename`'
+  _d

[PATCH 01/10] tests: migrate legacy tests/cdemo tests to Autotest.

2011-11-25 Thread Gary V. Vaughan
The best reason I can find for keeping the various demo directories
around (despite the fact we already make use of the much better test
harness of Autotest for all our new test cases) from the last time
I wanted to migrate everything out of the legacy testsuite, was that
it exercises the distribution manager's autotools combination on the
testers machine, where the Autotests always use the users autotools.
That's no argument as far as I can see: we want tests to fail as
early as possible on a users machine to help him know things are not
going to work properly if he keeps going - and having the legacy
suite pass is only encouraging users to fight with broken installs.

This series of patches migrates all 9 of the demo directory test
groups into Autotest, and allows us to remove most of the legacy
testsuite cruft at the end.  There's still a few legacy tests
left at the end, which I'll tackle later, but at least maintenance
is a whole lot easier now that we don't need to wait for 9 additional
directories to autoreconf every time we run bootstrap, or distcheck,
or roll up a distribution tarball to test on the local network.

This is all in keeping with the theme of most of the patches I've
posted this year, to make libtool easier and more fun to maintain
and contribute to, in the hope of getting more people involved.

As usual, subject to feedback, I'll push this whole series in
72 hours or so.  Make distcheck passes for me on my Mac 10.7 and
my Arch Linux x86_64 machines, but it would be great if folks with
access to other machines could give it a spin to see whether I
broke any of the tests during migration... if you'd like a pre-
rolled distro with my pending patches applied to do that, then
please do ask.

* tests/cdemo.at: New Autotest groups, based on...
* tests/cdemo-conf.test, tests/cdemo-exec.test,
tests/cdemo-make.test, tests/cdemo-shared-exec.test,
tests/cdemo-shared-make.test, tests/cdemo-shared.test,
tests/cdemo-static-exec.test, tests/cdemo-static-make.test,
tests/cdemo-static.test, tests/cdemo-undef-exec.test,
tests/cdemo-undef-make.test, tests/cdemo-undef.test: ...these
legacy test cases, now removed.
tests/cdemo/Makefile.am, tests/cdemo/README,
tests/cdemo/configure.ac, tests/cdemo/foo.c, tests/cdemo/foo.h,
tests/cdemo/main.c: Remove.
* configure.ac (CONF_SUBDIRS): Remove tests/cdemo.
* Makefile.am: Adjust.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 Makefile.am  |   29 +--
 configure.ac |2 +-
 tests/cdemo-conf.test|   34 ---
 tests/cdemo-exec.test|   34 ---
 tests/cdemo-make.test|   34 ---
 tests/cdemo-shared-exec.test |3 -
 tests/cdemo-shared-make.test |3 -
 tests/cdemo-shared.test  |   34 ---
 tests/cdemo-static-exec.test |3 -
 tests/cdemo-static-make.test |3 -
 tests/cdemo-static.test  |   34 ---
 tests/cdemo-undef-exec.test  |3 -
 tests/cdemo-undef-make.test  |3 -
 tests/cdemo-undef.test   |   49 --
 tests/cdemo.at   |  201 ++
 tests/cdemo/.gitignore   |1 -
 tests/cdemo/Makefile.am  |   53 ---
 tests/cdemo/README   |4 -
 tests/cdemo/configure.ac |   63 -
 tests/cdemo/foo.c|   42 -
 tests/cdemo/foo.h|   37 
 tests/cdemo/main.c   |   45 --
 22 files changed, 205 insertions(+), 509 deletions(-)
 delete mode 100755 tests/cdemo-conf.test
 delete mode 100755 tests/cdemo-exec.test
 delete mode 100755 tests/cdemo-make.test
 delete mode 100755 tests/cdemo-shared-exec.test
 delete mode 100755 tests/cdemo-shared-make.test
 delete mode 100755 tests/cdemo-shared.test
 delete mode 100755 tests/cdemo-static-exec.test
 delete mode 100755 tests/cdemo-static-make.test
 delete mode 100755 tests/cdemo-static.test
 delete mode 100755 tests/cdemo-undef-exec.test
 delete mode 100755 tests/cdemo-undef-make.test
 delete mode 100755 tests/cdemo-undef.test
 create mode 100644 tests/cdemo.at
 delete mode 100644 tests/cdemo/.gitignore
 delete mode 100644 tests/cdemo/Makefile.am
 delete mode 100644 tests/cdemo/README
 delete mode 100644 tests/cdemo/configure.ac
 delete mode 100644 tests/cdemo/foo.c
 delete mode 100644 tests/cdemo/foo.h
 delete mode 100644 tests/cdemo/main.c

diff --git a/Makefile.am b/Makefile.am
index c55dfdd..77941ac 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -630,13 +630,14 @@ TESTSUITE = tests/testsuite
 TESTSUITE_AT   = tests/testsuite.at \
  tests/getopt-m4sh.at \
  tests/libtoolize.at \
+ tests/cdemo.at \
+ tests/convenience.at \
  tests/help.at \
  tests/duplicate_members.at \
  tests/duplicate_conv.at \
  tests/duplicate_deps.at \
  tests/flags.at \
  tests/inherited_flags.at \
- tests/convenience.at \
  tests

[PATCH 04/10] tests: migrate legacy tests/tagdemo tests to Autotest.

2011-11-25 Thread Gary V. Vaughan
* tests/tagdemo.at: New autotest groups, based on...
tests/tagdemo-conf.test, tests/tagdemo-exec.test,
tests/tagdemo-make.test, tests/tagdemo-shared-exec.test,
tests/tagdemo-shared-make.test, tests/tagdemo-shared.test,
tests/tagdemo-static-exec.test, tests/tagdemo-static-make.test,
tests/tagdemo-static.test, tests/tagdemo-undef-exec.test,
tests/tagdemo-undef-make.test, tests/tagdemo-undef.test:
...these legacy tests, now removed.
* tests/tagdemo/.gitignore, tests/tagdemo/Makefile.am,
tests/tagdemo/README, tests/tagdemo/baz.cpp,
tests/tagdemo/baz.h, tests/tagdemo/configure.ac,
tests/tagdemo/conv.cpp, tests/tagdemo/conv.h,
tests/tagdemo/foo.cpp, tests/tagdemo/foo.h,
tests/tagdemo/main.cpp: Remove.
* configure.ac (CONF_SUBDIRS): Remove tests/tagdemo.
* Makefile.am: Adjust.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 Makefile.am|   32 +---
 configure.ac   |2 +-
 tests/tagdemo-conf.test|   34 
 tests/tagdemo-exec.test|   34 
 tests/tagdemo-make.test|   34 
 tests/tagdemo-shared-exec.test |3 -
 tests/tagdemo-shared-make.test |3 -
 tests/tagdemo-shared.test  |   34 
 tests/tagdemo-static-exec.test |3 -
 tests/tagdemo-static-make.test |3 -
 tests/tagdemo-static.test  |   34 
 tests/tagdemo-undef-exec.test  |3 -
 tests/tagdemo-undef-make.test  |3 -
 tests/tagdemo-undef.test   |   50 -
 tests/tagdemo.at   |  408 
 tests/tagdemo/.gitignore   |1 -
 tests/tagdemo/Makefile.am  |   63 --
 tests/tagdemo/README   |6 -
 tests/tagdemo/baz.cpp  |   38 
 tests/tagdemo/baz.h|   46 -
 tests/tagdemo/configure.ac |   96 --
 tests/tagdemo/conv.cpp |   32 ---
 tests/tagdemo/conv.h   |   35 
 tests/tagdemo/foo.cpp  |   68 ---
 tests/tagdemo/foo.h|   59 --
 tests/tagdemo/main.cpp |   79 
 26 files changed, 411 insertions(+), 792 deletions(-)
 delete mode 100755 tests/tagdemo-conf.test
 delete mode 100755 tests/tagdemo-exec.test
 delete mode 100755 tests/tagdemo-make.test
 delete mode 100755 tests/tagdemo-shared-exec.test
 delete mode 100755 tests/tagdemo-shared-make.test
 delete mode 100755 tests/tagdemo-shared.test
 delete mode 100755 tests/tagdemo-static-exec.test
 delete mode 100755 tests/tagdemo-static-make.test
 delete mode 100755 tests/tagdemo-static.test
 delete mode 100755 tests/tagdemo-undef-exec.test
 delete mode 100755 tests/tagdemo-undef-make.test
 delete mode 100755 tests/tagdemo-undef.test
 create mode 100644 tests/tagdemo.at
 delete mode 100644 tests/tagdemo/.gitignore
 delete mode 100644 tests/tagdemo/Makefile.am
 delete mode 100644 tests/tagdemo/README
 delete mode 100644 tests/tagdemo/baz.cpp
 delete mode 100644 tests/tagdemo/baz.h
 delete mode 100644 tests/tagdemo/configure.ac
 delete mode 100644 tests/tagdemo/conv.cpp
 delete mode 100644 tests/tagdemo/conv.h
 delete mode 100644 tests/tagdemo/foo.cpp
 delete mode 100644 tests/tagdemo/foo.h
 delete mode 100644 tests/tagdemo/main.cpp

diff --git a/Makefile.am b/Makefile.am
index 28eee5c..ac76788 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -681,6 +681,7 @@ TESTSUITE_AT= tests/testsuite.at \
  tests/subproject.at \
  tests/nonrecursive.at \
  tests/recursive.at \
+ tests/tagdemo.at \
  tests/template.at \
  tests/ctor.at \
  tests/exceptions.at \
@@ -805,32 +806,6 @@ clean-local: clean-local-legacy
 #   using the new framework above.  When the migration is
 #   complete this section should be removed.
 
-CXX_TESTS = \
-   tests/tagdemo-static.test \
-   tests/tagdemo-static-make.test \
-   tests/tagdemo-static-exec.test \
-   tests/tagdemo-conf.test \
-   tests/tagdemo-make.test \
-   tests/tagdemo-exec.test \
-   tests/tagdemo-shared.test \
-   tests/tagdemo-shared-make.test \
-   tests/tagdemo-shared-exec.test \
-   tests/tagdemo-undef.test \
-   tests/tagdemo-undef-make.test \
-   tests/tagdemo-undef-exec.test
-
-tests/tagdemo-undef-exec.log:  tests/tagdemo-undef-make.log
-tests/tagdemo-undef-make.log:  tests/tagdemo-undef.log
-tests/tagdemo-undef.log:   tests/tagdemo-shared-exec.log
-tests/tagdemo-shared-exec.log: tests/tagdemo-shared-make.log
-tests/tagdemo-shared-make.log: tests/tagdemo-shared.log
-tests/tagdemo-shared.log:  tests/tagdemo-exec.log
-tests/tagdemo-exec.log:tests/tagdemo-make.log
-tests/tagdemo-make.log:tests/tagdemo-conf.log
-tests/tagdemo-conf.log:tests/tagdemo-static-exec.log
-tests/tagdemo-static-exec.log: tests/tagdemo-static-make.log
-tests/tagdemo-static-make.log: tests/tagdemo-static.log
-
 F77_TESTS = \
tests/f77demo-static.test \
tests/f77demo-static-make.test \
@@ -932,9 +907,6

[PATCH 07/10] tests: migrate legacy tests/mdemo2 tests to Autotest.

2011-11-25 Thread Gary V. Vaughan
This test was just a small non-ltdl aware library to load a
library from the legacy mdemo test, which in turn used ltdl to
call functions from modules. No need to create a whole other
test group with copies of everything from mdemo setup - just
tack the additional test on the end of the mdemo group.
* tests/mdemo.at (link with library that loads ltdl modules):
New test, based on...
* tests/mdemo2-conf.test, tests/mdemo-exec.test,
tests/mdemo-make.test: ...these legacy tests, now removed.
* tests/mdemo2/Makefile.am, tests/mdemo2/README,
tests/mdemo2/configure.ac, tests/mdemo2/main.c: Remove.
* configure.ac (CONF_SUBDIRS): Remove tests/mdemo2.
* Makefile.am: Adjust.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 Makefile.am   |9 +
 configure.ac  |3 +-
 tests/mdemo.at|   83 +
 tests/mdemo2-conf.test|   34 --
 tests/mdemo2-exec.test|   35 ---
 tests/mdemo2-make.test|   35 ---
 tests/mdemo2/.gitignore   |2 -
 tests/mdemo2/Makefile.am  |   53 
 tests/mdemo2/README   |4 --
 tests/mdemo2/configure.ac |   62 -
 tests/mdemo2/main.c   |   46 -
 11 files changed, 85 insertions(+), 281 deletions(-)
 delete mode 100755 tests/mdemo2-conf.test
 delete mode 100755 tests/mdemo2-exec.test
 delete mode 100755 tests/mdemo2-make.test
 delete mode 100644 tests/mdemo2/.gitignore
 delete mode 100644 tests/mdemo2/Makefile.am
 delete mode 100644 tests/mdemo2/README
 delete mode 100644 tests/mdemo2/configure.ac
 delete mode 100644 tests/mdemo2/main.c

diff --git a/Makefile.am b/Makefile.am
index fe21b6e..2f9b90b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -854,14 +854,7 @@ COMMON_TESTS = \
tests/objectlist.test \
tests/quote.test \
tests/suffix.test \
-   tests/tagtrace.test \
-   tests/mdemo2-conf.test \
-   tests/mdemo2-make.test \
-   tests/mdemo2-exec.test
-
-tests/mdemo2-exec.log: tests/mdemo2-make.log
-tests/mdemo2-make.log: tests/mdemo2-conf.log \
-   tests/mdemo-dryrun.log
+   tests/tagtrace.test
 
 INTERACTIVE_TESTS =
 NONINTERACTIVE_TESTS = $(COMMON_TESTS)
diff --git a/configure.ac b/configure.ac
index f031fb6..fe76f2d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -126,8 +126,7 @@ AC_SUBST([pkgaux_scripts])
 
 # All subdirectories that are configured on demand, but that must be
 # included in the distribution.
-CONF_SUBDIRS=tests/f77demo tests/fcdemo \
-   tests/mdemo2
+CONF_SUBDIRS=tests/f77demo tests/fcdemo
 AC_SUBST([CONF_SUBDIRS])
 
 DIST_MAKEFILE_LIST=
diff --git a/tests/mdemo.at b/tests/mdemo.at
index d1ece9f..12c762d 100644
--- a/tests/mdemo.at
+++ b/tests/mdemo.at
@@ -103,6 +103,12 @@ mdemo_static_DEPENDENCIES = $(mdemo_DEPENDENCIES)
 
 libtool: $(LIBTOOL_DEPS)
$(SHELL) ./config.status --recheck
+
+include $(srcdir)/mdemo.mk
+]])
+
+AT_DATA([mdemo.mk],
+[[# Don't abort for lack of mdemo.mk
 ]])
 
 AT_DATA([foo.h],
@@ -780,3 +786,80 @@ force_dry_run=false
 _LT_CHECK_UNINSTALL
 
 AT_CLEANUP
+
+## --- ##
+## Mdemo2. ##
+## --- ##
+
+AT_SETUP([link with library that loads ltdl modules])
+
+_LT_SETUP
+
+AT_DATA([mdemo.mk],
+[[bin_PROGRAMS += mdemo2 mdemo2_static
+
+# Create a version of mdemo2 that links a library that does dlopen.
+mdemo2_LDFLAGS = -export-dynamic -dlopen force
+mdemo2_LDADD = libmlib.la
+
+# Create a statically linked version of mdemo.
+mdemo2_static_SOURCES = mdemo2.c
+mdemo2_static_LDFLAGS = $(STATIC) $(mdemo2_LDFLAGS)
+mdemo2_static_LDADD = $(mdemo2_LDADD)
+mdemo2_static_DEPENDENCIES = $(mdemo2_DEPENDENCIES)
+]])
+
+AT_DATA([mdemo2.c],
+[[#include stdio.h
+#include ltdl.h
+
+extern int mlib_func (int, char **);
+
+int main (int argc, char **argv)
+{
+  int ret = 0;
+
+  printf (Welcome to GNU libtool mdemo2!\n);
+  if (argc  2) {
+fprintf (stderr, usage: %s module [module...]\n, argv[0]);
+  }
+
+  /* This must be called in the program to get the preloaded symbols */
+  LTDL_SET_PRELOADED_SYMBOLS();
+
+  ret = mlib_func(argc, argv);
+
+  return ret;
+}
+]])
+
+AT_DATA([expout],
+[[Welcome to GNU libtool mdemo2!
+module name: foo1
+module reference count: 1
+** This is foolib 1 **
+hello returned: 57616
+hello is ok!
+cos (0.0) = 1
+sub() called
+foo1 is ok!
+module name: libfoo2
+module reference count: 1
+** This is foolib 2 **
+hello returned: 57616
+hello is ok!
+sin (0.0) = 0
+sub() called
+foo2 is ok!
+]])
+
+_LT_CHECK_CONFIG
+
+LT_AT_MAKE
+
+LT_AT_EXEC_CHECK([./mdemo2_static], 0, [expout], [],
+[./foo1.la ./libfoo2.la | $EGREP -v '^module filename: '])
+LT_AT_EXEC_CHECK([./mdemo2], 0, [expout], [],
+[./foo1.la ./libfoo2.la | $EGREP -v '^module filename: '])
+
+AT_CLEANUP
diff --git a/tests/mdemo2-conf.test b/tests/mdemo2-conf.test
deleted file mode 100755
index e37..000
--- a/tests/mdemo2-conf.test
+++ /dev/null

[PATCH 05/10] tests: migrate legacy tests/pdemo tests to Autotest.

2011-11-25 Thread Gary V. Vaughan
This test was a thinly veiled copy of the basic legacy
demo-conf.test series, with the addition of long file names that
are not unique in the first 17 characters of their name, mashed
up with the cmdline_wrap.at max_cmd_len limits.  Migrating to
Autotest means that this test will be automatically rerun with
max_cmd_len=24 as cmdline_wrap.at recurses through the whole
testsuite, so the migrated pdemo test is now simply another test
case in demo.at with longer file names.
* test/demo.at (linking with long file names): New test, based
on...
* tests/pdemo-conf.test, tests/pdemo-exec.test,
tests/pdemo-inst.test, tests/pdemo-make.test: ...these legacy
tests, now removed.
* tests/pdemo/Makefile.am, tests/pdemo/configure.ac,
tests/pdemo/foo.h, tests/pdemo/longer_file_name_dlmain.c,
tests/pdemo/longer_file_name_foo.c,
tests/pdemo/longer_file_name_foo2.c,
tests/pdemo/longer_file_name_hell1.c,
tests/pdemo/longer_file_name_hell2.c,
tests/pdemo/longer_file_name_hello.c,
tests/pdemo/longer_file_name_main.c: Remove.
* configure.ac (CONF_SUBDIRS): Remove tests/pdemo.
* Makefile.am: Adjust.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 Makefile.am   |9 --
 configure.ac  |2 +-
 tests/demo.at |  115 ++
 tests/pdemo-conf.test |   47 -
 tests/pdemo-exec.test |   36 ---
 tests/pdemo-inst.test |   38 ---
 tests/pdemo-make.test |   34 ---
 tests/pdemo/.gitignore|3 -
 tests/pdemo/Makefile.am   |  171 -
 tests/pdemo/configure.ac  |   73 --
 tests/pdemo/foo.h |  102 
 tests/pdemo/longer_file_name_dlmain.c |   97 ---
 tests/pdemo/longer_file_name_foo.c|   38 ---
 tests/pdemo/longer_file_name_foo2.c   |   35 ---
 tests/pdemo/longer_file_name_hell1.c  |   25 -
 tests/pdemo/longer_file_name_hell2.c  |   24 -
 tests/pdemo/longer_file_name_hello.c  |   36 ---
 tests/pdemo/longer_file_name_main.c   |   47 -
 18 files changed, 116 insertions(+), 816 deletions(-)
 delete mode 100755 tests/pdemo-conf.test
 delete mode 100755 tests/pdemo-exec.test
 delete mode 100755 tests/pdemo-inst.test
 delete mode 100755 tests/pdemo-make.test
 delete mode 100644 tests/pdemo/.gitignore
 delete mode 100644 tests/pdemo/Makefile.am
 delete mode 100644 tests/pdemo/configure.ac
 delete mode 100644 tests/pdemo/foo.h
 delete mode 100644 tests/pdemo/longer_file_name_dlmain.c
 delete mode 100644 tests/pdemo/longer_file_name_foo.c
 delete mode 100644 tests/pdemo/longer_file_name_foo2.c
 delete mode 100644 tests/pdemo/longer_file_name_hell1.c
 delete mode 100644 tests/pdemo/longer_file_name_hell2.c
 delete mode 100644 tests/pdemo/longer_file_name_hello.c
 delete mode 100644 tests/pdemo/longer_file_name_main.c

diff --git a/Makefile.am b/Makefile.am
index ac76788..4279389 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -868,10 +868,6 @@ COMMON_TESTS = \
tests/mdemo2-conf.test \
tests/mdemo2-make.test \
tests/mdemo2-exec.test \
-   tests/pdemo-conf.test \
-   tests/pdemo-make.test \
-   tests/pdemo-exec.test \
-   tests/pdemo-inst.test \
tests/mdemo-shared.test \
tests/mdemo-shared-make.test \
tests/mdemo-shared-exec.test \
@@ -900,11 +896,6 @@ tests/mdemo2-exec.log: tests/mdemo2-make.log
 tests/mdemo2-make.log: tests/mdemo2-conf.log \
tests/mdemo-dryrun.log
 
-tests/pdemo-inst.log:  tests/pdemo-exec.log
-tests/pdemo-exec.log:  tests/pdemo-make.log
-tests/pdemo-make.log:  tests/pdemo-conf.log
-
-
 INTERACTIVE_TESTS =
 NONINTERACTIVE_TESTS = $(COMMON_TESTS)
 if HAVE_F77
diff --git a/configure.ac b/configure.ac
index ab0fc04..d3908c8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -127,7 +127,7 @@ AC_SUBST([pkgaux_scripts])
 # All subdirectories that are configured on demand, but that must be
 # included in the distribution.
 CONF_SUBDIRS=tests/f77demo tests/fcdemo \
-   tests/mdemo tests/mdemo2 tests/pdemo
+   tests/mdemo tests/mdemo2
 AC_SUBST([CONF_SUBDIRS])
 
 DIST_MAKEFILE_LIST=
diff --git a/tests/demo.at b/tests/demo.at
index 347889d..751c9db 100644
--- a/tests/demo.at
+++ b/tests/demo.at
@@ -800,3 +800,118 @@ AT_CHECK([$unset LIBTOOL LIBTOOLIZE; $MAKE hell$EXEEXT 
libhello_la_OBJECTS=hello
  [1], [ignore], [ignore])
 
 AT_CLEANUP
+
+
+## --- ##
+## Pdemo conf. ##
+## --- ##
+
+AT_SETUP([linking with long file names])
+
+_LT_SETUP
+
+AT_DATA([Makefile.am],
+[[AUTOMAKE_OPTIONS = no-dependencies foreign
+ACLOCAL_AMFLAGS = -I m4
+
+# Build a libtool library, libhello.la for installation in libdir.
+lib_LTLIBRARIES = libhello.la
+libhello_la_SOURCES = longer_file_name_hello.c longer_file_name_foo.c 
longer_file_name_foo2.c
+libhello_la_LIBADD

[PATCH 08/10] tests: migrate legacy tests/f77demo tests to Autotest.

2011-11-25 Thread Gary V. Vaughan
* tests/f77demo.at: New autotest groups, based on...
* tests/f77demo-conf.test, tests/f77demo-exec.test,
tests/f77demo-make.test, tests/f77demo-shared-exec.test,
tests/f77demo-shared-make.test, tests/f77demo-shared.test,
tests/f77demo-static-exec.test, tests/f77demo-static-make.test,
tests/f77demo-static.test: ...these legacy tests, now removed.
* tests/f77demo/Makefile.am, tests/f77demo/README,
tests/f77demo/configure.ac, tests/f77demo/cprogram.c,
tests/f77demo/foo.h, tests/f77demo/fooc.c, tests/f77demo/foof.f,
tests/f77demo/foof2.f, tests/f77demo/foof3.f,
tests/f77demo/fprogram.f: Remove.
* configure.ac (CONF_SUBDIRS): Remove tests/f77demo.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 Makefile.am|   41 +-
 configure.ac   |2 +-
 tests/f77demo-conf.test|   34 
 tests/f77demo-exec.test|   35 -
 tests/f77demo-make.test|   36 -
 tests/f77demo-shared-exec.test |3 -
 tests/f77demo-shared-make.test |3 -
 tests/f77demo-shared.test  |   34 
 tests/f77demo-static-exec.test |3 -
 tests/f77demo-static-make.test |3 -
 tests/f77demo-static.test  |   34 
 tests/f77demo.at   |  332 
 tests/f77demo/.gitignore   |2 -
 tests/f77demo/Makefile.am  |   65 
 tests/f77demo/README   |   12 --
 tests/f77demo/configure.ac |   71 -
 tests/f77demo/cprogram.c   |   53 ---
 tests/f77demo/foo.h|   53 ---
 tests/f77demo/fooc.c   |   41 -
 tests/f77demo/foof.f   |   10 --
 tests/f77demo/foof2.f  |   12 --
 tests/f77demo/foof3.f  |   12 --
 tests/f77demo/fprogram.f   |   31 
 23 files changed, 339 insertions(+), 583 deletions(-)
 delete mode 100755 tests/f77demo-conf.test
 delete mode 100755 tests/f77demo-exec.test
 delete mode 100755 tests/f77demo-make.test
 delete mode 100755 tests/f77demo-shared-exec.test
 delete mode 100755 tests/f77demo-shared-make.test
 delete mode 100755 tests/f77demo-shared.test
 delete mode 100755 tests/f77demo-static-exec.test
 delete mode 100755 tests/f77demo-static-make.test
 delete mode 100755 tests/f77demo-static.test
 create mode 100644 tests/f77demo.at
 delete mode 100644 tests/f77demo/.gitignore
 delete mode 100644 tests/f77demo/Makefile.am
 delete mode 100644 tests/f77demo/README
 delete mode 100644 tests/f77demo/configure.ac
 delete mode 100644 tests/f77demo/cprogram.c
 delete mode 100644 tests/f77demo/foo.h
 delete mode 100644 tests/f77demo/fooc.c
 delete mode 100644 tests/f77demo/foof.f
 delete mode 100644 tests/f77demo/foof2.f
 delete mode 100644 tests/f77demo/foof3.f
 delete mode 100644 tests/f77demo/fprogram.f

diff --git a/Makefile.am b/Makefile.am
index 2f9b90b..670bbd4 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -694,6 +694,7 @@ TESTSUITE_AT= tests/testsuite.at \
  tests/stresstest.at \
  tests/cmdline_wrap.at \
  tests/pic_flag.at \
+ tests/f77demo.at \
  tests/darwin.at \
  tests/dumpbin-symbols.at \
  tests/deplibs-mingw.at \
@@ -768,9 +769,7 @@ installcheck-local: $(testsuite_deps)
  AUTOTEST_PATH='$(exec_prefix)/bin'
 
 check-noninteractive-old:
-   $(AM_V_at)'$(MAKE)' $(AM_MAKEFLAGS) check-TESTS 
TESTS='$(NONINTERACTIVE_TESTS)'
-check-interactive-old:
-   $(AM_V_at)'$(MAKE)' $(AM_MAKEFLAGS) check-TESTS 
TESTS='$(INTERACTIVE_TESTS)'
+   $(AM_V_at)'$(MAKE)' $(AM_MAKEFLAGS) check-TESTS TESTS='$(TESTS)'
 
 # Run only noninteractive parts of the new testsuite.
 check-noninteractive-new: $(testsuite_deps_uninstalled)
@@ -781,14 +780,13 @@ check-noninteractive-new: $(testsuite_deps_uninstalled)
  $(TESTSUITEFLAGS)
 
 # Run only interactive parts of the new testsuite.
-check-interactive-new: $(testsuite_deps_uninstalled)
+check-interactive: $(testsuite_deps_uninstalled)
$(AM_V_at)$(CD_TESTDIR); \
CONFIG_SHELL='$(SHELL)' '$(SHELL)' $$abs_srcdir/$(TESTSUITE) \
  $(TESTS_ENVIRONMENT) $(BUILDCHECK_ENVIRONMENT) \
  -k interactive -k recursive INNER_TESTSUITEFLAGS=',interactive' \
  $(TESTSUITEFLAGS)
 
-check-interactive: check-interactive-old check-interactive-new
 check-noninteractive: check-noninteractive-old check-noninteractive-new
 
 # We need to remove any file droppings left behind by testsuite
@@ -807,26 +805,6 @@ clean-local: clean-local-legacy
 #   using the new framework above.  When the migration is
 #   complete this section should be removed.
 
-F77_TESTS = \
-   tests/f77demo-static.test \
-   tests/f77demo-static-make.test \
-   tests/f77demo-static-exec.test \
-   tests/f77demo-conf.test \
-   tests/f77demo-make.test \
-   tests/f77demo-exec.test \
-   tests/f77demo-shared.test \
-   tests/f77demo-shared-make.test \
-   tests/f77demo-shared-exec.test
-
-tests/f77demo-shared

[PATCH 10/10] bootstrap: remove support for `-r' and `reconf_dirs'.

2011-11-25 Thread Gary V. Vaughan
With all those extra demo directories out of the way, we can
revert to a more canonical bootstrap process, and jettison the
cruft that was only there to work around the pain of
needing to autoreconf 11 directories.  Bootstrap is now an order
of magnitude faster.
* bootstrap.conf (require_ltdl_dir): New function. Factored out
of `libtool_build_prerequisites'.
(libtool_build_prerequisites): Adjust.
(func_reconfigure): Use `require_ltdl_dir' to determine the name
of the other directory we need to autoreconf during bootstrap.
(libtool_options_prep, libtool_parse_options)
(libtool_validate_options): Remove.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 bootstrap.conf |  175 +---
 1 files changed, 41 insertions(+), 134 deletions(-)

diff --git a/bootstrap.conf b/bootstrap.conf
index f7bc1ac..8763a33 100644
--- a/bootstrap.conf
+++ b/bootstrap.conf
@@ -1,4 +1,4 @@
-# bootstrap.conf (GNU Libtool) version 2011-11-21
+# bootstrap.conf (GNU Libtool) version 2011-11-24
 #
 # Copyright (C) 2010, 2011 Free Software Foundation, Inc.
 # Written by Gary V. Vaughan, 2010
@@ -109,15 +109,16 @@ require_bootstrap_uptodate=:
 
 # func_reconfigure
 # --
-# In addition to needing to autoreconf several directories, Libtool
-# provides `libtoolize' and doesn't use `autopoint', so we can use a
-# somewhat simpler `func_reconfigure' implementation.
+# In addition to needing to autoreconf two directories, Libtool provides
+# `libtoolize' and doesn't use `autopoint', so we can use a somewhat
+# simpler `func_reconfigure' implementation than bootstrap's version.
 func_reconfigure ()
 {
 $debug_cmd
 
 $require_autoheader
 $require_build_aux
+$require_ltdl_dir
 $require_macro_dir
 
 # Only need this from the top level directory
@@ -126,127 +127,19 @@ func_reconfigure ()
 export LIBTOOLIZE
 func_verbose export LIBTOOLIZE='$LIBTOOLIZE'
 
-# Also bootstrap any additional directories that were specified with
-# `reconfdirs' in the environment.
-save_IFS=$IFS
-IFS=,
-for sub in $opt_reconf_dirs; do
-  IFS=$save_IFS
-  my_autoreconf_options=
-  $opt_copy || func_append my_autoreconf_options  --symlink
-  $opt_force  func_append my_autoreconf_options  --force
-  $opt_verbose  func_append my_autoreconf_options  --verbose
-  func_show_eval $AUTORECONF$my_autoreconf_options --install $sub \
-'exit $?'
-done
-IFS=$save_IFS
-}
-
-
-
-## --- ##
-## Hook functions. ##
-## --- ##
-
-# `bootstrap' itself takes care of the arguments it recognises, so we only
-# have to handle additional options here.  Setting exit_cmd to anything
-# other than `:', will tell `bootstrap' to exit after printing it's own
-# option loop parser errors.  Best not to use any time-consuming $require_
-# functions here, otherwise they will be run even if we only need to
-# process `--version'.
-
-# libtool_options_prep [ARG...]
-# -
-# Preparation for supporting additional options in Libtool bootstrap,
-# before the option parsing loop.
-libtool_options_prep ()
-{
-$debug_cmd
-
-# Extend the existing usage message
-usage_message=$usage_message'
-Libtool Specific Options:
-  -r, --reconf-dirs=DIR1,DIR2,...
-  limit the directories to be bootstrapped to
-  the comma-delimited list of DIR1,DIR2,...
-'
-
-# autoreconf all directories by default
-test -n $reconfdirs \
-  || reconfdirs=. libltdl `ls -1d tests/*demo tests/*demo[0-9]`
-
-# pass back the list of options we consumed
-func_quote_for_eval ${1+$@}
-libtool_options_prep_result=$func_quote_for_eval_result
-}
-func_add_hook func_options_prep libtool_options_prep
+my_autoreconf_options=
+$opt_copy || func_append my_autoreconf_options  --symlink
+$opt_force  func_append my_autoreconf_options  --force
+$opt_verbose  func_append my_autoreconf_options  --verbose
 
+func_show_eval $AUTORECONF$my_autoreconf_options --install . \
+  'exit $?'
 
-# libtool_parse_options [ARG...]
-# --
-# Provide handling for additional Libtool options inside the main option
-# parsing loop.
-libtool_parse_options ()
-{
-$debug_cmd
-
-# this inner loop lets us handle `-r.' in a single iteration
-while test $# -gt 0; do
-  opt=$1
-  shift
-
-  case $opt in
---reconf-dirs|--reconfdirs|-r)
-  test $# = 0  func_missing_arg $opt  break
-  # squash spaces so that delimiter is just `,' and nothing else
-  opt_reconf_dirs=`echo $1 |$SED 's|,  *|,|g'`
-  shift
-  ;;
-
-# Separate arguments to short options:
--r*)  func_split_short_opt $opt
-  set dummy $func_split_short_opt_name 
$func_split_short_opt_arg ${1+$@}
-  shift
-  ;;
-
-*)set dummy $opt ${1+$@}; shift

[PATCH 09/10] tests: migrate legacy tests/fcdemo tests to Autotest.

2011-11-25 Thread Gary V. Vaughan
Along with the demise of the last demo directory, so all the
cruft for re-autotooling and distributing the additional
directories is no longer necessary.
* tests/fcdemo.at: New autotest groups, based on...
* tests/fcdemo-conf.test, tests/fcdemo-exec.test,
tests/fcdemo-make.test, tests/fcdemo-shared-exec.test,
tests/fcdemo-shared-make.test, tests/fcdemo-shared.test,
tests/fcdemo-static-exec.test, tests/fcdemo-static-make.test,
tests/fcdemo-static.test: ...these legacy tests, now removed.
* tests/fcdemo/Makefile.am, tests/fcdemo/README,
tests/fcdemo/configure.ac, tests/fcdemo/cprogram.c,
tests/fcdemo/foo.h, tests/fcdemo/fooc.c, tests/fcdemo/foof.f90,
tests/fcdemo/foof2.f90, tests/fcdemo/foof3.f90,
tests/fcdemo/fprogram.f90: Remove.
* configure.ac (CONF_SUBDIRS, DIST_MAKEFILE_LIST): Remove.
* Makefile.am (DIST_SUBDIRS, FC_TESTS, clean-local-legacy)
(configure-subdirs, distclean-recursive, distdir)
(fake-distclean-legacy, $(DIST_MAKEFILE_LIST)): Remove.
(COMMON_TESTS): Rename from this...
(TESTS): ...to this.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 .gitignore|1 -
 Makefile.am   |   64 +---
 configure.ac  |   11 --
 tests/fcdemo-conf.test|   42 -
 tests/fcdemo-exec.test|   35 
 tests/fcdemo-make.test|   36 -
 tests/fcdemo-shared-exec.test |3 -
 tests/fcdemo-shared-make.test |3 -
 tests/fcdemo-shared.test  |   42 -
 tests/fcdemo-static-exec.test |3 -
 tests/fcdemo-static-make.test |3 -
 tests/fcdemo-static.test  |   42 -
 tests/fcdemo.at   |  346 +
 tests/fcdemo/.gitignore   |2 -
 tests/fcdemo/Makefile.am  |   75 -
 tests/fcdemo/README   |   12 --
 tests/fcdemo/configure.ac |   78 -
 tests/fcdemo/cprogram.c   |   54 ---
 tests/fcdemo/foo.h|   54 ---
 tests/fcdemo/fooc.c   |   41 -
 tests/fcdemo/foof.f90 |   10 --
 tests/fcdemo/foof2.f90|   12 --
 tests/fcdemo/foof3.f90|   12 --
 tests/fcdemo/fprogram.f90 |   31 
 24 files changed, 350 insertions(+), 662 deletions(-)
 delete mode 100755 tests/fcdemo-conf.test
 delete mode 100755 tests/fcdemo-exec.test
 delete mode 100755 tests/fcdemo-make.test
 delete mode 100755 tests/fcdemo-shared-exec.test
 delete mode 100755 tests/fcdemo-shared-make.test
 delete mode 100755 tests/fcdemo-shared.test
 delete mode 100755 tests/fcdemo-static-exec.test
 delete mode 100755 tests/fcdemo-static-make.test
 delete mode 100755 tests/fcdemo-static.test
 create mode 100644 tests/fcdemo.at
 delete mode 100644 tests/fcdemo/.gitignore
 delete mode 100644 tests/fcdemo/Makefile.am
 delete mode 100644 tests/fcdemo/README
 delete mode 100644 tests/fcdemo/configure.ac
 delete mode 100644 tests/fcdemo/cprogram.c
 delete mode 100644 tests/fcdemo/foo.h
 delete mode 100644 tests/fcdemo/fooc.c
 delete mode 100644 tests/fcdemo/foof.f90
 delete mode 100644 tests/fcdemo/foof2.f90
 delete mode 100644 tests/fcdemo/foof3.f90
 delete mode 100644 tests/fcdemo/fprogram.f90

diff --git a/.gitignore b/.gitignore
index f337328..c8db98e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -48,7 +48,6 @@
 Makefile
 Makefile.in
 \#*#
-_inst-*demo
 _libs
 acinclude.m4
 aclocal.m4
diff --git a/Makefile.am b/Makefile.am
index 670bbd4..7f75f38 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -323,14 +323,6 @@ libtool: $(ltmain_sh) $(config_status) $(dotversion)
  cd '$(top_builddir)'  '$(SHELL)' ./config.status '$@'; \
fi
 
-.PHONY: configure-subdirs
-configure-subdirs distdir: $(DIST_MAKEFILE_LIST)
-$(DIST_MAKEFILE_LIST):
-   $(AM_V_at)dir=`echo '$@' |'$(SED)' 's|^[^/]*$$|.|;s|/[^/]*$$||'`; \
-   test -d $$dir || mkdir $$dir || exit 1; \
-   abs_srcdir=`$(lt__cd) '$(srcdir)'  pwd`; \
-   (cd $$dir  $$abs_srcdir/$$dir/configure --with-dist) || exit 1
-
 
 ##  ##
 ## Libltdl. ##
@@ -695,6 +687,7 @@ TESTSUITE_AT= tests/testsuite.at \
  tests/cmdline_wrap.at \
  tests/pic_flag.at \
  tests/f77demo.at \
+ tests/fcdemo.at \
  tests/darwin.at \
  tests/dumpbin-symbols.at \
  tests/deplibs-mingw.at \
@@ -790,7 +783,7 @@ check-interactive: $(testsuite_deps_uninstalled)
 check-noninteractive: check-noninteractive-old check-noninteractive-new
 
 # We need to remove any file droppings left behind by testsuite
-clean-local: clean-local-legacy
+clean-local:
-$(CD_TESTDIR); \
test -f $$abs_srcdir/$(TESTSUITE)  \
'$(SHELL)' $$abs_srcdir/$(TESTSUITE) --clean
@@ -805,27 +798,7 @@ clean-local: clean-local-legacy
 #   using the new framework above.  When the migration is
 #   complete this section should be removed.
 
-FC_TESTS = \
-   tests/fcdemo-static.test \
-   tests/fcdemo-static-make.test \
-   tests/fcdemo-static-exec.test

Re: [PATCH 1/7] syntax-check: fix violations and implement sc_useless_quotes_in_case.

2011-11-25 Thread Gary V. Vaughan
On 21 Nov 2011, at 21:47, Gary V. Vaughan wrote:
 I'll push the whole series in 72 hours or so as usual.

Pushed.

 [[snip]]
 
 Contrary to popular belief, Bourne shell does not resplit case
 expressions after expansion, so if there are no shell unquoted
 shell metacharacters or whitespace, the quotes are useless.
 * cfg.mk (sc_useless_quotes_in_case): New syntax-check rule to
 ensure we don't reintroduce useless quoted case expressions.
 * build-aux/ltmain.m4sh, m4/libtool.m4, tests/bindir.at,
 tests/darwin.at, tests/defs.m4sh, tests/demo-hardcode.test,
 tests/demo-nopic.test, tests/link-2.test, tests/quote.test,
 tests/sysroot.at: Remove spurious quotes.
 
 Signed-off-by: Gary V. Vaughan g...@gnu.org
 ---
 build-aux/ltmain.m4sh|   12 ++--
 cfg.mk   |8 
 m4/libtool.m4|2 +-
 tests/bindir.at  |4 ++--
 tests/darwin.at  |2 +-
 tests/defs.m4sh  |2 +-
 tests/demo-hardcode.test |4 ++--
 tests/demo-nopic.test|6 +++---
 tests/link-2.test|2 +-
 tests/quote.test |8 
 tests/sysroot.at |2 +-
 11 files changed, 30 insertions(+), 22 deletions(-)


Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



Re: [PATCH 01/10] tests: migrate legacy tests/cdemo tests to Autotest.

2011-11-25 Thread Gary V. Vaughan
On 25 Nov 2011, at 18:59, Stefano Lattarini wrote:
 Hi Gary.

Hi Stefano,

 On Friday 25 November 2011, Gary V wrote:
 The best reason I can find for keeping the various demo directories
 around (despite the fact we already make use of the much better test
 harness of Autotest for all our new test cases) from the last time
 I wanted to migrate everything out of the legacy testsuite, was that
 it exercises the distribution manager's autotools combination on the
 testers machine, where the Autotests always use the users autotools.
 That's no argument as far as I can see: we want tests to fail as
 early as possible on a users machine to help him know things are not
 going to work properly if he keeps going - and having the legacy
 suite pass is only encouraging users to fight with broken installs.
 
 This series of patches migrates all 9 of the demo directory test
 groups into Autotest, and allows us to remove most of the legacy
 testsuite cruft at the end.
 
 Just my 2 cents: I'd like to see the test scripts converted one at
 the time, rather than one group at the time (and assuming that this
 is feasible), as I found your huge patches basically un-reviewable
 in their present state.

The legacy tests are in sets that can't be broken apart without leaving
the tree in an inconsistent state part way through that set.

I could break them up a little more tho', if you think that would help,
so instead of converting one demo directory all at once, then a final
patch to clean out the configury cruft... there'd be 9 sets of patches
each containing almost everything in the current patch, except the
deletion of the the files in the given test/demo directory, followed by
a series of tiny patches each adding a dozen lines like this:

+## --- ##
+## Mdemo conf. ##
+## --- ##
+
+AT_SETUP([ltdl load shared and static modules])
+
+_LT_SETUP
+
+_LT_CHECK_CONFIG([], [^build_old_libs=yes], [^build_libtool_libs=yes])
+_LT_CHECK_EXECUTE
+_LT_CHECK_INSTALL
+_LT_CHECK_UNINSTALL
+
+AT_CLEANUP

plus removing the equivalent legacy set of 3 *.test files, and then a
final patch to delete the given test/demo tree, and relevant lines from
Makefile.am.

It'll take me a while to go through and do that, and we'll end up with
10 large patches each setting up a new tests/demo.at file, about 25
tiny patches per the above, then 10 small patches each removing one of
the tests/demo trees, and then the final cruft cleanout patch unchanged.

If that will make a big difference, let me know and I'll retract these
patches and post 50 or so to replace them in a week or two when I've
gone through and broken out the tiny per-test-group sets per the above.

 There's still a few legacy tests
 left at the end, which I'll tackle later, but at least maintenance
 is a whole lot easier now that we don't need to wait for 9 additional
 directories to autoreconf every time we run bootstrap, or distcheck,
 or roll up a distribution tarball to test on the local network.
 
 This is all in keeping with the theme of most of the patches I've
 posted this year, to make libtool easier and more fun to maintain
 and contribute to, in the hope of getting more people involved.
 
 As usual, subject to feedback, I'll push this whole series in
 72 hours or so.  Make distcheck passes for me on my Mac 10.7 and
 my Arch Linux x86_64 machines, but it would be great if folks with
 access to other machines could give it a spin to see whether I
 broke any of the tests during migration... if you'd like a pre-
 rolled distro with my pending patches applied to do that, then
 please do ask.
 
 If you want to send me such a tarball, I might run the testsuite on
 Solaris 10, Cygwin 1.5.25, NetBSD 5.1 and OpenBSD 4.6 at least.

Much appreciated.  Tarballs here:

  http://vaughan.pe/libtool/libtool-2.4.2.135-aa59c.tar.gz
  http://vaughan.pe/libtool/libtool-2.4.2.135-aa59c.tar.xz

  But
 then you should allow for more than three days for sending feedback
 -- at least a week.

That's fine, and running on those arches would be a great help in
giving me confidence the migration didn't break anything.

It'll take me at least a week to redo everything into smaller pieces
anyway... (unless you think the time spent here will not make much
difference to your review). But do let me know either way :)  And
thanks also for offering to make the time to look them over.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)




[PATCH] maint: Fix generated ChangeLog typos.

2011-11-25 Thread Gary V. Vaughan
Applied as obvious.

* build-aux/git-log-fix: Spell Stefano Lattarini's name
correctly.
Don't use my home email address for GNU commits.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 build-aux/git-log-fix |   19 +++
 1 files changed, 19 insertions(+), 0 deletions(-)

diff --git a/build-aux/git-log-fix b/build-aux/git-log-fix
index 9ac3ced..810c021 100644
--- a/build-aux/git-log-fix
+++ b/build-aux/git-log-fix
@@ -2,6 +2,11 @@
 # option.  It specifies what changes to make to each given SHA1's commit
 # log and metadata, using Perl-eval'able expressions.
 
+11d16ab06c36948c053c507f5f9e06ff3de221c7
+# Date:   Fri Nov 25 14:39:57 2011 +0700
+# Spell Stefano's name correctly.
+s|Steffano|Stefano|
+
 a5ef08182ce0fb80b8adcff5872f190afd915908
 # Date:   Wed Nov 16 12:13:55 2011 +0700
 # Fix a typo.
@@ -17,8 +22,20 @@ e8db92c345b99acd9c6984a321fc241ed1d01d23
 # Email address of Reporters is in THANKS.
 s|(Reported by .*?) *.*|$1.|
 
+c188507816c4b43f3411677116ce4ab4b926958e
+# Date:   Mon Nov 7 23:43:56 2011 +0700
+# Use canonical gnu email address.
+s|vaughan\.pe|gnu.org|g
+
+fdb4c546784aebacaf697ebd5f96e0d91c566597
+# Date:   Tue Oct 18 13:20:53 2011 +0700
+# Use canonical gnu email address.
+s|vaughan\.pe|gnu.org|g
+
 0fe4d0740effaec9d08ee9683fb493d8ad0bd8b5
 # Date:   Mon Oct 17 16:43:18 2011 +0700
+# Use canonical gnu email address.
+s|vaughan\.pe|gnu.org|g;
 # No empty lines in a single commit.
 s|\n\n|\n|g;
 # Fix a typo.
@@ -26,6 +43,8 @@ s|soure|source|
 
 789817d512111d063981446efc7493ce87696bb3
 # Date:   Mon Oct 17 12:40:55 2011 +0700
+# Use canonical gnu email address.
+s|vaughan\.pe|gnu.org|g;
 # No empty lines in a single commit.
 s|\n\n|\n|g
 
-- 
1.7.7.4

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



[PATCH] m4: fix logic error leading to -fno-rtti being added wrongly.

2011-11-25 Thread Gary V. Vaughan
Applied as the obvious fix for an error in translation in commit 962aa919.

* m4/libtool.m4 (_LT_COMPILER_OPTION): Negate comparison so that
compiler flags are added correctly.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 m4/libtool.m4 |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/m4/libtool.m4 b/m4/libtool.m4
index 007492c..4be85a5 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -1532,7 +1532,7 @@ AC_CACHE_CHECK([$1], [$2],
$RM conftest*
 ])
 
-if test yes != [$]$2; then
+if test yes = [$]$2; then
 m4_if([$5], , :, [$5])
 else
 m4_if([$6], , :, [$6])
-- 
1.7.7.4

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)



Re: [PATCH 01/10] tests: migrate legacy tests/cdemo tests to Autotest.

2011-11-25 Thread Gary V. Vaughan
Hi Chuck,

On 26 Nov 2011, at 11:39, Charles Wilson wrote:
 On 11/25/2011 4:10 AM, Gary V. Vaughan wrote:
 As usual, subject to feedback, I'll push this whole series in
 72 hours or so.  Make distcheck passes for me on my Mac 10.7 and
 my Arch Linux x86_64 machines, but it would be great if folks with
 
 a) This is a big holiday weekend in the US, so...a bit more than 72 hours is 
 indicated.  Most of us will still be catching up on post-holiday $realjob 
 stuff by the time 72 hours expires.

Ah, didn't think of that.  Sure, I will be busy myself for a week or two, so I 
won't push for at least a week, probably more.

 b) cygwin? mingw? msvc? All of the old tests have seen a LARGE number of 
 tweaks to ensure their proper operation on the various w32 platforms. Have 
 you done ANY testing there, at all, or are you relying on the rest of us to 
 do that work for you?

I'm afraid I don't have (or want) access to any Windows machines, so I'm afraid 
that I am relying on you guys to tell me if I screwed up.  Of course I'm not 
expecting you to debug or fix my mistakes for me, and I'm not anticipating any 
new problems, since everything is merely migrated from legacy testsuite to 
Autotest testsuite, with minimal changes required to keep everything working on 
my main machines.

Although I do normally have access to more machines, the flooding in Bangkok 
has made any use of my Internet connection other than email intolerably slow... 
hence the recent flurry of work on libtool (which I can do offline, queueing 
emails for when my connection is next up) to fill my time while I wait for 
things to get back to normal.  The reason I'll be too busy to do much more of 
that over the next week or two, is that last night I actually had a full-speed 
connection to the US again, so I'm anticipating playing catchup at $realjob 
myself.

 Sorry if I seem a bit short, but I'm rather annoyed to see my queue get 
 filled with hours upon hours of work in the middle of a holiday.

Please don't feel that it's your responsibility to painstakingly pick through 
every patch I post... I'd be more than happy just to get the test logs from 
anything I put on alpha.gnu.org for the architectures I don't use to help me 
restabilize the code closer to a release.

Enjoy the rest of your holiday, and sorry for working so much on libtool 
recently: although my objective with the recent modernisations has been to try 
to decruft libtool a little, and to make the barrier to contribution much lower 
than it is currently if at all possible.  I rarely have the chance to put a lot 
of time into libtool, and things will slow down considerably again now if my 
Internet connection really is back to (something like) normal again.  I have 
another 20 or so patches left incubating in my unpublished queue, and I will be 
done for now after those are polished and pushed over the next month or two.

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)


Re: [PATCH 8/7] syntax-check: fix violations and implement sc_useless_quotes_in_case_branch.

2011-11-22 Thread Gary V. Vaughan
Hi Eric,

On 22 Nov 2011, at 12:09, Gary V. Vaughan wrote:
 On 21 Nov 2011, at 23:15, Eric Blake wrote:
 On 11/21/2011 07:47 AM, Gary V. Vaughan wrote:
 Contrary to popular belief, Bourne shell does not resplit case
 expressions after expansion, so if there are no shell unquoted
 shell metacharacters or whitespace, the quotes are useless.
 @@ -568,7 +568,7 @@ func_resolve_sysroot ()
 # store the result into func_replace_sysroot_result.
 func_replace_sysroot ()
 {
 -  case $lt_sysroot:$1 in
 +  case $lt_sysroot:$1 in
  ?*:$lt_sysroot*)
 
 Likewise in the pattern expression; you could further change this to:
 
 case $lt_sysroot:$1 in
 ?*:$lt_sysroot*)
 
 Good call, although narrowing the search down to eliminate false positives
 is a lot trickier in this case!
 
 I'm adding the following changeset to this series.  Thanks!

Actually, no, I take it back.  I won't apply that patch since it causes tests
to fail for at least dash, bash and ksh.

My reading of the opengroup specification agrees with us both that no 
resplitting
should be done in the branch expressions of a case, but there is definitely
something odd going on that I don't really understand:

  $ cat case.test
  for match in '\$\$' '\$'; do
  case $match in *$match*)   echo good ;; *) echo bad ;; esac
  case $match in *$match*) echo good ;; *) echo bad ;; esac
  done

  solaris10 /bin/sh$ sh case.test
  good
  good
  good
  good

  solaris10 xpg4$ /usr/xpg4/bin/sh case.test
  good
  good
  good
  good

  hpux10 /bin/sh$ sh case.test
  good
  good
  good
  good

  aix6 /bin/sh$ sh case.test
  good
  good
  good
  good

  zsh-4.3.10$ zsh case.test
  good
  good
  good
  good

  zsh-4.3.11$ /usr/local/Cellar/zsh-4.3.11/bin/zsh case.test
  good
  good
  good
  good

  zsh-4.3.12$ /usr/local/bin/zsh case.test
  good
  good
  good
  good

  dash-0.5.7$ dash case.test
  bad
  good
  good
  good

  bash-3.2.48$ bash case.test
  bad
  good
  good
  good

  bash-4.1.5$ /usr/local/Cellar/bash-4.1.5/bin/bash case.test
  bad
  good
  good
  good

  bash-4.2.10$ /usr/local/bin/bash case.test
  bad
  good
  good
  good

  ksh-93s+$ ksh case.test
  bad
  good
  good
  good

Confusing! It seems any backslash escaped character will do, same
results with '\S\S' and '\S' as with the dollars above.  Yet, with
the backslashes removed, all the above print 4 'good's.

If it weren't for the fact that ksh, bash and dash all independently
behave the same way, I'd have called it a bug...  any idea?

Cheers,
-- 
Gary V. Vaughan (gary AT gnu DOT org)
  


[PATCH 1/7] syntax-check: fix violations and implement sc_useless_quotes_in_case.

2011-11-21 Thread Gary V. Vaughan
More syntax-check inspired goodness to make our shell code more
readable and maintainable.  There's nothing controversial in here,
except perhaps a seemingly large amount of code churn for a
relatively small gain in each case, however the code definitely
*does* need all the help it can get to be maintainable without
severe hair loss, and even a journey of 1000 miles starts with a
single step, so I'll push the whole series in 72 hours or so as
usual.

By the end of this series, we've made some good progress in
unifying the style of new and old shell code alike, and since it's
all hooked into syntax-check, it'll take a concerted effort to
regress the aspects of style I've tackled, since make distcheck
will now fail if new violations are added in future. But, making
some of the older stuff not look like spaghetti is a much much
bigger task than these few patches are able to achieve.

Feedback welcome.

Contrary to popular belief, Bourne shell does not resplit case
expressions after expansion, so if there are no shell unquoted
shell metacharacters or whitespace, the quotes are useless.
* cfg.mk (sc_useless_quotes_in_case): New syntax-check rule to
ensure we don't reintroduce useless quoted case expressions.
* build-aux/ltmain.m4sh, m4/libtool.m4, tests/bindir.at,
tests/darwin.at, tests/defs.m4sh, tests/demo-hardcode.test,
tests/demo-nopic.test, tests/link-2.test, tests/quote.test,
tests/sysroot.at: Remove spurious quotes.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 build-aux/ltmain.m4sh|   12 ++--
 cfg.mk   |8 
 m4/libtool.m4|2 +-
 tests/bindir.at  |4 ++--
 tests/darwin.at  |2 +-
 tests/defs.m4sh  |2 +-
 tests/demo-hardcode.test |4 ++--
 tests/demo-nopic.test|6 +++---
 tests/link-2.test|2 +-
 tests/quote.test |8 
 tests/sysroot.at |2 +-
 11 files changed, 30 insertions(+), 22 deletions(-)

diff --git a/build-aux/ltmain.m4sh b/build-aux/ltmain.m4sh
index 5e8fb25..ee93a21 100644
--- a/build-aux/ltmain.m4sh
+++ b/build-aux/ltmain.m4sh
@@ -461,7 +461,7 @@ func_lalib_unsafe_p ()
for lalib_p_l in 1 2 3 4
do
read lalib_p_line
-   case $lalib_p_line in
+   case $lalib_p_line in
\#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;;
esac
done
@@ -568,7 +568,7 @@ func_resolve_sysroot ()
 # store the result into func_replace_sysroot_result.
 func_replace_sysroot ()
 {
-  case $lt_sysroot:$1 in
+  case $lt_sysroot:$1 in
   ?*:$lt_sysroot*)
 func_stripname $lt_sysroot '' $1
 func_replace_sysroot_result==$func_stripname_result
@@ -3625,7 +3625,7 @@ main (int argc, char *argv[])
   if (STREQ (argv[i], dumpscript_opt))
{
 EOF
-   case $host in
+   case $host in
  *mingw* | *cygwin* )
# make stdout use unix line endings
echo   setmode(1,_O_BINARY);
@@ -5796,7 +5796,7 @@ func_mode_link ()
  if test -z $libdir  test $linkmode = prog; then
func_fatal_error only libraries may -dlpreopen a convenience 
library: \`$lib'
  fi
- case $host in
+ case $host in
# special handling for platforms with PE-DLLs.
*cygwin* | *mingw* | *cegcc* )
  # Linker will automatically link against shared library if both
@@ -5896,7 +5896,7 @@ func_mode_link ()
# We need to hardcode the library path
if test -n $shlibpath_var  test -z $avoidtemprpath ; then
  # Make sure the rpath contains only unique directories.
- case $temp_rpath: in
+ case $temp_rpath: in
  *$absdir:*) ;;
  *) func_append temp_rpath $absdir: ;;
  esac
@@ -8765,7 +8765,7 @@ func_mode_uninstall ()
  done
  test -n $old_library  func_append rmfiles  $odir/$old_library
 
- case $opt_mode in
+ case $opt_mode in
  clean)
case  $library_names  in
* $dlname *) ;;
diff --git a/cfg.mk b/cfg.mk
index 6a1748c..4bc32a7 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -60,6 +60,14 @@ sc_trailing_blank-non-rfc3676:
halt='found trailing blank(s)'  \
  $(_sc_search_regexp)
 
+# Avoid useless quotes around case arguments such as:
+#   case $foo in ...
+exclude_file_name_regexp--sc_useless_quotes_in_case = ^cfg.mk$$
+sc_useless_quotes_in_case:
+   @prohibit='case [^  ]*[   ][  ]*in'  \
+   halt='found spurious quotes around case argument'   \
+ $(_sc_search_regexp)
+
 # List syntax-check exempted files.
 exclude_file_name_regexp--sc_bindtextdomain = ^tests/.*demo[0-9]*/.*\.c$$
 exclude_file_name_regexp--sc_error_message_uppercase = \
diff --git a/m4/libtool.m4 b/m4/libtool.m4
index a9e20cf..ec00e81 100644
--- a/m4/libtool.m4
+++ b/m4/libtool.m4
@@ -1198,7 +1198,7

[PATCH 3/7] tests: migrate tests/sh.test checks to syntax-checks.

2011-11-21 Thread Gary V. Vaughan
Some modernization of the legacy testsuite.
* tests/sh.test: Remove.
* Makefile.am (COMMON_TESTS): Adjust.
* cfg.mk (sc_libtool_m4_cc_basename, sc_prohibit_bracket_as_test)
(sc_prohibit_nested_quotes, sc_prohibit_set_dummy_without_shift)
(sc_prohibit_set_minus_minus, sc_prohibit_test_binary_operators)
(sc_prohibit_test_dollar, sc_prohibit_test_minus_e)
(sc_prohibit_test_unary_operators, sc_prohibit_test_X)
(sc_prohibit_Xsed_withou_X, sc_require_function_nl_brace):
Functionally identical tests to what used to be performed by
sh.test, only with coverage of all files.
* bootstrap, build-aux/edit-readme-alpha,
build-aux/extract-trace, build-aux/getopt.m4sh,
build-aux/ltmain.m4sh, configure.ac, m4/libtool.m4, m4/ltdl.m4,
tests/bindir.at, tests/configure-iface.at, tests/cwrapper.at,
tests/darwin.at, tests/defs.m4sh, tests/demo-hardcode.test,
tests/dlloader-api.at, tests/exceptions.at,
tests/getopt-m4sh.at, tests/lalib-syntax.at, tests/link-2.test,
tests/link-order2.at, tests/loadlibrary.at,
tests/lt_dladvise.at, tests/lt_dlexit.at, tests/lt_dlopen_a.at,
tests/lt_dlopenext.at, tests/need_lib_prefix.at,
tests/nonrecursive.at, tests/recursive.at, tests/resident.at,
tests/standalone.at, tests/static.at, tests/stresstest.at,
tests/subproject.at, tests/sysroot.at, tests/tagtrace.test,
tests/testsuite.at: Fix violations of the new syntax checks.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 Makefile.am |3 +-
 bootstrap   |   21 ---
 build-aux/edit-readme-alpha |4 +-
 build-aux/extract-trace |6 +-
 build-aux/getopt.m4sh   |2 +-
 build-aux/ltmain.m4sh   |2 +-
 cfg.mk  |  104 +
 configure.ac|2 +-
 m4/libtool.m4   |   50 
 m4/ltdl.m4  |2 +-
 tests/bindir.at |   10 ++--
 tests/configure-iface.at|8 +-
 tests/cwrapper.at   |2 +-
 tests/darwin.at |2 +-
 tests/defs.m4sh |4 +-
 tests/demo-hardcode.test|6 +-
 tests/dlloader-api.at   |2 +-
 tests/exceptions.at |2 +-
 tests/getopt-m4sh.at|2 +-
 tests/lalib-syntax.at   |2 +-
 tests/link-2.test   |2 +-
 tests/link-order2.at|8 +-
 tests/loadlibrary.at|2 +-
 tests/lt_dladvise.at|4 +-
 tests/lt_dlexit.at  |2 +-
 tests/lt_dlopen_a.at|2 +-
 tests/lt_dlopenext.at   |4 +-
 tests/need_lib_prefix.at|2 +-
 tests/nonrecursive.at   |4 +-
 tests/recursive.at  |4 +-
 tests/resident.at   |2 +-
 tests/sh.test   |  134 ---
 tests/standalone.at |4 +-
 tests/static.at |2 +-
 tests/stresstest.at |2 +-
 tests/subproject.at |4 +-
 tests/sysroot.at|4 +-
 tests/tagtrace.test |4 +-
 tests/testsuite.at  |4 +-
 39 files changed, 200 insertions(+), 230 deletions(-)
 delete mode 100755 tests/sh.test

diff --git a/Makefile.am b/Makefile.am
index 2c6cf81..31d286e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -557,7 +557,7 @@ changelog   = $(distdir)/ChangeLog
 # date is updated to the following year.
 changelog_start_date = 2011-01-01
 $(changelog): FORCE
-   $(AM_V_GEN)if test -d $(srcdir)/.git; then \
+   $(AM_V_GEN)if test -d '$(srcdir)/.git'; then \
  $(gitlog_to_changelog) --amend=$(git_log_fix) \
  --since=$(changelog_start_date)  '$@T'; \
  rm -f '$@'; mv '$@T' '$@'; \
@@ -874,7 +874,6 @@ COMMON_TESTS = \
tests/nomode.test \
tests/objectlist.test \
tests/quote.test \
-   tests/sh.test \
tests/suffix.test \
tests/tagtrace.test \
tests/cdemo-static.test \
diff --git a/bootstrap b/bootstrap
index 9a9e94b..4dbdf72 100755
--- a/bootstrap
+++ b/bootstrap
@@ -738,20 +738,20 @@ func_clean_unused_macros ()
 
   # We use `ls|grep' instead of `ls *.m4' to avoid exceeding
   # command line length limits in some shells.
-  for file in `cd $macro_dir  ls -1 |grep '\.m4$'`; do
+  for file in `cd $macro_dir  ls -1 |grep '\.m4$'`; do
 
# Remove a macro file when aclocal.m4 does not m4_include it...
 func_grep_q 'm4_include([[]'$macro_dir/$file'])' $aclocal_m4s \
-|| test ! -f $gnulib_path/m4/$file || {
+|| test ! -f $gnulib_path/m4/$file || {
 
   # ...and there is an identical file in gnulib...
-  if func_cmp_s $gnulib_path/m4/$file $macro_dir/$file; then
+  if func_cmp_s $gnulib_path/m4/$file $macro_dir/$file; then
 
 # ...and it's not in the precious list (`echo' is needed
 # here to squash whitespace for the match expression).
 case  `echo $gnulib_precious`  in
   * $file *) ;;
-  *) rm -f

[PATCH 7/7] syntax-check: fix violations and implement sc_prohibit_sed_s_comma.

2011-11-21 Thread Gary V. Vaughan
I like to name temporary directories that I will remove shortly
with two leading commas so that they sort lexicographically at
the top of `ls' output.  Now, `./configure
--prefix=`pwd`/,,inst' works again, for the first time in
several years.
* cfg.mk (sc_prohibit_sed_s_comma): Comma is too common a
character to use routinely as the separator for sed
substitutions on file paths and other variables determined by
the user, causing bugs like the one I describe above.  Make sure
we don't accidentally reintroduce any comma separators in
future.
* Makefile.am, bootstrap, bootstrap.conf, build-aux/extract-trace,
build-aux/general.m4sh, build-aux/git-hooks/commit-msg,
build-aux/git-log-fix, build-aux/ltmain.m4sh, libtoolize.m4sh,
m4/libtool.m4, m4/ltdl.m4, tests/cdemo-undef.test,
tests/cmdline_wrap.at, tests/darwin.at, tests/defs.m4sh,
tests/getopt-m4sh.at, tests/install.at, tests/libtoolize.at,
tests/mdemo/Makefile.am, tests/need_lib_prefix.at,
tests/sysroot.at, tests/tagdemo-undef.test, tests/testsuite.at:
Try to use `|' as the default separator wherever possible,
otherwise something else that doesn't occur in the substitution
expression.
* NEWS: Updated.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 Makefile.am|   88 
 NEWS   |1 +
 bootstrap  |   10 ++--
 bootstrap.conf |6 +-
 build-aux/extract-trace|   10 ++--
 build-aux/general.m4sh |   16 
 build-aux/git-hooks/commit-msg |4 +-
 build-aux/git-log-fix  |   48 +++---
 build-aux/ltmain.m4sh  |6 +-
 cfg.mk |   10 +
 libtoolize.m4sh|   62 ++--
 m4/libtool.m4  |   16 
 m4/ltdl.m4 |2 +-
 tests/cdemo-undef.test |2 +-
 tests/cmdline_wrap.at  |2 +-
 tests/darwin.at|2 +-
 tests/defs.m4sh|2 +-
 tests/getopt-m4sh.at   |2 +-
 tests/install.at   |2 +-
 tests/libtoolize.at|   14 +++---
 tests/mdemo/Makefile.am|2 +-
 tests/need_lib_prefix.at   |2 +-
 tests/sysroot.at   |2 +-
 tests/tagdemo-undef.test   |2 +-
 tests/testsuite.at |4 +-
 25 files changed, 164 insertions(+), 153 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index 31d286e..680ae3e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -52,7 +52,7 @@ LT_M4SH   = $(M4SH) -B 
'$(srcdir)/$(m4sh_dir)'
 lt__cd = CDPATH=$${ZSH_VERSION+.}$(PATH_SEPARATOR)  cd
 
 git_version_gen = '$(SHELL)' '$(aux_dir)/git-version-gen' '.tarball-version'
-rebuild = rebuild=:; revision=`$(lt__cd) $(srcdir)  $(git_version_gen) | sed 
's,-.*$$,,g'`
+rebuild = rebuild=:; revision=`$(lt__cd) $(srcdir)  $(git_version_gen) | sed 
's|-.*$$||g'`
 
 
 # -- #
@@ -108,18 +108,18 @@ EXTRA_DIST += $(extract_trace) $(libtoolize_in) 
$(libtoolize_m4sh) \
 ## because they must be static in distributed files, and not accidentally
 ## changed by configure running on the build machine.
 bootstrap_edit  = $(SED) \
- -e 's,@MACRO_VERSION\@,$(VERSION),g' \
- -e s,@MACRO_REVISION\@,$$revision,g \
- -e s,@MACRO_SERIAL\@,$$serial,g \
- -e 's,@PACKAGE\@,$(PACKAGE),g' \
- -e 's,@PACKAGE_BUGREPORT\@,$(PACKAGE_BUGREPORT),g' \
- -e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' \
- -e 's,@PACKAGE_NAME\@,$(PACKAGE_NAME),g' \
- -e s,@package_revision\@,$$revision,g \
- -e 's,@PACKAGE_STRING\@,$(PACKAGE_NAME) $(VERSION),g' \
- -e 's,@PACKAGE_TARNAME\@,$(PACKAGE),g' \
- -e 's,@PACKAGE_VERSION\@,$(VERSION),g' \
- -e 's,@VERSION\@,$(VERSION),g'
+ -e 's|@MACRO_VERSION\@|$(VERSION)|g' \
+ -e s|@MACRO_REVISION\@|$$revision|g \
+ -e s|@MACRO_SERIAL\@|$$serial|g \
+ -e 's|@PACKAGE\@|$(PACKAGE)|g' \
+ -e 's|@PACKAGE_BUGREPORT\@|$(PACKAGE_BUGREPORT)|g' \
+ -e 's|@PACKAGE_URL\@|$(PACKAGE_URL)|g' \
+ -e 's|@PACKAGE_NAME\@|$(PACKAGE_NAME)|g' \
+ -e s|@package_revision\@|$$revision|g \
+ -e 's|@PACKAGE_STRING\@|$(PACKAGE_NAME) $(VERSION)|g' \
+ -e 's|@PACKAGE_TARNAME\@|$(PACKAGE)|g' \
+ -e 's|@PACKAGE_VERSION\@|$(VERSION)|g' \
+ -e 's|@VERSION\@|$(VERSION)|g'
 
 ## ltmain.sh needs some additional editing to remove unsubstituted
 ## variable defaulting lines, because ltmain.sh never gets passed
@@ -210,8 +210,8 @@ $(lt_Makefile_am): $(ltdl_mk)
  }; \
  '$(SED)' -n '/^.. DO NOT REMOVE THIS LINE -- /,$$p' \
  '$(ltdl_mk)' \
-   |'$(SED)' -e 's,libltdl_,,; s,libltdl/,,; s,: libltdl

[PATCH 8/7] syntax-check: fix violations and implement sc_useless_quotes_in_case_branch.

2011-11-21 Thread Gary V. Vaughan
Hi Eric,

On 21 Nov 2011, at 23:15, Eric Blake wrote:
 On 11/21/2011 07:47 AM, Gary V. Vaughan wrote:
 Contrary to popular belief, Bourne shell does not resplit case
 expressions after expansion, so if there are no shell unquoted
 shell metacharacters or whitespace, the quotes are useless.
 @@ -568,7 +568,7 @@ func_resolve_sysroot ()
 # store the result into func_replace_sysroot_result.
 func_replace_sysroot ()
 {
 -  case $lt_sysroot:$1 in
 +  case $lt_sysroot:$1 in
   ?*:$lt_sysroot*)
 
 Likewise in the pattern expression; you could further change this to:
 
 case $lt_sysroot:$1 in
  ?*:$lt_sysroot*)

Good call, although narrowing the search down to eliminate false positives
is a lot trickier in this case!

I'm adding the following changeset to this series.  Thanks!


Contrary to popular belief, Bourne shell does not resplit case
branch expressions after expansion, so if there are no unquoted
shell metacharacters or whitespace, the quotes are useless.
* cfg.mk (sc_useless_quotes_in_case_branch): New syntax-check
rule to ensure we don't reintroduce useless quoted case branch
expressions.
* bootstrap, build-aux/ltmain.m4sh, tests/quote.test: Remove
spurious quotes.

Signed-off-by: Gary V. Vaughan g...@gnu.org
---
 bootstrap |2 +-
 build-aux/ltmain.m4sh |   26 +-
 cfg.mk|   16 
 tests/quote.test  |8 
 4 files changed, 34 insertions(+), 18 deletions(-)

diff --git a/bootstrap b/bootstrap
index afdde66..49685f2 100755
--- a/bootstrap
+++ b/bootstrap
@@ -1782,7 +1782,7 @@ func_append_u ()
 _G_delim=`expr $2 : '\(.\)'`
 
 case $_G_delim$_G_current_value$_G_delim in
-  *$2$_G_delim*) ;;
+  *$2$_G_delim*) ;;
   *) func_append $@ ;;
 esac
 }
diff --git a/build-aux/ltmain.m4sh b/build-aux/ltmain.m4sh
index 8955838..5cd201f 100644
--- a/build-aux/ltmain.m4sh
+++ b/build-aux/ltmain.m4sh
@@ -569,7 +569,7 @@ func_resolve_sysroot ()
 func_replace_sysroot ()
 {
   case $lt_sysroot:$1 in
-  ?*:$lt_sysroot*)
+  ?*:$lt_sysroot*)
 func_stripname $lt_sysroot '' $1
 func_replace_sysroot_result='='$func_stripname_result
 ;;
@@ -895,7 +895,7 @@ func_to_tool_file ()
   $debug_cmd
 
   case ,$2, in
-*,$to_tool_file_cmd,*)
+*,$to_tool_file_cmd,*)
   func_to_tool_file_result=$1
   ;;
 *)
@@ -4836,12 +4836,12 @@ func_mode_link ()
*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*)
  testbindir=`$ECHO $dir | $SED 's*/lib$*/bin*'`
  case :$dllsearchpath: in
- *:$dir:*) ;;
+ *:$dir:*) ;;
  ::) dllsearchpath=$dir;;
  *) func_append dllsearchpath :$dir;;
  esac
  case :$dllsearchpath: in
- *:$testbindir:*) ;;
+ *:$testbindir:*) ;;
  ::) dllsearchpath=$testbindir;;
  *) func_append dllsearchpath :$testbindir;;
  esac
@@ -5895,7 +5895,7 @@ func_mode_link ()
if test -n $shlibpath_var  test -z $avoidtemprpath ; then
  # Make sure the rpath contains only unique directories.
  case $temp_rpath: in
- *$absdir:*) ;;
+ *$absdir:*) ;;
  *) func_append temp_rpath $absdir: ;;
  esac
fi
@@ -6122,7 +6122,7 @@ func_mode_link ()
 
if test -n $add_shlibpath; then
  case :$compile_shlibpath: in
- *:$add_shlibpath:*) ;;
+ *:$add_shlibpath:*) ;;
  *) func_append compile_shlibpath $add_shlibpath: ;;
  esac
fi
@@ -6136,7 +6136,7 @@ func_mode_link ()
 test yes != $hardcode_minus_L 
 test yes = $hardcode_shlibpath_var; then
case :$finalize_shlibpath: in
-   *:$libdir:*) ;;
+   *:$libdir:*) ;;
*) func_append finalize_shlibpath $libdir: ;;
esac
  fi
@@ -6156,7 +6156,7 @@ func_mode_link ()
  add=-l$name
elif test yes = $hardcode_shlibpath_var; then
  case :$finalize_shlibpath: in
- *:$libdir:*) ;;
+ *:$libdir:*) ;;
  *) func_append finalize_shlibpath $libdir: ;;
  esac
  add=-l$name
@@ -7307,7 +7307,7 @@ EOF
else
  # Just accumulate the unique libdirs.
  case 
$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
- 
*$hardcode_libdir_separator$libdir$hardcode_libdir_separator*)
+ *$hardcode_libdir_separator$libdir$hardcode_libdir_separator*)
;;
  *)
func_append hardcode_libdirs 
$hardcode_libdir_separator$libdir
@@ -8034,7 +8034,7 @@ EOF
else
  # Just accumulate the unique libdirs.
  case 
$hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in
- *$hardcode_libdir_separator$libdir

  1   2   3   4   5   6   7   8   >