From 24b2aae4ea61cefccb7e86de9e078516d7ccf1af Mon Sep 17 00:00:00 2001 From: Zack Weinberg Date: Mon, 14 Dec 2020 14:50:47 -0500 Subject: [PATCH] Fix some build and test failures with Autoconf 2.70. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Autoconf 2.70 (released last week) makes a few changes that broke Automake’s expectations, mostly in the test suite. This patch addresses two of the problems: - autoconf now issues a warning if fed a configure script that doesn’t invoke both AC_INIT and AC_OUTPUT; this, plus a problem with system-provided tools (still under investigation) broke the *build* on macOS; it also causes a couple of spurious testsuite failures. - AC_PACKAGE_NAME and AC_PACKAGE_VERSION are now defined unconditionally. AM_INIT_AUTOMAKE needs to use m4_ifset instead of m4_ifdef to diagnose the obsolete use of AC_INIT with fewer than two arguments. (This change is compatible with autoconf 2.69; m4_ifset is much older, and it means ‘defined with a non-empty value’.) * configure.ac: Use both AC_INIT and AC_OUTPUT in test configure scripts. * t/deprecated-acinit.sh, t/init.sh: Likewise. * m4/init.m4 (AM_INIT_AUTOMAKE): Use m4_ifset, not m4_ifdef, to detect AC_PACKAGE_NAME and/or AC_PACKAGE_VERSION not having a value. --- configure.ac | 9 +++++++-- m4/init.m4 | 2 +- t/deprecated-acinit.sh | 1 + t/init.sh | 1 + 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 45507b6f4..065317411 100644 --- a/configure.ac +++ b/configure.ac @@ -123,7 +123,9 @@ fi AC_CACHE_CHECK([whether autoconf works], [am_cv_autoconf_works], [mkdir conftest -echo 'AC''_INIT' > conftest/conftest.ac +printf '%s\n' > conftest/conftest.ac \ + 'AC''_INIT([smoke-test], [1])' \ + 'AC''_OUTPUT' if AM_RUN_LOG([cd conftest && $am_AUTOCONF -o /dev/null conftest.ac]); then am_cv_autoconf_works=yes @@ -139,7 +141,10 @@ fi AC_CACHE_CHECK([whether autoconf is recent enough], [am_cv_autoconf_version], [mkdir conftest dnl Creative quoting required to avoid spurious expansion of AC_PREREQ macro -echo 'AC'"_PREREQ([[$required_autoconf_version]])" > conftest/conftest.ac +printf '%s\n' > conftest/conftest.ac \ + 'AC'"_PREREQ([[$required_autoconf_version]])" \ + 'AC''_INIT([smoke-test], [1])' \ + 'AC''_OUTPUT' if AM_RUN_LOG([cd conftest && $am_AUTOCONF -o /dev/null conftest.ac]); then am_cv_autoconf_version=yes diff --git a/m4/init.m4 b/m4/init.m4 index f82d756c2..cbe8fddf8 100644 --- a/m4/init.m4 +++ b/m4/init.m4 @@ -64,7 +64,7 @@ m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( - m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl diff --git a/t/deprecated-acinit.sh b/t/deprecated-acinit.sh index 21614bafa..f393d6534 100644 --- a/t/deprecated-acinit.sh +++ b/t/deprecated-acinit.sh @@ -35,6 +35,7 @@ for ac_init in AC_INIT 'AC_INIT([Makefile.am])'; do $ac_init $am_init_automake AC_CONFIG_FILES([Makefile]) + AC_OUTPUT END cat configure.ac # For debugging. $ACLOCAL 2>stderr && { cat stderr >&2; exit 1; } diff --git a/t/init.sh b/t/init.sh index c6f6d6461..df138a040 100644 --- a/t/init.sh +++ b/t/init.sh @@ -25,6 +25,7 @@ for ac_init_args in '' '([x])'; do unindent >configure.ac <