]> git.ipfire.org Git - thirdparty/autoconf.git/commit
Make autoreconf --force --install overwrite existing files (#110371)
authorZack Weinberg <zackw@panix.com>
Mon, 30 Nov 2020 23:06:26 +0000 (18:06 -0500)
committerZack Weinberg <zackw@panix.com>
Mon, 30 Nov 2020 23:06:26 +0000 (18:06 -0500)
commit40fa9edce6ad1a05988e4743a7ca64c3a8b3208d
tree58eb08c6f9b6f7d7f1823069764414f91d670a1d
parentf44695c56b65e29829da43b594c31c59de5766a6
Make autoreconf --force --install overwrite existing files (#110371)

The new feature of autoreconf --install installing config.guess,
config.sub, and install-sh itself didn’t implement --force mode
correctly; existing files would not be overwritten.

The fix has two parts.  If --force is in effect, we try to install
everything that we can from the needed-auxfiles list *before* checking
which of them already exist.  But also, we don’t overwrite existing
files unconditionally, even with --force; we only do so if the file we
can install has a newer “timestamp” line than the copy at the
destination.  This is because Automake can also install all of the
files we can install.  Suppose someone is using autoconf 2.70 with a
newly released automake 1.17; automake 1.17 will presumably ship with
a newer config.guess than autoconf 2.70 did; that version should win.

Fixes bug #110371.

* bin/autoreconf.in (extract_time_stamp, our_aux_file_is_newer): New functions.
  (install_aux_file): If the destination exists, and our copy is not
  newer, do not overwrite it.
  (autoreconf_current_directory): When $force is true, attempt to
  install all needed aux files *before* scanning for missing aux files.
  (throughout): Remove extra \n from various error messages.

* tests/torture.at (Missing auxiliary files (--force)): New test.
bin/autoreconf.in
tests/torture.at