diff options
author | Zack Weinberg <zackw@panix.com> | 2020-12-08 10:32:04 -0500 |
---|---|---|
committer | Zack Weinberg <zackw@panix.com> | 2020-12-08 10:34:31 -0500 |
commit | c3afa488831e37137f3319f24456bb2cf7953acf (patch) | |
tree | 7445e04506bb95a6c355ebf984979705df2872ad | |
parent | 9887fa54b600e4dd78fb58f213d3602b906c47ee (diff) | |
download | autoconf-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.in | 3 | ||||
-rw-r--r-- | tests/torture.at | 36 |
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 |