From c3afa488831e37137f3319f24456bb2cf7953acf Mon Sep 17 00:00:00 2001 From: Zack Weinberg Date: Tue, 8 Dec 2020 10:32:04 -0500 Subject: 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. --- bin/autoreconf.in | 3 ++- 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 -- cgit v1.2.1