forked from pool/autoconf
Dirk Mueller
a63372cebc
failures OBS-URL: https://build.opensuse.org/package/show/devel:tools:building/autoconf?expand=0&rev=48
100 lines
2.8 KiB
Diff
100 lines
2.8 KiB
Diff
From 07130c3e48d12ec155ac5d7630dc7477b6989904 Mon Sep 17 00:00:00 2001
|
||
From: Zack Weinberg <zackw@panix.com>
|
||
Date: Tue, 29 Dec 2020 15:33:33 -0500
|
||
Subject: =?UTF-8?q?autom4te:=20always=20update=20the=20output=20file,=20ev?=
|
||
=?UTF-8?q?en=20if=20it=20hasn=E2=80=99t=20changed?=
|
||
MIME-Version: 1.0
|
||
Content-Type: text/plain; charset=UTF-8
|
||
Content-Transfer-Encoding: 8bit
|
||
|
||
Automake generates a Makefile rule for regenerating the configure
|
||
script, that relies on an invocation of ‘autoconf’ always bumping the
|
||
timestamp on the configure script, even if it hasn’t changed.
|
||
The patch to make autom4te update the output file atomically
|
||
(1725c947144d9bebfe7817c2c5f0d53d884b1297) broke this.
|
||
|
||
Fixes several failures in automake’s test suite.
|
||
|
||
* bin/autom4te.in (handle_output): Always call update_file with force=1.
|
||
* tests/tools.at (autoconf: timestamp changes): New test.
|
||
---
|
||
bin/autom4te.in | 4 +++-
|
||
tests/tools.at | 46 ++++++++++++++++++++++++++++++++++++++++++++++
|
||
2 files changed, 49 insertions(+), 1 deletion(-)
|
||
|
||
diff --git a/bin/autom4te.in b/bin/autom4te.in
|
||
index 4c2b905c..64653a44 100644
|
||
--- a/bin/autom4te.in
|
||
+++ b/bin/autom4te.in
|
||
@@ -609,7 +609,9 @@ sub handle_output ($$)
|
||
}
|
||
|
||
$out->close();
|
||
- update_file ($scratchfile, $output, $force)
|
||
+ # Always update the file, even if it didn't change;
|
||
+ # Automake relies on this.
|
||
+ update_file ($scratchfile, $output, 1)
|
||
if defined $scratchfile;
|
||
|
||
# If no forbidden words, we're done.
|
||
diff --git a/tests/tools.at b/tests/tools.at
|
||
index 49710202..89b8b63b 100644
|
||
--- a/tests/tools.at
|
||
+++ b/tests/tools.at
|
||
@@ -662,6 +662,52 @@ arbitrary $text
|
||
AT_CLEANUP
|
||
|
||
|
||
+# autoconf: timestamp changes
|
||
+# ---------------------------
|
||
+# Automake needs autoconf to update the timestamp on the configure script
|
||
+# whenever configure.ac or aclocal.m4 changes, even if the contents of the
|
||
+# configure script have not changed.
|
||
+AT_SETUP([autoconf: timestamp changes])
|
||
+
|
||
+AT_DATA([aclocal.m4],
|
||
+[[AC_DEFUN([local_KILROY], [# kilroy was here
|
||
+])
|
||
+]])
|
||
+
|
||
+AT_DATA_AUTOCONF([configure.ac],
|
||
+[[AC_INIT
|
||
+AC_PROG_CC
|
||
+local_KILROY
|
||
+AC_OUTPUT
|
||
+]])
|
||
+
|
||
+AT_CHECK_AUTOCONF
|
||
+
|
||
+cp configure configure.1
|
||
+sleep 1
|
||
+printf '%s\n' 'AC_LIBSOURCES([foo.c])dn@&t@l' >> configure.ac
|
||
+
|
||
+# This step must not use --force.
|
||
+# We don't need to check shell syntax, because if all goes well,
|
||
+# the script will be unchanged from what it was in the first autoconf
|
||
+# pass, and that was already checked.
|
||
+AT_CHECK_M4([autoconf])
|
||
+AT_CHECK([cmp configure configure.1])
|
||
+AT_CHECK([test configure -nt configure.1])
|
||
+
|
||
+cp configure configure.2
|
||
+sleep 1
|
||
+printf '%s\n' \
|
||
+ 'AC_DEFUN([unused_MACRO], [# bob was there too' \
|
||
+ '])' >> aclocal.m4
|
||
+
|
||
+# Same as above.
|
||
+AT_CHECK_M4([autoconf])
|
||
+AT_CHECK([cmp configure configure.2])
|
||
+AT_CHECK([test configure -nt configure.2])
|
||
+
|
||
+AT_CLEANUP
|
||
+
|
||
|
||
## --------- ##
|
||
## ifnames. ##
|
||
--
|
||
cgit v1.2.1
|
||
|