summaryrefslogtreecommitdiff
path: root/maintainer
diff options
context:
space:
mode:
authorStefano Lattarini <stefano.lattarini@gmail.com>2013-05-04 11:50:10 +0200
committerStefano Lattarini <stefano.lattarini@gmail.com>2013-05-04 11:50:10 +0200
commit2d3a2e36b595cd740894823d060e31c6c483f569 (patch)
treeba74fa042ecc41e025c2d37725b222b4db790e73 /maintainer
parente5e3a629e01c7642a46217817c32cfa86e9bd708 (diff)
parentf5f75eef28a32493258047eb3060478395a42120 (diff)
downloadautomake-2d3a2e36b595cd740894823d060e31c6c483f569.tar.gz
Merge branch 'branch-1.13.2' into maint
* 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)
Diffstat (limited to 'maintainer')
-rw-r--r--maintainer/maint.mk97
1 files changed, 94 insertions, 3 deletions
diff --git a/maintainer/maint.mk b/maintainer/maint.mk
index 1ea10a2f2..56c52beef 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.
@@ -472,3 +475,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 $@.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