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>
* config/ltmain.m4sh (func_extract_archives) [darwin]: This didn't
@ -14,7 +27,7 @@
2005-02-04 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* config/ltmain.m4sh (func_mode_link): Allow five digits in
version-info.
version-info.
* NEWS: s/Linux/GNU &/.
@ -40,7 +53,7 @@
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
which use hardcode_automatic. It may break our wrapper scripts.
@ -153,16 +166,16 @@
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.
Use compiler_flags instead.
Reported by Mark_Andrews@isc.org.
* m4/libtool.m4 (LT_CMD_MAX_LEN) [osf]: On Tru64 there could
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*.
Reported by Dr. Hans Ekkehard Plesser
Reported by Dr. Hans Ekkehard Plesser
<hans.ekkehard.plesser@umb.no>
2005-01-14 Guido Draheim <guidod-2003-@gmx.de> (tiny change)
@ -195,8 +208,8 @@
* config/ltmain.m4sh (func_mode_link): Fix
inherited_linker_flags so it puts it on the link line when
linking shared libraries as well as when linking executables.
* tests/inherited_flags.at: test inherited_linker_flags.
* tests/Makefile.am: Add test.
* tests/inherited_flags.at: test inherited_linker_flags.
* tests/Makefile.am: Add test.
* tests/testsuite.at: Add test.
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
- 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
================
@ -237,7 +244,7 @@ GNU Libtool
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
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@
# 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
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@ -66,6 +66,8 @@ $as_unset CDPATH
m4_include([getopt.m4sh])
TAR=tar
# Command line options:
opt_force=false
opt_install=false
@ -117,6 +119,7 @@ configure_ac=configure.in
test -n "$LN_S" && LN_S="$ECHO $LN_S"
CP="$ECHO $CP"
MKDIR="$ECHO $MKDIR"
TAR="$ECHO $TAR"
fi
libtoolize_flags="${libtoolize_flags} --dry-run"
;;
@ -185,40 +188,70 @@ configure_ac=configure.in
# func_copy srcfile destfile
# If option `--copy' was specified, or soft-linking SRCFILE to DESTFILE fails,
# then try to copy SRCFILE to DESTFILE.
# A wrapper for func_copy_cb that accepts arguments in the same order
# as the cp(1) shell command.
func_copy ()
{
$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
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
return $my_return_status
return $copy_return_status # set in func_copy_cb
}
# func_copy_cb filename srcdir destdir
# A wrapper for func_copy that accepts arguments in the order
# used by func_copy_all_files callbacks.
# If option `--copy' was specified, or soft-linking SRCFILE to DESTFILE fails,
# then try to copy SRCFILE to DESTFILE (without changing the timestamp if
# possible).
func_copy_cb ()
{
$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
}