Using `libtoolize --copy --ltdl' was not preserving timestamps, so

parts of the autoconf bootstrap would be rerun spuriously after
the files had been copied into the source tree:

* libtoolize.m4sh (TAR): New default tar command.
(func_copy_cb): Move the core copying internals to here, using
$TAR to transfer files if possible when --copy was specified.
(func_copy): Adjust to call func_copy_cb.
* TODO: Remember to refactor this fix in due course.
Reported by Jeff Squyres <jsquyres@lam-mpi.org>
This commit is contained in:
Gary V. Vaughan 2005-02-22 15:27:07 +00:00
parent 6408a706d7
commit 99c29a17c4
3 changed files with 81 additions and 28 deletions

View File

@ -1,3 +1,16 @@
2005-02-21 Gary V. Vaughan <gary@gnu.org>
Using `libtoolize --copy --ltdl' was not preserving timestamps, so
parts of the autoconf bootstrap would be rerun spuriously after
the files had been copied into the source tree:
* libtoolize.m4sh (TAR): New default tar command.
(func_copy_cb): Move the core copying internals to here, using
$TAR to transfer files if possible when --copy was specified.
(func_copy): Adjust to call func_copy_cb.
* TODO: Remember to refactor this fix in due course.
Reported by Jeff Squyres <jsquyres@lam-mpi.org>
2005-02-21 Peter O'Gorman <peter@pogma.com> 2005-02-21 Peter O'Gorman <peter@pogma.com>
* config/ltmain.m4sh (func_extract_archives) [darwin]: This didn't * config/ltmain.m4sh (func_extract_archives) [darwin]: This didn't
@ -14,7 +27,7 @@
2005-02-04 Ralf Wildenhues <Ralf.Wildenhues@gmx.de> 2005-02-04 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* config/ltmain.m4sh (func_mode_link): Allow five digits in * config/ltmain.m4sh (func_mode_link): Allow five digits in
version-info. version-info.
* NEWS: s/Linux/GNU &/. * NEWS: s/Linux/GNU &/.
@ -40,7 +53,7 @@
2005-02-03 Peter O'Gorman <peter@pogma.com> 2005-02-03 Peter O'Gorman <peter@pogma.com>
* config/ltmain.m4sh [darwin]: Don't add installed libs to * config/ltmain.m4sh [darwin]: Don't add installed libs to
temp_rpath when building executables on darwin, or other systems temp_rpath when building executables on darwin, or other systems
which use hardcode_automatic. It may break our wrapper scripts. which use hardcode_automatic. It may break our wrapper scripts.
@ -153,16 +166,16 @@
2005-01-16 Peter O'Gorman <peter@pogma.com> 2005-01-16 Peter O'Gorman <peter@pogma.com>
* config/ltmain.m4sh (func_mode_link): Don't pass through * config/ltmain.m4sh (func_mode_link): Don't pass through
compiler-like thread flags when using $LD to do the linking. compiler-like thread flags when using $LD to do the linking.
Use compiler_flags instead. Use compiler_flags instead.
Reported by Mark_Andrews@isc.org. Reported by Mark_Andrews@isc.org.
* m4/libtool.m4 (LT_CMD_MAX_LEN) [osf]: On Tru64 there could * m4/libtool.m4 (LT_CMD_MAX_LEN) [osf]: On Tru64 there could
be a kernel panic when testing the maximum command line length be a kernel panic when testing the maximum command line length
if exec_disable_arg_limit=1. Don't do the tests to figure it if exec_disable_arg_limit=1. Don't do the tests to figure it
out on *-osf*. out on *-osf*.
Reported by Dr. Hans Ekkehard Plesser Reported by Dr. Hans Ekkehard Plesser
<hans.ekkehard.plesser@umb.no> <hans.ekkehard.plesser@umb.no>
2005-01-14 Guido Draheim <guidod-2003-@gmx.de> (tiny change) 2005-01-14 Guido Draheim <guidod-2003-@gmx.de> (tiny change)
@ -195,8 +208,8 @@
* config/ltmain.m4sh (func_mode_link): Fix * config/ltmain.m4sh (func_mode_link): Fix
inherited_linker_flags so it puts it on the link line when inherited_linker_flags so it puts it on the link line when
linking shared libraries as well as when linking executables. linking shared libraries as well as when linking executables.
* tests/inherited_flags.at: test inherited_linker_flags. * tests/inherited_flags.at: test inherited_linker_flags.
* tests/Makefile.am: Add test. * tests/Makefile.am: Add test.
* tests/testsuite.at: Add test. * tests/testsuite.at: Add test.
Reported by: Albert Chin-A-Young <china@thewrittenword.com> Reported by: Albert Chin-A-Young <china@thewrittenword.com>

9
TODO
View File

@ -71,6 +71,13 @@ GNU Libtool
Also report dlerror() for dlclose and dlsym if available Also report dlerror() for dlclose and dlsym if available
- Make sure that the dependency_libs of a dlpreopened module won't be loaded. - Make sure that the dependency_libs of a dlpreopened module won't be loaded.
1.3. libtoolize
---------------
* Rewrite the func_copy_* functions so that instead of forking 2 tar
processes per copied file, a list of files to copy is built and all
files copied with a single pair of tar processes.
2. In the future 2. In the future
================ ================
@ -237,7 +244,7 @@ GNU Libtool
it easier to add new platforms. it easier to add new platforms.
-- --
Copyright (C) 2004 Free Software Foundation, Inc. Copyright (C) 2004, 2005 Free Software Foundation, Inc.
The canonical source of this file is maintained with the The canonical source of this file is maintained with the
GNU Libtool package. Report bugs to bug-libtool@gnu.org. GNU Libtool package. Report bugs to bug-libtool@gnu.org.

View File

@ -5,7 +5,7 @@ m4_divert_push([SCRIPT])#! /bin/sh
# libtoolize (GNU @PACKAGE@@TIMESTAMP@) @VERSION@ # libtoolize (GNU @PACKAGE@@TIMESTAMP@) @VERSION@
# Written by Gary V. Vaughan <gary@gnu.org>, 2003 # Written by Gary V. Vaughan <gary@gnu.org>, 2003
# Copyright (C) 2003, 2004 Free Software Foundation, Inc. # Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
# This is free software; see the source for copying conditions. There is NO # This is free software; see the source for copying conditions. There is NO
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@ -66,6 +66,8 @@ $as_unset CDPATH
m4_include([getopt.m4sh]) m4_include([getopt.m4sh])
TAR=tar
# Command line options: # Command line options:
opt_force=false opt_force=false
opt_install=false opt_install=false
@ -117,6 +119,7 @@ configure_ac=configure.in
test -n "$LN_S" && LN_S="$ECHO $LN_S" test -n "$LN_S" && LN_S="$ECHO $LN_S"
CP="$ECHO $CP" CP="$ECHO $CP"
MKDIR="$ECHO $MKDIR" MKDIR="$ECHO $MKDIR"
TAR="$ECHO $TAR"
fi fi
libtoolize_flags="${libtoolize_flags} --dry-run" libtoolize_flags="${libtoolize_flags} --dry-run"
;; ;;
@ -185,40 +188,70 @@ configure_ac=configure.in
# func_copy srcfile destfile # func_copy srcfile destfile
# If option `--copy' was specified, or soft-linking SRCFILE to DESTFILE fails, # A wrapper for func_copy_cb that accepts arguments in the same order
# then try to copy SRCFILE to DESTFILE. # as the cp(1) shell command.
func_copy () func_copy ()
{ {
$opt_debug $opt_debug
my_srcfile="$1"
my_destfile="$2"
my_return_status=1
func_mkdir_p `$ECHO "X$my_destfile" | $Xsed -e "$dirname"` test -f "$1" || \
{ func_error "\`$1' not copied: not a regular file"; return 1; }
my_f1=`$ECHO "X$1" | $Xsed -e "$basename"`
if test -d "$2"; then
func_copy_cb "$my_f1" `$ECHO "X$1" | $Xsed -e "$dirname"` "$2"
$RM "$my_destfile"
if $opt_link && $LN_S "$my_srcfile" "$my_destfile"; then
$opt_quiet || func_echo "copying file \`$my_destfile'"
my_return_status=0
elif $CP "$my_srcfile" "$my_destfile"; then
$opt_quiet || func_echo "copying file \`$my_destfile'"
my_return_status=0
else else
func_error "can not copy \`$my_srcfile' to \`$my_destfile'"
exit_status=$EXIT_FAILURE # Supporting this would mean changing the timestamp:
test "X$my_f1" = X`$ECHO "X$2" | $Xsed -e "$basename"` \
|| func_fatal_error "func_copy() cannot change filename on copy"
func_copy_cb "$my_f1" \
`$ECHO "X$1" | $Xsed -e "$dirname"` \
`$ECHO "X$2" | $Xsed -e "$dirname"`
fi fi
return $my_return_status return $copy_return_status # set in func_copy_cb
} }
# func_copy_cb filename srcdir destdir # func_copy_cb filename srcdir destdir
# A wrapper for func_copy that accepts arguments in the order # If option `--copy' was specified, or soft-linking SRCFILE to DESTFILE fails,
# used by func_copy_all_files callbacks. # then try to copy SRCFILE to DESTFILE (without changing the timestamp if
# possible).
func_copy_cb () func_copy_cb ()
{ {
$opt_debug $opt_debug
func_copy "$2/$1" "$3/$1" my_file="$1"
my_srcdir="$2"
my_destdir="$3"
copy_return_status=1
# Libtool is probably misinstalled if this happens:
test -f "$my_srcdir/$my_file" || \
{ func_error "\`$my_file' not found in \`$my_srcdir'"; return; }
func_mkdir_p "$my_destdir"
$RM "$my_destdir/$my_file"
if $opt_link && $LN_S "$my_srcdir/$my_file" "$my_destdir/$my_file"; then
$opt_quiet || func_echo "copying file \`$my_destdir/$my_file'"
copy_return_status=0
elif { ( cd "$my_srcdir" && $TAR cf - "$my_file" > /dev/null 2>&1; ) \
| ( cd "$my_destdir" && "$TAR" xf - > /dev/null 2>&1; ) } ; then
$opt_quiet || func_echo "copying file \`$my_destdir/$my_file'"
copy_return_status=0
elif $CP -p "$my_srcdir/$my_file" "$my_destdir/$my_file"; then
$opt_quiet || func_echo "copying file \`$my_destdir/$my_file'"
copy_return_status=0
else
func_error "can not copy \`$my_srcdir/$my_file' to \`$my_destdir/'"
exit_status=$EXIT_FAILURE
fi
} }