Merge branch 'branch-1.13.2' into maint
authorStefano Lattarini <stefano.lattarini@gmail.com>
Sat, 4 May 2013 09:50:10 +0000 (11:50 +0200)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Sat, 4 May 2013 09:50:10 +0000 (11:50 +0200)
* branch-1.13.2:
  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"
  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)

1  2 
Makefile.am
maintainer/maint.mk
t/cxx-lt-demo.sh
t/list-of-tests.mk

diff --cc Makefile.am
@@@ -69,9 -69,15 +69,14 @@@ EXTRA_DIST += 
    $(AUTOMAKESOURCES) \
    bootstrap.sh \
    GNUmakefile \
 -  maint.mk \
 -  syntax-checks.mk \
 -  HACKING
 +  HACKING \
 +  PLANS
  
+ # 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.
@@@ -469,6 -466,93 +472,94 @@@ update-copyright
        ) | sed -e '$$!s,$$,|,' | tr -d '\012\015'`; \
        $(GIT) ls-files \
          | grep -Ev '(^|/)README$$' \
 +        | 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 $@.d && cd $@.d || 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 $@.d
+ endif
+ # Alias for lazy typists.
+ ttp: ttp-check
+ ttp-all: ttp-check-all
+ .PHONY: ttp ttp-check ttp-all ttp-check-all
Simple merge
Simple merge