summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZack Weinberg <zackw@panix.com>2020-12-08 10:32:04 -0500
committerZack Weinberg <zackw@panix.com>2020-12-08 10:34:31 -0500
commitc3afa488831e37137f3319f24456bb2cf7953acf (patch)
tree7445e04506bb95a6c355ebf984979705df2872ad
parent9887fa54b600e4dd78fb58f213d3602b906c47ee (diff)
downloadautoconf-c3afa488831e37137f3319f24456bb2cf7953acf.tar.gz
autoreconf --install --force: replace install-sh with no timestamp
Old versions of install-sh did not have a timestamp line. Therefore, treat the absence of a timestamp line as indicating a very old file (that --install --force should replace), not as an error. Problem reported by Pascal Terjan. * bin/autoreconf.in (extract_time_stamp): Return 1970-01-01 when no timestamp line is found. * tests/torture.at (Missing auxiliary files (--force)): Test replacement of old install-sh with no timestamp line.
-rw-r--r--bin/autoreconf.in3
-rw-r--r--tests/torture.at36
2 files changed, 26 insertions, 13 deletions
diff --git a/bin/autoreconf.in b/bin/autoreconf.in
index 036c0657..bb9f316d 100644
--- a/bin/autoreconf.in
+++ b/bin/autoreconf.in
@@ -326,7 +326,8 @@ sub extract_time_stamp
return $1;
}
}
- fatal "no timestamp line found in $fname";
+ # Old versions of install-sh did not have a timestamp line.
+ return '1970-01-01';
}
# our_aux_file_is_newer ($dest, $src)
diff --git a/tests/torture.at b/tests/torture.at
index acf04b94..56fac648 100644
--- a/tests/torture.at
+++ b/tests/torture.at
@@ -2132,40 +2132,52 @@ export ACLOCAL
AT_DATA([configure.ac],
[[AC_INIT([GNU foo], [1.0])
AC_CONFIG_AUX_DIR([build-aux])
+AC_PROG_INSTALL
AC_CANONICAL_HOST
AC_OUTPUT
]])
mkdir build-aux
-AT_DATA([build-aux/config.guess.old],
+AT_DATA([build-aux/config-guess.old],
[[#! /bin/sh
timestamp='1970-01-01'
printf '%s\n' 'frobozz-bogon-bogos1'
]])
-AT_DATA([build-aux/config.sub.new],
+AT_DATA([build-aux/config-sub.new],
[[#! /bin/sh
-timestamp='9999-12-31'
+scriptversion='9999-12-31'
printf '%s\n' "$*"
]])
-cp build-aux/config.guess.old build-aux/config.guess
-cp build-aux/config.sub.new build-aux/config.sub
-chmod +x build-aux/config.sub build-aux/config.guess
+AT_DATA([build-aux/install-sh.old],
+[[#! /bin/sh
+# Old versions of install-sh did not have a timestamp line.
+]])
+
+cp build-aux/config-guess.old build-aux/config.guess
+cp build-aux/config-sub.new build-aux/config.sub
+cp build-aux/install-sh.old build-aux/install-sh
+chmod +x build-aux/config.sub build-aux/config.guess build-aux/install-sh
-# This pass should not change either file.
+# This pass should not change any of the files.
AT_CHECK([autoreconf --install])
-AT_CMP([build-aux/config.guess.old], [build-aux/config.guess])
-AT_CMP([build-aux/config.sub.new], [build-aux/config.sub])
+AT_CMP([build-aux/config-guess.old], [build-aux/config.guess])
+AT_CMP([build-aux/config-sub.new], [build-aux/config.sub])
+AT_CMP([build-aux/install-sh.old], [build-aux/install-sh])
-# This pass should change only config.guess, not config.sub.
+# This pass should change only config.guess and install-sh, not config.sub.
AT_CHECK([autoreconf --install --force])
AT_CHECK(
- [if cmp build-aux/config.guess.old build-aux/config.guess > /dev/null 2>&1
+ [if cmp build-aux/config-guess.old build-aux/config.guess > /dev/null 2>&1
+ then exit 1
+ fi])
+AT_CMP([build-aux/config-sub.new], [build-aux/config.sub])
+AT_CHECK(
+ [if cmp build-aux/install-sh.old build-aux/install-sh > /dev/null 2>&1
then exit 1
fi])
-AT_CMP([build-aux/config.sub.new], [build-aux/config.sub])
AT_CLEANUP