automake-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Automake-commit] [SCM] GNU Automake branch, ng/master, updated. v1.13.1


From: Stefano Lattarini
Subject: [Automake-commit] [SCM] GNU Automake branch, ng/master, updated. v1.13.1d-927-gd7321a5
Date: Thu, 09 May 2013 10:45:03 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Automake".

http://git.sv.gnu.org/gitweb/?p=automake.git;a=commitdiff;h=d7321a5c68a3d35df32a4153a4d8891c26decc83

The branch, ng/master has been updated
       via  d7321a5c68a3d35df32a4153a4d8891c26decc83 (commit)
       via  9b183694a14f5eb93c1aee0d1fb5dcc7c7acbd30 (commit)
       via  df3490b71af4c37a6df8aa6eacdeda8613438c20 (commit)
       via  7010b652966b23567be6e099d6e1c2e01441f213 (commit)
       via  92aa1e944b01a176a49d63f9481294d506f36d2f (commit)
       via  2ad0acea7f3114a3a1e0954154c743c14c2cfab1 (commit)
       via  1667d369091fe41d2bbdf645490a29d45142556f (commit)
       via  57cb996d881ed6e835c2e6e1a5769e7fa9f1a6d0 (commit)
       via  799fa256e63bb1a3aa409b7c8a0d4906d829dba9 (commit)
       via  3e6cad967e30acdc97a26a168021be349d06db25 (commit)
       via  8a11e2fd135fae4626cbb1cc1b4b8dd45efc3feb (commit)
       via  481c9975556b178a3aa095a808b9c7a87a24c426 (commit)
       via  9c813963e2f67cbf4604a1a1947c2ff779ecc8f0 (commit)
       via  e2fd8f5c0c90d9894713e34be7ae8e8774c471da (commit)
       via  2d3a2e36b595cd740894823d060e31c6c483f569 (commit)
       via  f5f75eef28a32493258047eb3060478395a42120 (commit)
       via  b993a265e6af722c2d4cea69d1782ffde33d6d80 (commit)
       via  eddba1ccc124aaed5a613260b259f73e2aedf825 (commit)
       via  dc3cdb1d53c51c95981dbf77b05f70e4040075b9 (commit)
       via  57925b6707d9d6ae0afe92539b019bdd3c062305 (commit)
       via  1adb0570cb5badd8bb569d2d243fcedd103f0b94 (commit)
       via  6d643e93182d50d236ccfeacffad55576cf51d99 (commit)
       via  5c4aaae2b0978ebdc1e1bf950917b82e6f7ad8d5 (commit)
       via  b62616b3bc7dfcd1b260b0369ecf0d67eef3d00e (commit)
       via  c93bc3d4e6d12068f0d9b32b67ec63b3ca3313bd (commit)
       via  7aa99186d1c5fb31d3fd39beb129fc4cb44f2c7c (commit)
       via  d017b54baba7d6eadab6394da6ee62f0a83b1238 (commit)
       via  e242b44eedb39afa0dbd72a74f56b2863c2aaf55 (commit)
       via  425fe1e87a78985c0d51ebb185793e57cdd433da (commit)
       via  d432f067fb1569c4127b86c8d7e157e3687115f2 (commit)
       via  e5e3a629e01c7642a46217817c32cfa86e9bd708 (commit)
       via  6d3ffeb90d64fe060c8ce6aa57b1cc69321bf994 (commit)
       via  8430d41254e03ff3d79f682b4abab6c967db633d (commit)
       via  d90001e3a90ea37fe6866120eb96be7bed8ba66c (commit)
       via  5a29f7aa6fdc2aa1cb8fccfc917dbd5f579c1e7b (commit)
       via  02ead48eb3043b1cfa9eb8072d8270cf5cc66c84 (commit)
       via  69f7791509c523fe8b199a432b72dca6a5ce3caa (commit)
       via  e432b0d3f7deffd3468e7b32ab6760bc7f3148f2 (commit)
       via  c97218a54271bdcc59a0a7b67704feb5344b89d9 (commit)
       via  6eedee4c85c9817e46ed3de9df912ebe0fc9baa4 (commit)
       via  cbf23cebcb8fdeb02b5a69a6741af2507d3ded57 (commit)
      from  00395d44058a4c9cf0f8a6f3c481537a02b46bdd (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit d7321a5c68a3d35df32a4153a4d8891c26decc83
Author: Stefano Lattarini <address@hidden>
Date:   Tue May 7 16:24:13 2013 +0200

    make flags analysis: take advantage of GNU make features
    
    * lib/am/header-vars.mk: Here.  In particular ...
    (am__make_keepgoing): ... rename this ...
    (am.make.keep-going): ... like this, and reimplement using ...
    (am.make.is-running-with-option): ... this new macro, cannibalized
    from the old version of the 'am.make.dry-run' macro.
    (am.make.dry-run): Reimplement using such new macro.
    * lib/am/subdirs.mk: Adjust.
    * t/make-keepgoing.tap: Likewise.  While at, simplify by assuming
    that $MAKE is GNU make, and enhance to test more setups (in particular,
    this makes this test more in sync with the test 't/make-dryrun.tap').
    * t/make-dryrun.tap: While at it, remove an extra empty line.
    
    Signed-off-by: Stefano Lattarini <address@hidden>

commit 9b183694a14f5eb93c1aee0d1fb5dcc7c7acbd30
Merge: 00395d4 df3490b
Author: Stefano Lattarini <address@hidden>
Date:   Tue May 7 15:27:21 2013 +0200

    Merge branch 'master' into ng/master
    
    * master:
      docs: fix warnings given by Texinfo 5.x
      fixlet: remove leftover comment fragment
      master branch: we are going to become Automake 2.0
      maint branch: we are going to become Automake 1.14
      maint: version bump after beta release 1.13.1d
      release: beta release 1.13.1d (will become 1.13.2)
      NEWS: document more robust handling/recognition of make options
      tests: typofixes in comments in t/preproc-c-compile.sh
      tests: remove bashism from a test
      maint: targets and recipes to simplify testing on real-world packages
      build: preparatory refactoring
      build: tiny reduction in code duplication
      make flags analysis: handle more options with args
      make flags analysis: use simpler variable names
      make flags analysis: whitespace changes
      make flags analysis: embed in a subshell
      make flags analysis: be more robust
      make flags analysis: cater to GNU make 3.83 (still unreleased as of now)
      tests: expose weaknesses in make flags analysis
      tests: improve debugging output in checks on make flags analysis
      make flags analysis: refactor, to reduce code duplication
      tests: avoid one tricky use of "make -e"
      cosmetics: remove few trailing whitespace occurrences
      typofix: in NEWS (extra whitespace)
      compat: substitute '@mkdir_p@' as '$(MKDIR_P)' unconditionally
      tests: avoid a spurious error with Solaris make
      subdirs: don't return false positives for the '-k' option's presence
      header-vars: recognize more make flags ('-k' in particular)
      header-vars: simplify how make flags are determined
      tests: remove dead code from t/make-dryrun.tap
      header-vars: new variable $(am__running_with_option)
      tests: expose bug#12554 (false positives for presence of '-k' make option)
    
    Signed-off-by: Stefano Lattarini <address@hidden>

-----------------------------------------------------------------------

Summary of changes:
 Makefile.am                               |   33 ++++++----
 NEWS                                      |   12 +++-
 THANKS                                    |    1 +
 configure.ac                              |    3 +-
 doc/automake-ng.texi                      |    4 +-
 lib/am/header-vars.mk                     |   32 +++++++---
 lib/am/subdirs.mk                         |   13 ++--
 m4/amversion.m4                           |    6 +-
 m4/init.m4                                |    2 +
 m4/tar.m4                                 |    2 +-
 maintainer/maint.mk                       |   97 ++++++++++++++++++++++++++++-
 t/am-prog-mkdir-p.sh                      |   20 ++++++
 t/make-dryrun.tap                         |   24 ++++---
 t/{make-dryrun.tap => make-keepgoing.tap} |   94 +++++++++++++---------------
 t/preproc-c-compile.sh                    |    4 +-
 t/subdir-keep-going-pr12554.sh            |   70 +++++++++++++++++++++
 16 files changed, 315 insertions(+), 102 deletions(-)
 copy t/{make-dryrun.tap => make-keepgoing.tap} (53%)
 create mode 100755 t/subdir-keep-going-pr12554.sh

diff --git a/Makefile.am b/Makefile.am
index 227fe64..60bfca2 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -65,6 +65,11 @@ EXTRA_DIST += \
   PLANS \
   $(gitlog_to_changelog_fixes)
 
+# For some tests or targets, we need to have the just-build automake and
+# aclocal scripts avaiable on PATH.
+extend_PATH = \
+  { PATH='$(abs_builddir)/t/wrap'$(PATH_SEPARATOR)$$PATH && export PATH; }
+
 # Make versioned links.  We only run the transform on the root name;
 # then we make a versioned link with the transformed base name.  This
 # seemed like the most reasonable approach.
@@ -607,8 +612,7 @@ $(unversioned_mans): Makefile
 
 $(versioned_mans): doc/%-$(APIVERSION).1: % lib/Automake/Config.pm
         $(AM_V_GEN)$(MKDIR_P) doc \
-           && PATH="$(abs_builddir)/t/wrap$(PATH_SEPARATOR)$$PATH" \
-           && export PATH \
+           && $(extend_PATH) \
            && $(PERL) $(srcdir)/doc/help2man --output=$@ $*-$(APIVERSION)
 
 
@@ -638,22 +642,25 @@ amhello_configury = \
 dist_noinst_DATA += $(amhello_sources)
 dist_doc_DATA = $(srcdir)/doc/amhello-1.0.tar.gz
 
+setup_autotools_paths = { \
+  $(extend_PATH) \
+    && ACLOCAL=aclocal-$(APIVERSION) && export ACLOCAL \
+    && AUTOMAKE=automake-$(APIVERSION) && export AUTOMAKE \
+    && AUTOCONF='$(am_AUTOCONF)' && export AUTOCONF \
+    && AUTOM4TE='$(am_AUTOM4TE)' && export AUTOM4TE \
+    && AUTORECONF='$(am_AUTORECONF)' && export AUTORECONF \
+    && AUTOHEADER='$(am_AUTOHEADER)' && export AUTOHEADER \
+    && AUTOUPDATE='$(am_AUTOUPDATE)' && export AUTOUPDATE \
+    && true; \
+}
+
 # We depend on configure.ac so that we regenerate the tarball
 # whenever the Automake version changes.
-# aclocal-$(APIVERSION) and automake-$(APIVERSION) are generated by
-# configure in 't/wrap'.
 $(srcdir)/doc/amhello-1.0.tar.gz: $(amhello_sources) $(srcdir)/configure.ac
        $(AM_V_GEN)tmp=amhello-output.tmp \
-         && PATH="$(abs_top_builddir)/t/wrap$(PATH_SEPARATOR)$$PATH" \
-         && export PATH \
          && cd $(srcdir)/doc/amhello \
-         && ACLOCAL=aclocal-$(APIVERSION) && export ACLOCAL \
-         && AUTOMAKE=automake-$(APIVERSION) && export AUTOMAKE \
-         && AUTOCONF='$(am_AUTOCONF)' && export AUTOCONF \
-         && AUTOM4TE='$(am_AUTOM4TE)' && export AUTOM4TE \
-         && AUTORECONF='$(am_AUTORECONF)' && export AUTORECONF \
-         && AUTOHEADER='$(am_AUTOHEADER)' && export AUTOHEADER \
-         && AUTOUPDATE='$(am_AUTOUPDATE)' && export AUTOUPDATE \
+         && : Make our aclocal and automake avaiable before system ones. \
+         && $(setup_autotools_paths) \
          && ( \
            { $(AM_V_P) || exec 5>&2 >$$tmp 2>&1; } \
              && $(am_AUTORECONF) -vfi \
diff --git a/NEWS b/NEWS
index 1bbb0fb..56a3eb4 100644
--- a/NEWS
+++ b/NEWS
@@ -57,7 +57,7 @@ New in 2.0:
       documentation updates and bug and regression fixes; they will
       not introduce new features, nor any backward-incompatibility (any
       such incompatibility would be considered a bug, to be fixed with
-      a further  micro release).
+      a further micro release).
 
     + Minor versions (e.g., 1.14, 2.1) can introduce new backward
       compatible features; the only backward-incompatibilities allowed
@@ -278,6 +278,16 @@ New in 1.13.2:
     m4 files (as can happen with e.g., "libtoolize --install").
     See automake bug#13514.
 
+  - Analysis of make flags in Automake-generated rules has been made more
+    robust, and more future-proof.  For example, in presence of make that
+    (like '-I') take an argument, the characters in said argument will no
+    longer be spuriously considered as a set of additional make options.
+    In particular, automake-generated rules will no longer spuriously
+    believe to be running in dry mode ("make -n") if run with an invocation
+    like "make -I noob"; nor will they believe to be running in keep-going
+    mode ("make -k") if run with an invocation like "make -I kool"
+    (automake bug#12554).
+
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 New in 1.13.1:
diff --git a/THANKS b/THANKS
index 6f82e93..fd023e2 100644
--- a/THANKS
+++ b/THANKS
@@ -258,6 +258,7 @@ Maxim Sinev                     address@hidden
 Maynard Johnson                 address@hidden
 Merijn de Jonge                 address@hidden
 Michael Brantley                address@hidden
+Michael Daniels                 address@hidden
 Michael Hofmann                 address@hidden
 Michael Ploujnikov              address@hidden
 Michel de Ruiter                address@hidden
diff --git a/configure.ac b/configure.ac
index 0d07f03..49a83bd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -16,7 +16,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 AC_PREREQ([2.69])
-AC_INIT([GNU Automake-NG], [1.13a], address@hidden)
+AC_INIT([GNU Automake], [1.99a], address@hidden)
 
 AC_CONFIG_SRCDIR([automake.in])
 AC_CONFIG_AUX_DIR([lib])
@@ -176,7 +176,6 @@ AC_MSG_RESULT([$result])
 # FIXME: for file systems with sub-second timestamp resolutions, this
 # FIXME: might be just one second (or even less if 'sleep' supports
 # FIXME: non-integer arguments); is it worth pursuing that road?
-# than another we wait at least 5 seconds between creations.
 AC_SUBST([MODIFICATION_DELAY], [2])
 
 ## ------------------------------------------- ##
diff --git a/doc/automake-ng.texi b/doc/automake-ng.texi
index 308958e..96a5b90 100644
--- a/doc/automake-ng.texi
+++ b/doc/automake-ng.texi
@@ -178,7 +178,6 @@ Scanning @file{configure.ac}, using @command{aclocal}
 * Optional::                    Other things Automake recognizes
 * aclocal Invocation::          Auto-generating aclocal.m4
 * Macros::                      Autoconf macros supplied with Automake
-* Obsolete Macros::             Obsolete macros you should no longer use
 
 Auto-generating aclocal.m4
 
@@ -192,6 +191,7 @@ Auto-generating aclocal.m4
 Autoconf macros supplied with Automake
 
 * Public Macros::               Macros that you can use.
+* Obsolete Macros::             Obsolete macros you should no longer use
 * Private Macros::              Macros that you should not use.
 
 Directories
@@ -3858,8 +3858,8 @@ Automake ships with several Autoconf macros that you can 
use from your
 
 @menu
 * Public Macros::               Macros that you can use.
-* Private Macros::              Macros that you should not use.
 * Obsolete Macros::             Obsolete macros you should no longer use
+* Private Macros::              Macros that you should not use.
 @end menu
 
 @c consider generating the following subsections automatically from m4 files.
diff --git a/lib/am/header-vars.mk b/lib/am/header-vars.mk
index 3fa7ddf..37f0c87 100644
--- a/lib/am/header-vars.mk
+++ b/lib/am/header-vars.mk
@@ -154,18 +154,32 @@ am.cmd.ensure-target-dir-exists = $(call 
am.cmd.ensure-dir-exists,$(@D))
 am.vpath.rewrite = \
   $(firstword $(wildcard $(strip $(1))) $(srcdir)/$(strip $(1)))
 
-# make this overridable from the environment, for better compatibility
+# Leave this overridable from the environment, for better compatibility
 # with mainline Automake.
 DESTDIR ?=
 
-# Tell whether make is running in "dry mode".  It is either 'true' or
-# 'false', so that it can be easily used in shell code as well as in
-# GNU make conditionals.  Use $(MFLAGS), not $(MAKEFLAGS), since the
-# former doesn't containing the command line variable definitions, and
-# it always begins with a hyphen unless it is empty, assumptions that
-# allow a simpler implementation.
-am.make.dry-run := \
-  $(if $(findstring n,$(filter-out --%,$(MFLAGS))),true,false)
+# Shell code that determines whether the current make instance is
+# running with a given letter option (e.g., -k, -n) that takes
+# no argument.  It is either 'true' or 'false', so that it can be
+# easily used in shell code as well as in GNU make conditionals.
+# Use $(MFLAGS), not $(MAKEFLAGS), since the former doesn't contain
+# the command line variable definitions, and it always begins with
+# a hyphen unless it is empty, assumptions that allow a simpler
+# implementation.  It is worthwhile to note that, when expanded
+# from the top-level make, $(MFLAGS) doesn't contain references to
+# options that take an argument, either mandatory (e.g., '-I') or
+# optional (e.g., '-O').  This *vastly* semplifies the implementation
+# of this macro.
+am.make.is-running-with-option = \
+  $(if $(findstring $(strip $1),filter-out --%,$(MFLAGS)),true,false)
+
+# Tell whether make is running in "dry mode".
+am.make.dry-run := $(call am.make.is-running-with-option, n)
+
+# Shell code that determines whether make is running in "keep-going mode"
+# ("make -k") or not.  Useful in rules that must recursively descend into
+# subdirectories, and decide whether to stop at the first error or not.
+am.make.keep-going := $(call am.make.is-running-with-option, k)
 
 am.util.strip-first-word = $(wordlist 2,$(words $(1)),$(1))
 am.util.strip-last-word  = $(wordlist 2,$(words $(1)),dummy $(1))
diff --git a/lib/am/subdirs.mk b/lib/am/subdirs.mk
index ff7a5c1..4c9469c 100644
--- a/lib/am/subdirs.mk
+++ b/lib/am/subdirs.mk
@@ -43,13 +43,12 @@ AM_RECURSIVE_TARGETS += $(am.recurs.all-targets:-recursive=)
 $(am.recurs.all-targets): %-recursive:
 ## Using $failcom allows "-k" to keep its natural meaning when running a
 ## recursive rule.
-       @fail= failcom='exit 1'; \
-       for f in x $$MAKEFLAGS; do \
-         case $$f in \
-           *=* | --[!k]*);; \
-           *k*) failcom='fail=yes';; \
-         esac; \
-       done; \
+       @fail=; \
+       if $(am.make.keep-going); then \
+         failcom='fail=yes'; \
+       else \
+         failcom='exit 1'; \
+       fi; \
        dot_seen=no; \
 ## For distclean and maintainer-clean we make sure to use the full
 ## list of subdirectories.  We do this so that 'configure; make
diff --git a/m4/amversion.m4 b/m4/amversion.m4
index e8e5e36..708ed3e 100644
--- a/m4/amversion.m4
+++ b/m4/amversion.m4
@@ -12,10 +12,10 @@
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.13a'
+[am__api_version='1.99a'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.13a], [],
+m4_if([$1], [1.99a], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -31,7 +31,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.13a])dnl
+[AM_AUTOMAKE_VERSION([1.99a])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
diff --git a/m4/init.m4 b/m4/init.m4
index afae454..8a01b8c 100644
--- a/m4/init.m4
+++ b/m4/init.m4
@@ -22,6 +22,8 @@
 # release and drop the old call support.
 AC_DEFUN([AM_INIT_AUTOMAKE],
 [AC_PREREQ([2.65])dnl
+dnl Without this, packages using Gettext 0.18.2 might break horribly.
+AC_SUBST([mkdir_p], ['$(MKDIR_P)'])dnl
 dnl Autoconf wants to disallow AM_ names.  We explicitly allow
 dnl the ones we care about.
 m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
diff --git a/m4/tar.m4 b/m4/tar.m4
index aac6d8f..539aa3a 100644
--- a/m4/tar.m4
+++ b/m4/tar.m4
@@ -126,7 +126,7 @@ m4_if([$1], [v7],
 
   AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
   AC_MSG_RESULT([$am_cv_prog_tar_$1])])
-  
+
 AC_SUBST([am__tar])
 AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
diff --git a/maintainer/maint.mk b/maintainer/maint.mk
index ab5f176..93c6972 100644
--- a/maintainer/maint.mk
+++ b/maintainer/maint.mk
@@ -302,11 +302,14 @@ CLEANFILES += announcement
 # Program to use to fetch files.
 WGET = wget
 
+# Git repositories on Savannah.
+git-sv-host = git.savannah.gnu.org
+
 # Some repositories we sync files from.
 SV_CVS    = 'http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/'
-SV_GIT_CF = 
'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;hb=HEAD;f='
-SV_GIT_AC = 
'http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=blob_plain;hb=HEAD;f='
-SV_GIT_GL = 
'http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob_plain;hb=HEAD;f='
+SV_GIT_CF = 
'http://$(git-sv-host)/gitweb/?p=config.git;a=blob_plain;hb=HEAD;f='
+SV_GIT_AC = 
'http://$(git-sv-host)/gitweb/?p=autoconf.git;a=blob_plain;hb=HEAD;f='
+SV_GIT_GL = 
'http://$(git-sv-host)/gitweb/?p=gnulib.git;a=blob_plain;hb=HEAD;f='
 
 # Files that we fetch and which we compare against.
 # Note that the 'lib/COPYING' file must still be synced by hand.
@@ -469,3 +472,91 @@ update-copyright:
          | grep -Ev '^PLANS(/|$$)' \
          | grep -Ev "^($$excluded_re)$$" \
          | $(update_copyright_env) xargs $(srcdir)/lib/$@
+
+# --------------------------------------------------------------- #
+#  Testing on real-world packages can help us avoid regressions.  #
+# --------------------------------------------------------------- #
+
+#
+# NOTE (from Stefano Lattarini):
+# 
+# This section is mostly hacky and ad-hoc, but works for me and
+# on my system.  And while far from clean, it should help catching
+# real regressions on real world packages, which is important.
+# Ideas about how to improve this and make it more generic, portable,
+# clean, etc., are welcome.
+#
+
+# Tiny sample package.
+FEW_PACKAGES += hello
+# Smallish package using recursive make setup.
+FEW_PACKAGES += make
+# Medium-size package using non-recursive make setup.
+FEW_PACKAGES += coreutils
+
+ALL_PACKAGES = \
+  $(FEW_PACKAGES) \
+  autoconf \
+  bison \
+  grep \
+  tar \
+  diffutils \
+  smalltalk
+
+pkg-targets = check dist
+
+# Note: "ttp" stays for "Third Party Package".
+
+ttp-check ttp-check-all: do-clone = $(GIT) clone --verbose
+ttp-check: ttp-packages = $(FEW_PACKAGES)
+ttp-check-all: ttp-packages = $(ALL_PACKAGES)
+
+# Note: some packages depend on pkg-config, and its provided macros.
+ttp-check ttp-check-all: t/pkg-config-macros.log
+       @set -e; \
+       $(setup_autotools_paths); \
+       skip_all_ () \
+       { \
+         echo "***" >&2; \
+         echo "*** $@: WARNING: $$@" >&2; \
+         echo "*** $@: WARNING: some packages might fail to bootstrap" >&2; \
+         echo "***" >&2;  \
+       }; \
+       . t/pkg-config-macros.dir/get.sh || exit 1; \
+       mkdir address@hidden && cd address@hidden || exit 1; \
+       for p in $(ttp-packages); do \
+           echo; \
+           echo ========  BEGIN TTP $$p  =========; \
+           echo; \
+           set -x; \
+           $(do-clone) git://$(git-sv-host)/$$p.git || exit 1; \
+           ( \
+             cd $$p \
+               && ls -l \
+               && if test -f bootstrap; then \
+                    ./bootstrap --no-git; \
+                  else \
+                    $$AUTORECONF -fvi; \
+                  fi \
+               && ./configure \
+               && if test $$p = make; then \
+                    $(MAKE) update; \
+                  else :; fi \
+               && for t in $(pkg-targets); do \
+                    $(MAKE) $$t WERROR_CFLAGS= || exit 1; \
+                  done \
+           ) || exit 1; \
+           set +x; \
+           echo; \
+           echo ========  END TTP $$p  =========; \
+           echo; \
+        done
+ifndef keep-ttp-dir
+       rm -rf address@hidden
+endif
+
+# Alias for lazy typists.
+ttp: ttp-check
+ttp-all: ttp-check-all
+
+.PHONY: ttp ttp-check ttp-all ttp-check-all
diff --git a/t/am-prog-mkdir-p.sh b/t/am-prog-mkdir-p.sh
index ad5a810..b561bfe 100755
--- a/t/am-prog-mkdir-p.sh
+++ b/t/am-prog-mkdir-p.sh
@@ -67,4 +67,24 @@ $AUTOMAKE
 $MAKE check-local
 $MAKE distcheck
 
+# Now try using AC_PROG_MKDIR_P, but keeping the occurrences of
+# $(mkdir_p) and @address@hidden  This is to check against a regression
+# that hit us with Gettext 0.18.2.
+$MAKE maintainer-clean
+rm -rf autom4te*.cache
+
+sed 's/AM_PROG_MKDIR/AC_PROG_MKDIR/' configure.ac > t
+diff configure.ac t && fatal_ "failed to edit configure.ac"
+mv -f t configure.ac
+
+$ACLOCAL 2>stderr \
+  && $AUTOCONF -Wall -Werror 2>>stderr \
+  && test ! -s stderr \
+  || { cat stderr >&2; exit 1; }
+
+$AUTOMAKE
+./configure
+$MAKE check-local
+$MAKE distcheck
+
 :
diff --git a/t/make-dryrun.tap b/t/make-dryrun.tap
index 7e7f1aa..ff9d5eb 100755
--- a/t/make-dryrun.tap
+++ b/t/make-dryrun.tap
@@ -18,7 +18,7 @@
 
 . test-init.sh
 
-plan_ 40
+plan_ 132
 
 echo AC_OUTPUT >> configure.ac
 
@@ -60,16 +60,18 @@ check_make ()
     shift
   done
   for kind in plain recursive; do
-    r=ok
-    msg2=${msg:+"[$msg] "}"$mode, $kind"
-    $MAKE "$mode-$kind" ${1+"$@"} || r='not ok'
-    test -f from-$mode            || r='not ok'
-    test ! -e bad                 || r='not ok'
-    rm -f bad from-*              || fatal_ "cleaning up"
-    result_ "$r" "$msg2"
-    unset r msg2
+    for opts in '' '-s'  '-s -rR'; do
+      r=ok
+      msg2="${mode}, ${kind}"${msg:+" [$msg]"}${opts:+" ($opts)"}
+      $MAKE $opts "$mode-$kind" ${1+"$@"} || r='not ok'
+      test -f from-$mode                  || r='not ok'
+      test ! -e bad                       || r='not ok'
+      rm -f bad from-*                    || fatal_ "cleaning up"
+      result_ "$r" "$msg2"
+      unset r msg2
+    done
   done
-  unset msg kind mode condition
+  unset msg opts mode
 }
 
 # ----------------------------------------------------------------------
@@ -127,7 +129,9 @@ check_metachars MYFLAGS='-knf2\ n\ \\n'
 check_metachars MYFLAGS="(&) | ; \" \` '"
 check_metachars MYFLAGS=" ' # ' "
 check_metachars MYFLAGS='$(foo)'
+check_metachars MYFLAGS='$(foo -n)'
 check_metachars MYFLAGS='`touch bad`'
+check_metachars MYFLAGS='`touch --dry-run bad`'
 
 # ----------------------------------------------------------------------
 
diff --git a/t/make-dryrun.tap b/t/make-keepgoing.tap
similarity index 53%
copy from t/make-dryrun.tap
copy to t/make-keepgoing.tap
index 7e7f1aa..af6fae5 100755
--- a/t/make-dryrun.tap
+++ b/t/make-keepgoing.tap
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2012-2013 Free Software Foundation, Inc.
+# Copyright (C) 2013 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
@@ -14,11 +14,11 @@
 # 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 $(am.make.dry-run) works as expected.
+# Check that $(am.make.keep-going) works as expected.
 
 . test-init.sh
 
-plan_ 40
+plan_ 120
 
 echo AC_OUTPUT >> configure.ac
 
@@ -30,24 +30,22 @@ $(warning MAKEFLAGS[env]  => '$(shell printf "%s\\n" 
"$$MAKEFLAGS")')
 $(warning MFLAGS[env]     => '$(shell printf "%s\\n" "$$MFLAGS")')
 
 all:
-       @echo "Target '$@' should never run" >&2; exit 1;
-
-run-plain:
-       $(am.make.dry-run) && exit 1; echo ok > from-run
-run-recursive:
-       $(MAKE) run-plain
-dry-plain:
-       +$(am.make.dry-run) || exit 1; echo ok > from-dry
-dry-recursive:
-       $(MAKE) dry-plain
+       @echo 'Default target $@ should not be called'>&2; exit 1;
+k-y-plain:
+       $(am.make.keep-going)
+k-n-plain:
+       $(am.make.keep-going) && exit 1; exit 0
+k-y-recursive:
+       $(MAKE) k-y-plain
+k-n-recursive:
+       $(MAKE) k-n-plain
 END
 
 check_make ()
 {
   msg= mode=
   case $1 in
-    --dry) mode=dry;;
-    --run) mode=run;;
+    k-[yn]) mode=$1;;
     *) fatal_ "check_run: invalid usage";;
   esac
   shift
@@ -60,16 +58,15 @@ check_make ()
     shift
   done
   for kind in plain recursive; do
-    r=ok
-    msg2=${msg:+"[$msg] "}"$mode, $kind"
-    $MAKE "$mode-$kind" ${1+"$@"} || r='not ok'
-    test -f from-$mode            || r='not ok'
-    test ! -e bad                 || r='not ok'
-    rm -f bad from-*              || fatal_ "cleaning up"
-    result_ "$r" "$msg2"
-    unset r msg2
+    for opts in '' '-s'  '-s -r'; do
+      r=ok
+      msg2="${mode}, ${kind}"${msg:+" [$msg]"}${opts:+" ($opts)"}
+      $MAKE $opts "$mode-$kind" ${1+"$@"} || r='not ok'
+      result_ "$r" "$msg2"
+      unset r msg2
+    done
   done
-  unset msg kind mode condition
+  unset r msg msg2 opts mode
 }
 
 # ----------------------------------------------------------------------
@@ -81,37 +78,34 @@ $AUTOMAKE   || fatal_ "automake failed"
 
 # ----------------------------------------------------------------------
 
-check_make --run
-check_make --run -k
+check_make k-n
 
-# Test against a known regression.  This was especially heinous, since
-# make running in normal mode was sometimes mistaken for make running
-# in dry mode.
-check_make --run TESTS="n1.test n2.test"
-check_make --run TESTS="n1 n2" MAKEFLAGS="TESTS='n1 n2'"
-check_make --run TESTS="n1 n2" MAKEFLAGS='TESTS="n1 n2"'
-check_make --run FOOFLAGS="-n -n -knf2 n --none -n"
-check_make --run MYFLAGS="-n --dryrun -n --dry-run -n"
+# Test against a possible regressions similar to those that affected
+# detection of dry mode ("make -n").
+check_make k-n TESTS="k.test k2.test"
+check_make k-n TESTS="k1 k k2" AM_MAKEFLAGS="TESTS='k1 k2'"
+check_make k-n TESTS="k1 k k2" AM_MAKEFLAGS='TESTS="k1 k k2"'
+check_make k-n FOOFLAGS="-k -k -nkf2 k -ks --keep -k"
+check_make k-n MYFLAGS="-k --keepgoing -k --keep-run -k"
 
 # ----------------------------------------------------------------------
 
-check_make --dry -- -n
-check_make --dry -- --dry-run --keep-going
-check_make --dry -- --no-print-directory --dry-run -k
+check_make k-y -k
+check_make k-y --keep-going
 
 # ----------------------------------------------------------------------
 
-# Automake bug#13760: the "n" in "none" used to confound am__make_dryrun
-# into thinking the '-n' option had been passed.
+# Related to automake bug#12554: the "k" in "kool" used to confound
+# am.make.keep-going into thinking the '-k' option had been passed.
 
-pr='bug#13760'
+pr='bug#12554'
 
-mkdir none dry-run
-check_make --run -M "$pr" -- -I none
-check_make --run -M "$pr" -- -I none --include dry-run 
-check_make --dry -M "$pr" -- -I none -n
-check_make --dry -M "$pr" -- --dry-run -I none --include dry-run
-rmdir none dry-run
+mkdir kool
+check_make k-n -M "$pr" -I kool
+check_make k-n -M "$pr" -I kool --include keep-going
+check_make k-y -M "$pr" -I kool -k
+check_make k-y -M "$pr" --keep-going -I kool --include keep-going
+rmdir kool
 
 # ----------------------------------------------------------------------
 
@@ -119,15 +113,17 @@ rmdir none dry-run
 
 check_metachars ()
 {
-  check_make --run -M "metachars" "$@"
+  check_make k-n -M "metachars" "$@"
 }
 
-check_metachars MYFLAGS="-n \"n\" '-n' --none -n"
-check_metachars MYFLAGS='-knf2\ n\ \\n'
+check_metachars MYFLAGS="-k \"k\" '-k' --keep-going -k"
+check_metachars MYFLAGS='-knf2\ k\ \\k'
 check_metachars MYFLAGS="(&) | ; \" \` '"
 check_metachars MYFLAGS=" ' # ' "
 check_metachars MYFLAGS='$(foo)'
+check_metachars MYFLAGS='$(foo -k)'
 check_metachars MYFLAGS='`touch bad`'
+check_metachars MYFLAGS='`touch --keep-going bad`'
 
 # ----------------------------------------------------------------------
 
diff --git a/t/preproc-c-compile.sh b/t/preproc-c-compile.sh
index 79e9325..7c398a8 100755
--- a/t/preproc-c-compile.sh
+++ b/t/preproc-c-compile.sh
@@ -68,7 +68,7 @@ bin_PROGRAMS =
 include $(top_srcdir)/zot/local.mk
 
 test:
-       test '$(bin_PROGRAMS)' == mumble$(EXEEXT)
+       test '$(bin_PROGRAMS)' = mumble$(EXEEXT)
        test '$(mumble_SOURCES)' = one.c
 check-local: test
 END
@@ -111,7 +111,7 @@ fi
 # GNU install refuses to override a just-installed file; since we
 # have plenty of 'mumble' dummy programs to install in the same
 # location, such "overridden installations" are not a problem for
-# us, so just force the use the 'install-sh' script
+# us; so just force the use the 'install-sh' script.
 ac_cv_path_install=$(pwd)/install-sh; export ac_cv_path_install
 $MAKE distcheck
 
diff --git a/t/subdir-keep-going-pr12554.sh b/t/subdir-keep-going-pr12554.sh
new file mode 100755
index 0000000..03d5cb0
--- /dev/null
+++ b/t/subdir-keep-going-pr12554.sh
@@ -0,0 +1,70 @@
+#! /bin/sh
+# Copyright (C) 2013 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 the Automake-generated recursive rules are resilient against
+# false positives in deciding whether make is running with the '-k'
+# option, and thus whether a failure into one of the $(SUBDIRS) should
+# still prevent recursion in the following $(SUBDIRS) entries.  See
+# automake bug#12544.
+
+. test-init.sh
+
+echo nil: | $MAKE -I . -f - || skip_ "$MAKE doesn't support the -I option"
+
+cat >> configure.ac <<'END'
+AC_CONFIG_FILES([sub1/Makefile sub2/Makefile])
+AC_OUTPUT
+END
+
+mkdir k ./--keep-going sub1 sub2
+
+cat > Makefile.am <<'END'
+SUBDIRS = sub1 sub2
+END
+
+cat > sub1/Makefile.am <<'END'
+all-local:
+       touch ko
+       false
+END
+cat > sub2/Makefile.am <<'END'
+all-local:
+       test -f ../sub1/ko
+       touch ok
+END
+
+$ACLOCAL
+$AUTOCONF
+$AUTOMAKE
+./configure
+
+st=0
+$MAKE -I k -I --keep-going \
+  TESTS='k --keep-going -k' AM_MAKEFLAGS="TESTS='k --keep-going -k'" \
+  || st=$?
+# Don't trust the exit status of "make -k" for non-GNU make.
+if using_gmake; then
+  test $st -gt 0 || exit 1
+fi
+test ! -r sub2/ok
+
+# Sanity check.
+st=0; $MAKE -k || st=$?
+if { using_gmake && test $st -eq 0; } || test ! -f sub2/ok; then
+  fatal_ '"make -k" not working as expected'
+fi
+
+:


hooks/post-receive
-- 
GNU Automake



reply via email to

[Prev in Thread] Current Thread [Next in Thread]