- add autom4te-always-update-output-file.patch to fix testsuite

failures

OBS-URL: https://build.opensuse.org/package/show/devel:tools:building/autoconf?expand=0&rev=48
This commit is contained in:
Dirk Mueller 2021-01-16 19:20:19 +00:00 committed by Git OBS Bridge
parent 30e14cb563
commit a63372cebc
5 changed files with 114 additions and 3 deletions

View File

@ -1,7 +1,7 @@
#
# spec file for package autoconf-el
#
# Copyright (c) 2020 SUSE LLC
# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed

View File

@ -1,7 +1,7 @@
#
# spec file for package autoconf-testsuite
#
# Copyright (c) 2020 SUSE LLC
# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -26,6 +26,8 @@ Source0: http://ftp.gnu.org/gnu/autoconf/autoconf-%{version}.tar.xz
Source1: http://ftp.gnu.org/gnu/autoconf/autoconf-%{version}.tar.xz.sig
Source2: %{name}.keyring
Patch0: autoreconf-ltdl.diff
# PATCH-FIX-UPSTREAM
Patch1: https://git.savannah.gnu.org/cgit/autoconf.git/patch/?id=07130c3e48d12ec155ac5d7630dc7477b6989904#/autom4te-always-update-output-file.patch
BuildRequires: help2man
BuildRequires: m4 >= 1.4.6
Requires: info
@ -52,6 +54,7 @@ only required for the generation of the scripts, not their use.
%prep
%setup -q -n autoconf-%{version}
%patch0
%patch1 -p1
%build
%configure

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Sat Jan 16 18:47:23 UTC 2021 - Dirk Müller <dmueller@suse.com>
- add autom4te-always-update-output-file.patch to fix testsuite
failures
-------------------------------------------------------------------
Sun Dec 13 18:52:47 UTC 2020 - Andreas Stieger <andreas.stieger@gmx.de>

View File

@ -1,7 +1,7 @@
#
# spec file for package autoconf
#
# Copyright (c) 2020 SUSE LLC
# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -26,6 +26,8 @@ Source0: http://ftp.gnu.org/gnu/autoconf/autoconf-%{version}.tar.xz
Source1: http://ftp.gnu.org/gnu/autoconf/autoconf-%{version}.tar.xz.sig
Source2: %{name}.keyring
Patch0: autoreconf-ltdl.diff
# PATCH-FIX-UPSTREAM
Patch1: https://git.savannah.gnu.org/cgit/autoconf.git/patch/?id=07130c3e48d12ec155ac5d7630dc7477b6989904#/autom4te-always-update-output-file.patch
BuildRequires: help2man
BuildRequires: m4 >= 1.4.6
Requires: info
@ -52,6 +54,7 @@ only required for the generation of the scripts, not their use.
%prep
%setup -q -n autoconf-%{version}
%patch0
%patch1 -p1
%build
%configure

View File

@ -0,0 +1,99 @@
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 hasnt changed.
The patch to make autom4te update the output file atomically
(1725c947144d9bebfe7817c2c5f0d53d884b1297) broke this.
Fixes several failures in automakes 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