Subject: [RFC] build: support and require Automake-NG

From: Stefano Lattarini <[email-masked]>
Date: Sat, 21 Apr 2012 11:48:03 +0200

* configure.ac (AM_INIT_AUTOMAKE): Add the 'ng' option, to ensure that
mainstream Automake is not used by mistake when bootstrapping.  Also,
bump the required Automake version from '1.11.1' to '1.11e', which is
the latest (and still development-only) version of Automake-NG at the
moment of writing.
* bootstrap (check_versions): Hacked to handle automake and aclocal
from Automake-NG specially.  This change should be backported to Gnulib
proper in a later step.
* bootstrap.conf ($buildreq): Require "automake-ng" and "aclocal-ng"
version >= 0.5; don't require mainstream "automake" anymore.

Signed-off-by: Stefano Lattarini <[email-masked]>
---

 I'd like this to be applied to an experimental branch in the coreutils
 repository, which will be used to test and experiment with Automake-NG
 in a real-world, important, medium-complexity package like GNU coreutils
 is.

 I hope you'll agree this is a sensible move, which could bring advantages
 and improvements to both coreutils and Automake-NG.

 Regards,
   Stefano

 bootstrap      |   19 +++++++++++++++++++
 bootstrap.conf |    3 ++-
 configure.ac   |    2 +-
 3 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/bootstrap b/bootstrap
index c8ee3cc..cc058bd 100755
--- a/bootstrap
+++ b/bootstrap
@@ -429,6 +429,25 @@ check_versions() {
         GZIP) ;; # Do not use $GZIP:  it contains gzip options.
         *) eval "app=\${$appvar-$app}" ;;
     esac
+
+    # Special handling for Automake-NG programs.  They are still named as
+    # the mainstream Automake programs ("automake", "aclocal") to avoid
+    # gratuitous incompatibilities with pre-existing usages (by, say,
+    # autoreconf, or custom autogen.sh scripts), but correctly identify
+    # themselves (as being part of "GNU automake-ng") when asked their
+    # version.
+    case $app in
+    automake-ng|aclocal-ng)
+      app=`echo "$app" | sed 's/-ng$//'`
+      if ($app --version | grep '(GNU automake-ng)') >/dev/null 2>&1; then
+        :
+      else
+        echo "$me: Error: '$app' not found or not from Automake-NG" >&2
+        ret=1
+        continue
+      fi ;;
+    esac
+
     if [ "$req_ver" = "-" ]; then
       # Merely require app to exist; not all prereq apps are well-behaved
       # so we have to rely on $? rather than get_version.
diff --git a/bootstrap.conf b/bootstrap.conf
index bb414ef..a2432aa 100644
--- a/bootstrap.conf
+++ b/bootstrap.conf
@@ -307,8 +307,9 @@ gnulib_tool_option_extras="--tests-base=gnulib-tests --with-tests --symlink\
 
 # Build prerequisites
 buildreq="\
+automake-ng -
+aclocal-ng  -
 autoconf   2.62
-automake   1.11.1
 autopoint  -
 bison      -
 gettext    0.17
diff --git a/configure.ac b/configure.ac
index 5a4860e..dab8b07 100644
--- a/configure.ac
+++ b/configure.ac
@@ -32,7 +32,7 @@ AC_CONFIG_SRCDIR([src/ls.c])
 AC_CONFIG_AUX_DIR([build-aux])
 AC_CONFIG_HEADERS([lib/config.h:lib/config.hin])
 
-AM_INIT_AUTOMAKE([1.11.1 no-dist-gzip dist-xz color-tests parallel-tests])
+AM_INIT_AUTOMAKE([1.11e ng no-dist-gzip dist-xz color-tests parallel-tests])
 AM_SILENT_RULES([yes]) # make --enable-silent-rules the default.
 
 dnl POSIXCHECK is worthwhile for maintainers, but adds several seconds
-- 
1.7.9.5