[-cc automake, -cc bug-sed, +cc automake-patches] Reference: <http://lists.gnu.org/archive/html/automake/2012-12/msg00039.html>
I wrote: > > At any rate, I agree the error message caused by the abrupt removal > is horrible. I'll soon post a patch to have still-exiting uses of > AM_CONFIG_HEADER give a clear error message (as is done for the > AM_C_PROTOTYPES since Automake 1.12). Making that fix quickly > available will be a good reason for a 1.13.1 release. > Attached are a couple of patches for maint, one about AM_CONFIG_HEADER, and the other about AM_PROG_CC_STDC. I will push shorty. I'll also have to write a similar patch about AM_PROG_MKDIR_P (for master, as this macro is only deprecated in 1.13, and will be removed in 1.14). Regards, Stefano
>From 8e921bf86103578b56b2910590c7f1157e96e380 Mon Sep 17 00:00:00 2001 Message-Id: <8e921bf86103578b56b2910590c7f1157e96e380.1356862900.git.stefano.lattar...@gmail.com> From: Stefano Lattarini <stefano.lattar...@gmail.com> Date: Sun, 30 Dec 2012 10:33:23 +0100 Subject: [PATCH 1/2] obsolete: better error message if AM_CONFIG_HEADER is used In Automake 1.13, the long-deprecated macro AM_CONFIG_HEADER (deprecated since 2002) has been removed in favour of AC_CONFIG_HEADERS. However, the removal was done without a proper deprecation period, and that caused packages upgrading to Automake 1.13 to fail with very unclear error messages, e.g.: configure.ac:4: warning: macro 'AM_CONFIG_HEADER' not found in library from aclocal, and: configure.ac:4: error: possibly undefined macro: AM_CONFIG_HEADER If this token and others are legitimate, please use m4_pattern_allow. See the Autoconf documentation. from autoconf. In an attempt to mitigate this issue, we re-add an AM_CONFIG_HEADER definition that simply raises a *clear* error message when the macro is used. Report by Paolo Bonzini: <http://lists.gnu.org/archive/html/automake/2012-12/msg00039.html> * t/am-config-header-no-more.sh: New test. * t/list-of-tests.mk: Add it. * m4/obsolete-err.m4: New file, contain the new AM_CONFIG_HEADER "error-raising" definition, as well as the definition of the similarly obsolete macros 'AM_C_PROTOTYPES' and 'fp_C_PROTOTYPES', moved in from ... * m4/protos.m4: ... this file, which has thus been removed. * Makefile.am (dist_automake_ac_DATA): Adjust. * t/ansi2knr-no-more.sh: Likewise. * NEWS: Update. Signed-off-by: Stefano Lattarini <stefano.lattar...@gmail.com> --- Makefile.am | 2 +- NEWS | 10 ++++++++- m4/{protos.m4 => obsolete-err.m4} | 8 ++++++-- t/am-config-header-no-more.sh | 43 +++++++++++++++++++++++++++++++++++++++ t/ansi2knr-no-more.sh | 2 +- t/list-of-tests.mk | 1 + 6 files changed, 61 insertions(+), 5 deletions(-) rename m4/{protos.m4 => obsolete-err.m4} (62%) create mode 100755 t/am-config-header-no-more.sh diff --git a/Makefile.am b/Makefile.am index 6a4ebd4..8d8e033 100644 --- a/Makefile.am +++ b/Makefile.am @@ -283,8 +283,8 @@ dist_automake_ac_DATA = \ m4/minuso.m4 \ m4/missing.m4 \ m4/mkdirp.m4 \ + m4/obsolete-err.m4 \ m4/options.m4 \ - m4/protos.m4 \ m4/python.m4 \ m4/runlog.m4 \ m4/sanity.m4 \ diff --git a/NEWS b/NEWS index bdafaed..ce4a9c8 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -New in 1.13: +New in 1.13.1: * WARNING: Future backward-incompatibilities! @@ -51,6 +51,14 @@ New in 1.13: * Bugs fixed: + - Use of the obsolete macro AM_CONFIG_HEADER causes a clear and + helpful error message, instead of obscure ones (issue introduced + in Automake 1.13). + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +* Bugs fixed: + - ylwrap renames properly header guards in generated header files (*.h), instead of leaving Y_TAB_H. diff --git a/m4/protos.m4 b/m4/obsolete-err.m4 similarity index 62% rename from m4/protos.m4 rename to m4/obsolete-err.m4 index c8c7adc..24321dd 100644 --- a/m4/protos.m4 +++ b/m4/obsolete-err.m4 @@ -1,5 +1,6 @@ # -*- Autoconf -*- -# Obsolete (and now removed) automatic de-ANSI-fiction support. +# Obsolete and "removed" macros, that must however still report explicit +# error messages when used, to smooth transition. # # Copyright (C) 1996-2012 Free Software Foundation, Inc. # @@ -7,7 +8,10 @@ # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. +AC_DEFUN([AM_CONFIG_HEADER], +[AC_FATAL(['$0': this macro is obsolete. + You should use the 'AC][_CONFIG_HEADERS' macro instead.])]) + AC_DEFUN([AM_C_PROTOTYPES], [AC_FATAL([automatic de-ANSI-fication support has been removed])]) - AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES]) diff --git a/t/am-config-header-no-more.sh b/t/am-config-header-no-more.sh new file mode 100755 index 0000000..997c42e --- /dev/null +++ b/t/am-config-header-no-more.sh @@ -0,0 +1,43 @@ +#! /bin/sh +# Copyright (C) 2011-2012 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# Check that any attempt to use the obsolete macro AM_CONFIG_HEADER +# elicits clear and explicit fatal errors. + +. test-init.sh + +geterr () +{ + "$@" -Wnone 2>stderr && { cat stderr >&2; exit 1; } + cat stderr >&2 + grep "^configure\.ac:4:.*'AM_CONFIG_HEADER'.*obsolete" stderr + grep "'AC_CONFIG_HEADERS'.* instead" stderr +} + +$ACLOCAL +mv aclocal.m4 aclocal.sav + +echo AM_CONFIG_HEADER >> configure.ac + +geterr $ACLOCAL +test ! -f aclocal.m4 + +cat aclocal.sav "$am_automake_acdir"/obsolete-err.m4 > aclocal.m4 + +geterr $AUTOCONF +geterr $AUTOMAKE + +: diff --git a/t/ansi2knr-no-more.sh b/t/ansi2knr-no-more.sh index e28e651..dfb2e17 100755 --- a/t/ansi2knr-no-more.sh +++ b/t/ansi2knr-no-more.sh @@ -32,7 +32,7 @@ $ACLOCAL -Wnone 2>stderr && { cat stderr >&2; exit 1; } cat stderr >&2 grep "^configure\\.ac:5:.*$warn_rx" stderr -cat aclocal.sav "$am_automake_acdir"/protos.m4 > aclocal.m4 +cat aclocal.sav "$am_automake_acdir"/obsolete-err.m4 > aclocal.m4 $AUTOCONF -Wnone 2>stderr && { cat stderr >&2; exit 1; } cat stderr >&2 grep "^configure\\.ac:5:.*$warn_rx" stderr diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk index 5ee31d0..00162a8 100644 --- a/t/list-of-tests.mk +++ b/t/list-of-tests.mk @@ -131,6 +131,7 @@ t/amhello-cross-compile.sh \ t/amhello-binpkg.sh \ t/aminit-moreargs-deprecation.sh \ t/amassign.sh \ +t/am-config-header-no-more.sh \ t/am-macro-not-found.sh \ t/amopt.sh \ t/amopts-location.sh \ -- 1.8.1.rc3.27.g3b73c7d
>From 9c07d8926ec97d43f1f811706043e5398ef916cf Mon Sep 17 00:00:00 2001 Message-Id: <9c07d8926ec97d43f1f811706043e5398ef916cf.1356862900.git.stefano.lattar...@gmail.com> In-Reply-To: <8e921bf86103578b56b2910590c7f1157e96e380.1356862900.git.stefano.lattar...@gmail.com> References: <8e921bf86103578b56b2910590c7f1157e96e380.1356862900.git.stefano.lattar...@gmail.com> From: Stefano Lattarini <stefano.lattar...@gmail.com> Date: Sun, 30 Dec 2012 11:04:39 +0100 Subject: [PATCH 2/2] obsolete: better error message if AM_PROG_CC_STDC is used In Automake 1.13, the long-deprecated (since 2002) macro AM_PROG_CC_STDC has been removed. Such a removal, albeit sensible and justified, was probably done in a too-abrupt way, since it didn't turn the pre-existing warning messages into fatal error messages, but simply dropped the macro definition, so that remaining usages of it would cause unclear error messages, e.g.: configure.ac:4: warning: macro 'AM_PROG_CC_STDC' not found in library from aclocal, and: configure.ac:4: error: possibly undefined macro: AM_PROG_CC_STDC If this token and others are legitimate, please use m4_pattern_allow. See the Autoconf documentation. from autoconf. In an attempt to mitigate this issue, we re-add an AM_PROG_CC_STDC definition that simply raises a *clear* error message when the macro is used. * t/am-prog-cc-stdc-no-more.sh: New test. * t/list-of-tests.mk: Add it. * m4/obsolete-err.m4: Add the new "error-raising" definition for AM_PROG_CC_STDC; the error message is a variation of the one already present in the older version of this macro, before it got removed in commit 'v1.12-15-gd2ca168'. * NEWS: Update. Signed-off-by: Stefano Lattarini <stefano.lattar...@gmail.com> --- NEWS | 6 +++--- m4/obsolete-err.m4 | 6 ++++++ t/am-prog-cc-stdc-no-more.sh | 43 +++++++++++++++++++++++++++++++++++++++++++ t/list-of-tests.mk | 1 + 4 files changed, 53 insertions(+), 3 deletions(-) create mode 100755 t/am-prog-cc-stdc-no-more.sh diff --git a/NEWS b/NEWS index ce4a9c8..b135b2a 100644 --- a/NEWS +++ b/NEWS @@ -51,9 +51,9 @@ New in 1.13.1: * Bugs fixed: - - Use of the obsolete macro AM_CONFIG_HEADER causes a clear and - helpful error message, instead of obscure ones (issue introduced - in Automake 1.13). + - Use of the obsolete macros AM_CONFIG_HEADER or AM_PROG_CC_STDC now + causes a clear and helpful error message, instead of obscure ones + (issue introduced in Automake 1.13). ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/m4/obsolete-err.m4 b/m4/obsolete-err.m4 index 24321dd..2d7c518 100644 --- a/m4/obsolete-err.m4 +++ b/m4/obsolete-err.m4 @@ -12,6 +12,12 @@ AC_DEFUN([AM_CONFIG_HEADER], [AC_FATAL(['$0': this macro is obsolete. You should use the 'AC][_CONFIG_HEADERS' macro instead.])]) +AU_DEFUN([AM_PROG_CC_STDC], +[AC_FATAL(['$0': this macro is obsolete. + You should simply use the 'AC][_PROG_CC' macro instead. + Also, your code should no longer depend upon 'am_cv_prog_cc_stdc', + but upon 'ac_cv_prog_cc_stdc'.])]) + AC_DEFUN([AM_C_PROTOTYPES], [AC_FATAL([automatic de-ANSI-fication support has been removed])]) AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES]) diff --git a/t/am-prog-cc-stdc-no-more.sh b/t/am-prog-cc-stdc-no-more.sh new file mode 100755 index 0000000..268a4bf --- /dev/null +++ b/t/am-prog-cc-stdc-no-more.sh @@ -0,0 +1,43 @@ +#! /bin/sh +# Copyright (C) 2011-2012 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# Check that any attempt to use the obsolete macro AM_CONFIG_HEADER +# elicits clear and explicit fatal errors. + +. test-init.sh + +geterr () +{ + "$@" -Wnone 2>stderr && { cat stderr >&2; exit 1; } + cat stderr >&2 + grep "^configure\.ac:4:.*'AM_PROG_CC_STDC'.*obsolete" stderr + grep "'AC_PROG_CC'.* instead" stderr +} + +$ACLOCAL +mv aclocal.m4 aclocal.sav + +echo AM_PROG_CC_STDC >> configure.ac + +geterr $ACLOCAL +test ! -f aclocal.m4 + +cat aclocal.sav "$am_automake_acdir"/obsolete-err.m4 > aclocal.m4 + +geterr $AUTOCONF +geterr $AUTOMAKE + +: diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk index 00162a8..4fe8216 100644 --- a/t/list-of-tests.mk +++ b/t/list-of-tests.mk @@ -132,6 +132,7 @@ t/amhello-binpkg.sh \ t/aminit-moreargs-deprecation.sh \ t/amassign.sh \ t/am-config-header-no-more.sh \ +t/am-prog-cc-stdc-no-more.sh \ t/am-macro-not-found.sh \ t/amopt.sh \ t/amopts-location.sh \ -- 1.8.1.rc3.27.g3b73c7d