]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
autoreconf --install --force: replace install-sh with no timestamp
authorZack Weinberg <zackw@panix.com>
Tue, 8 Dec 2020 15:32:04 +0000 (10:32 -0500)
committerZack Weinberg <zackw@panix.com>
Tue, 8 Dec 2020 15:34:31 +0000 (10:34 -0500)
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
tests/torture.at

index 036c0657f4f7534f4082bfe120ef599a41fb292a..bb9f316d72dc0feea1d8712d8f3846ee1ed1611b 100644 (file)
@@ -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)
index acf04b9418e9708068536f24311fece1528f63f2..56fac648643ee3d253978c73b8b1a362f111e0c0 100644 (file)
@@ -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