From: Nick Bowler Date: Sun, 26 Apr 2015 05:49:28 +0000 (-0400) Subject: Ensure that all testsuite dependencies are distributed. X-Git-Url: http://git.draconx.ca/gitweb/dxcommon.git/commitdiff_plain/777cdf8590abbf6178db5ddcdd8427741c378b05 Ensure that all testsuite dependencies are distributed. Failing to distribute all testsuite dependencies will cause failures if the testsuite is modified. Unfortunately, this is not caught by distcheck because the testsuite is not rebuilt normally. Therefore, it is desirable for the dependencies to be picked up automatically to reduce the possibility of omission. We could check the M4 traces in a dist-hook, but then Autotest becomes a dependency for "make dist", even when the testsuite is not modified. Instead, distribute a record of all dependencies, and use that to implement the dist-hook. --- diff --git a/.gitignore b/.gitignore index 02e9985..621f62f 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ /compile /testsuite.dir /testsuite.log +/testsuite.deps /testsuite /package.m4 /atconfig diff --git a/snippet/autotest.mk b/snippet/autotest.mk index 04643f1..293a858 100644 --- a/snippet/autotest.mk +++ b/snippet/autotest.mk @@ -46,15 +46,16 @@ package.m4: ; } >$@.tmp $(AM_V_at) mv -f $@.tmp $@ -testsuite: testsuite.at package.m4 -if !HAVE_AUTOTEST - @:; { \ +DX_AUTOTEST_ERROR = @:; { \ printf 'ERROR: Autotest was not available at configure time.\n'; \ printf 'You should only need it if you modified the test suite.\n'; \ printf 'Autotest is part of autom4te, included in the GNU\n'; \ printf 'Autoconf package: \n'; \ - } 1>&2 - @false + } 1>&2; false + +testsuite: testsuite.at package.m4 +if !HAVE_AUTOTEST + $(DX_AUTOTEST_ERROR) endif $(AM_V_GEN) $(AUTOTEST) $(ATFLAGS) -p m4_include -o $@.tmp testsuite.at $(AM_V_at) :; { \ @@ -63,7 +64,25 @@ endif } >$(DEPDIR)/$(@F).P $(AM_V_at) mv -f $@.tmp $@ -EXTRA_DIST += testsuite testsuite.at package.m4 +testsuite.deps: testsuite +if !HAVE_AUTOTEST + $(DX_AUTOTEST_ERROR) +endif + $(AM_V_GEN) $(AUTOTEST) $(ATFLAGS) -t m4_include:'$$1' -o $@.tmp \ + testsuite.at + $(AM_V_at) mv -f $@.tmp $@ + +dist-hook: dist-autotest-deps +dist-autotest-deps: testsuite.deps + exec 3<$?; while read f <&3; do \ + dir=`expr "$$f" : '\(.*\)/'`; \ + $(MKDIR_P) "$(distdir)/$$dir" && \ + chmod u+w "$(distdir)/$$dir" && \ + cp -p "$(srcdir)/$$f" "$(distdir)/$$f" || exit; \ + done +.PHONY: dist-autotest-deps + +EXTRA_DIST += testsuite testsuite.at testsuite.deps package.m4 DISTCLEANFILES += atconfig $(DEPDIR)/testsuite.P @AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/testsuite.P@am__quote@