Subject: bug#9890: cosmetic bug in AM_MAINTAINER_MODE

From: Stefano Lattarini <[email-masked]>
Date: Sat, 29 Oct 2011 12:18:15 +0200

tags 9890 patch
thanks

On Thursday 27 October 2011, Zack Weinberg wrote:
> If you use AM_MAINTAINER_MODE([enable]), configure will print
> 
> > checking whether to disable maintainer-specific portions of Makefiles ... yes
> 
> when --disable-maintainer-mode was *not* given on the command line, and
> 
> > checking whether to disable maintainer-specific portions of Makefiles ... no
> 
> when it *was* given.  This states the opposite of what has actually happened.
> 
> The easiest way to fix this cosmetic bug is to not use
> am_maintainer_other in the first argument to AC_MSG_CHECKING.  The
> result code ($USE_MAINTAINER_MODE) is "yes" if maintainer mode is
> enabled and "no" if it isn't, regardless of what the default was, so
> it will always be correct to say "checking whether to enable ...".
> Patch attached.
>
> (Bug found in automake/aclocal 1.11, but maintainer.m4 doesn't seem to
> have been modified in a long time.)
> 
Thanks for the analysis and solution.  I've applied your diff, and added
a testcase.  Attached is the patch I intend to push shortly (I'll give a
couple of days for reviews and objections).  Also, I have a minor question:
Zack, are you the same "Zack Weinberg" already listed in the THANKS file
with the address "[email-masked]"?  If yes, should I update that
address?

Regards,
  Stefano
From 58c1537ce9a5ff3fa4a7afbf5e85464f715ba523 Mon Sep 17 00:00:00 2001
Message-Id: <58c1537ce[email-masked]>
From: Stefano Lattarini <[email-masked]>
Date: Sat, 29 Oct 2011 12:15:59 +0200
Subject: [PATCH] maint-mode: fix botched configure messages

This change fixes automake bug#9890.

* m4/maintainer.m4 (AM_MAINTAINER_MODE): Fix the "checking ..."
configure message related to the enabling/disabling of maintainer
mode.
* tests/help-maintainer.test: Renamed ...
* tests/maintmode-configure-msg.test: ... to this, and extended
to cover the fixed bug.  Also, since we are at it, make grepping
of configure help screens stricter, and throw in some few other
changes to reduce code duplication and enhance readability.
* tests/Makefile.am (TESTS): Update.

Report and initial patch by Zack Weinberg, test cases added by
Stefano Lattarini.
---
 ChangeLog                          |   17 ++++++++
 m4/maintainer.m4                   |    6 +-
 tests/Makefile.am                  |    2 +-
 tests/Makefile.in                  |    2 +-
 tests/help-maintainer.test         |   61 ---------------------------
 tests/maintmode-configure-msg.test |   79 ++++++++++++++++++++++++++++++++++++
 6 files changed, 101 insertions(+), 66 deletions(-)
 delete mode 100755 tests/help-maintainer.test
 create mode 100755 tests/maintmode-configure-msg.test

diff --git a/ChangeLog b/ChangeLog
index 39c661c..972d52a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+2011-10-29  Zack Weinberg <[email-masked]>  (tiny change)
+	    Stefano Lattarini  <[email-masked]>
+
+	maint-mode: fix botched configure messages
+	This change fixes automake bug#9890.
+	* m4/maintainer.m4 (AM_MAINTAINER_MODE): Fix the "checking ..."
+	configure message related to the enabling/disabling of maintainer
+	mode.
+	* tests/help-maintainer.test: Renamed ...
+	* tests/maintmode-configure-msg.test: ... to this, and extended
+	to cover the fixed bug.  Also, since we are at it, make grepping
+	of configure help screens stricter, and throw in some few other
+	changes to reduce code duplication and enhance readability.
+	* tests/Makefile.am (TESTS): Update.
+	Report and initial patch by Zack Weinberg, test cases added by
+	Stefano Lattarini.
+
 2011-10-20  Stefano Lattarini  <[email-masked]>
 
 	deps: partially revert commit `v1.11-512-geeee551'
diff --git a/m4/maintainer.m4 b/m4/maintainer.m4
index 0b54e67..085e96c 100644
--- a/m4/maintainer.m4
+++ b/m4/maintainer.m4
@@ -1,8 +1,8 @@
 # Add --enable-maintainer-mode option to configure.         -*- Autoconf -*-
 # From Jim Meyering
 
-# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008
-# Free Software Foundation, Inc.
+# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008,
+# 2011 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -22,7 +22,7 @@ AC_DEFUN([AM_MAINTAINER_MODE],
        [disable], [m4_define([am_maintainer_other], [enable])],
        [m4_define([am_maintainer_other], [enable])
         m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])])
-AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles])
+AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
   dnl maintainer-mode's default is 'disable' unless 'enable' is passed
   AC_ARG_ENABLE([maintainer-mode],
 [  --][am_maintainer_other][-maintainer-mode  am_maintainer_other make rules and dependencies not useful
diff --git a/tests/Makefile.am b/tests/Makefile.am
index c16eb9f..dfa9781 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -422,7 +422,6 @@ help-depend2.test \
 help-dmalloc.test \
 help-init.test \
 help-lispdir.test \
-help-maintainer.test \
 help-multilib.test \
 help-python.test \
 help-regex.test \
@@ -548,6 +547,7 @@ lzma.test \
 m4-inclusion.test \
 maintclean.test \
 maintclean-vpath.test \
+maintmode-configure-msg.test \
 make.test \
 makej.test \
 makej2.test \
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 65e8d7f..248b6ba 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -706,7 +706,6 @@ help-depend2.test \
 help-dmalloc.test \
 help-init.test \
 help-lispdir.test \
-help-maintainer.test \
 help-multilib.test \
 help-python.test \
 help-regex.test \
@@ -832,6 +831,7 @@ lzma.test \
 m4-inclusion.test \
 maintclean.test \
 maintclean-vpath.test \
+maintmode-configure-msg.test \
 make.test \
 makej.test \
 makej2.test \
diff --git a/tests/help-maintainer.test b/tests/help-maintainer.test
deleted file mode 100755
index 6933d0c..0000000
--- a/tests/help-maintainer.test
+++ /dev/null
@@ -1,61 +0,0 @@
-#! /bin/sh
-# Copyright (C) 2010 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/>.
-
-# Make sure that our macro `AM_MAINTAINER_MODE' adds proper text to
-# the configure help screen.
-
-. ./defs || Exit 1
-
-set -e
-
-cat > configure.in <<END
-AC_INIT([$me], [1.0])
-AM_MAINTAINER_MODE
-END
-
-cat configure.in
-$ACLOCAL
-$AUTOCONF --force
-./configure --help >stdout || { cat stdout; Exit 1; }
-cat stdout
-$EGREP '^  *--enable-maintainer-mode( |$)' stdout
-$FGREP ' enable make rules' stdout
-
-rm -rf autom4te*.cache # just to be sure
-sed 's/\(AM_MAINTAINER_MODE\).*/\1([disable])/' configure.in >t
-mv -f t configure.in
-
-cat configure.in
-$ACLOCAL
-$AUTOCONF --force
-./configure --help >stdout || { cat stdout; Exit 1; }
-cat stdout
-$EGREP '^  *--enable-maintainer-mode( |$)' stdout
-$FGREP ' enable make rules' stdout
-
-rm -rf autom4te*.cache # just to be sure
-sed 's/\(AM_MAINTAINER_MODE\).*/\1([enable])/' configure.in >t
-mv -f t configure.in
-
-cat configure.in
-$ACLOCAL
-$AUTOCONF --force
-./configure --help >stdout || { cat stdout; Exit 1; }
-cat stdout
-$EGREP '^  *--disable-maintainer-mode( |$)' stdout
-$FGREP ' disable make rules' stdout
-
-:
diff --git a/tests/maintmode-configure-msg.test b/tests/maintmode-configure-msg.test
new file mode 100755
index 0000000..5771392
--- /dev/null
+++ b/tests/maintmode-configure-msg.test
@@ -0,0 +1,79 @@
+#! /bin/sh
+# Copyright (C) 2010, 2011 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/>.
+
+# Make sure that our macro `AM_MAINTAINER_MODE' adds proper text to
+# the configure help screen.  Also make sure the "checking ..." messages
+# related to the enabling/disabling of maintainer mode are correct (see
+# automake bug#9890).
+
+. ./defs || Exit 1
+
+set -e
+
+set_maintmode ()
+{
+  rm -rf autom4te*.cache # Just to be sure not to use a stale cache.
+  echo "AC_INIT([$me], [1.0])" > configure.in
+  case $1 in
+    DEFAULT) echo AM_MAINTAINER_MODE;;
+          *) echo "AM_MAINTAINER_MODE([$*])";;
+  esac >> configure.in
+}
+
+check_configure_message_with ()
+{
+  answer=$1; shift
+  ./configure ${1+"$@"} >stdout || { cat stdout; Exit 1; }
+  cat stdout
+  grep "^checking whether to enable maintainer-specific.*\\.\\.\\. $answer$" stdout
+  test `grep -c 'checking.*maint' stdout` -eq 1
+  :
+}
+
+set_maintmode "DEFAULT"
+
+$ACLOCAL
+
+$AUTOCONF --force
+
+./configure --help >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep '^  *--enable-maintainer-mode.* enable make rules' stdout
+
+check_configure_message_with "no"
+check_configure_message_with "yes" --enable-maintainer-mode
+
+set_maintmode "disable"
+
+$AUTOCONF --force
+./configure --help >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep '^  *--enable-maintainer-mode.* enable make rules' stdout
+
+check_configure_message_with "no"
+check_configure_message_with "yes" --enable-maintainer-mode
+
+set_maintmode "enable"
+
+$AUTOCONF --force
+./configure --help >stdout || { cat stdout; Exit 1; }
+cat stdout
+grep '^  *--disable-maintainer-mode.* disable make rules' stdout
+
+check_configure_message_with "yes"
+check_configure_message_with "no" --disable-maintainer-mode
+
+:
-- 
1.7.2.3