On Saturday 15 January 2011, Ralf Wildenhues wrote: > Quoting parts of: > http://autobuild.josefsson.org/automake/log-201101150749395803000.txt > > | FAIL: colon6.test (exit: 1) > | =========================== > | > | > /tmp/am/build-hppa2.0w-hp-hpux11.23/tests:/tmp/local/hppa2.0w-hp-hpux11.23/bin:/tmp/bin:/opt/aCC/bin:/opt/ansic/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/bin/X11:/usr/ccs/bin:/usr/contrib/bin/X11:/usr/vue/bin:/opt/imake/bin > | + set -e > | + pwd > | /tmp/am/build-hppa2.0w-hp-hpux11.23/tests/colon6.dir > | + cat > | + 1> configure.in 0<< > | AC_INIT([colon6], [1.0]) > | AM_INIT_AUTOMAKE > | # With this, version.good should depend from version.gin, while > | # Makefile should not depend from either of them. > | AC_CONFIG_FILES([demo/Makefile demo/version.good:demo/version.gin]) > | AC_OUTPUT > | + mkdir demo > | + : > | + 1> demo/version.gin > | + : > | + 1> demo/Makefile.am > | + aclocal-1.11a -Werror > | + automake-1.11a --foreign -Werror -Wall > | + /bin/grep -E Makefile:.*(demo|version) demo/Makefile.in > | + grep version\.good:.*version\.gin demo/Makefile.in > | version.good: $(top_builddir)/config.status $(srcdir)/version.gin > | + autoconf > | + : > | + srcdir=.. > | + mkdir build > | + cd build > | + ../configure > | checking for a BSD-compatible install... ../install-sh -c > | checking whether build environment is sane... yes > | checking for a thread-safe mkdir -p... ../install-sh -c -d > | checking for gawk... no > | checking for mawk... no > | checking for nawk... no > | checking for awk... awk > | checking whether make sets $(MAKE)... yes > | checking that generated files are newer than configure... done > | configure: creating ./config.status > | config.status: creating demo/Makefile > | config.status: creating demo/version.good > | + test -f demo/version.good > | + test ! -s demo/version.good > | + cd demo > | + sleep 2 > | + echo Rebuilt (srcdir=..) > | + 1> ../../demo/version.gin > | + make version.good > | No suffix list. > | cd .. && /bin/sh ./config.status demo/version.good > | config.status: creating demo/version.good > | + /bin/grep -F Rebuilt (srcdir=..) version.good > | Rebuilt (srcdir=..) > | + rm -f version.good > | + make Makefile > | No suffix list. > | Make: Don't know how to make am--refresh. Stop. > | *** Error exit code 1 > | > | Stop. > | + exit_status=1 > | + set +e > | + cd /tmp/am/build-hppa2.0w-hp-hpux11.23/tests > | + test 0 != 0 > | + echo colon6: exit 1 > | colon6: exit 1 > | + exit 1 > > [...] > > | > /tmp/am/build-hppa2.0w-hp-hpux11.23/tests:/tmp/local/hppa2.0w-hp-hpux11.23/bin:/tmp/bin:/opt/aCC/bin:/opt/ansic/bin:/bin:/usr/bin:/sbin:/usr/sbin:/usr/bin/X11:/usr/ccs/bin:/usr/contrib/bin/X11:/usr/vue/bin:/opt/imake/bin > | + set -e > | + pwd > | /tmp/am/build-hppa2.0w-hp-hpux11.23/tests/remake1a.dir > | + fingerprint==/FiNgErPrInT/= > | + cat > | + 1> configure.in 0<< > | AC_INIT([remake1a], [1.0]) > | AM_INIT_AUTOMAKE > | AC_CONFIG_FILES([sub/Makefile]) > | AC_OUTPUT > | + mkdir sub > | + : > | + 1> sub/Makefile.am > | + aclocal-1.11a -Werror > | + autoconf > | + automake-1.11a --foreign -Werror -Wall > | + ./configure > | checking for a BSD-compatible install... ./install-sh -c > | checking whether build environment is sane... yes > | checking for a thread-safe mkdir -p... ./install-sh -c -d > | checking for gawk... no > | checking for mawk... no > | checking for nawk... no > | checking for awk... awk > | checking whether make sets $(MAKE)... yes > | checking that generated files are newer than configure... done > | configure: creating ./config.status > | config.status: creating sub/Makefile > | + sleep 2 > | + echo # =/FiNgErPrInT/= > | + 1> sub/Makefile.am > | + cd sub > | + make Makefile > | No suffix list. > | cd .. && /bin/sh > /tmp/am/build-hppa2.0w-hp-hpux11.23/tests/remake1a.dir/missing --run > automake-1.11a --foreign sub/Makefile > | Make: Don't know how to make am--refresh. Stop. > | *** Error exit code 1 > > > I'm not quite sure why HP-UX make seems to trigger rebuild rules for > prerequisites that have the exact time stamps as targets (in this case, > config.status and subdir Makefile, but I also tried with a reduced > makefile), but it is not Posix conforming. Working around it properly > would probably require sleeping inside config.status (an obvious no-go), > and in practice it should not do more harm than updating some rules more > than necessary. > > How about the patch below to not let this cause spurious testsuite > failures? > Seems (almost) good. Just a couple of minor nits below ...
Oh, and please remember ot apply the patch to the maint-based temporary branch 'tests-colon-extend'. FYI, last commit there should be `a46eda3752054eccd208f630611fefe0308eafc1'. > If you prefer, I can split the typo fixes in a separate patch. > Well, I usually prefer having cosmetic/typofixing changes separated from bugfixes -- but not to the point of requiring you to rewrite this patch ;-) So, do whatever you deem more appropriate. > Thanks, > Ralf > > Fix remake rule-induced test failures with HP-UX make. > > * tests/colon6.test: Update timestamp of subdir Makefile, to > ensure we do not spuriously invoke the nonexistent toplevel > am--refresh rule. Fix comment typos. > * tests/remake1a.test: Require GNU make. > > diff --git a/tests/colon6.test b/tests/colon6.test > index bf5cf2d..984f13e 100755 > --- a/tests/colon6.test > +++ b/tests/colon6.test > @@ -22,8 +22,8 @@ > cat > configure.in <<END > AC_INIT([$me], [1.0]) > AM_INIT_AUTOMAKE > -# With this, version.good should depend from version.gin, while > -# Makefile should not depend from either of them. > +# With this, version.good should depend on version.gin, while > +# Makefile should not depend on either of them. > AC_CONFIG_FILES([demo/Makefile demo/version.good:demo/version.gin]) > AC_OUTPUT > END > @@ -35,7 +35,7 @@ mkdir demo > $ACLOCAL > $AUTOMAKE > > -# These are older "grepping check", kept mostly for backward-copmatibility. > +# These are older "grepping checks", kept mostly for backward-compatibility. > # They might (unlikely, but possibly) require updating when automake > # internals are changed. Just relax or remove if they become too fragile. > $EGREP 'Makefile:.*(demo|version)' demo/Makefile.in && Exit 1 > @@ -60,27 +60,31 @@ for vpath in : false; do > > cd demo > > - # version.good should depend from version.gin > $sleep > + # Avoid relying on non-existent toplevel am--refresh rule, > + # presumably due to spurious timestamp issues. > + touch Makefile > The comment seems too terse to me; what about this (stolen from your explanation above)? # Some make implementations (e.g., HP-UX make) seems to trigger rebuild # rules for prerequisites that have the exact time stamps as targets (in # this case, config.status and subdir Makefile). # Since our setup here lacks a top-level Makefile, and thus the toplevel # am--refresh rule, the rebuild rules are doomed to fail. # We thus touch the Makefile to avoid triggering them. > + > + # version.good should depend on version.gin. > echo "Rebuilt (srcdir=$srcdir)" > ../$srcdir/demo/version.gin > $MAKE version.good > $FGREP "Rebuilt (srcdir=$srcdir)" version.good > > - # Makefile should not depend from version.good. > + # Makefile should not depend on version.good. > rm -f version.good > $MAKE Makefile > test ! -r version.good > > - # version.good should be rebuilt from version.gin > + # version.good should be rebuilt from version.gin. > $MAKE version.good > test -f version.good > > - # Makefile should not depend from version.gin. > + # Makefile should not depend on version.gin. > rm -f ../$srcdir/demo/version.gin > $MAKE Makefile > test ! -r ../$srcdir/demo/version.gin # sanity check > > - # version.good should depend from version.gin > + # version.good should depend on version.gin. > rm -f version.good > $MAKE version.good >output 2>&1 && { cat output; Exit 1; } > cat output > diff --git a/tests/remake1a.test b/tests/remake1a.test > index fc5ba6d..a794a05 100755 > --- a/tests/remake1a.test > +++ b/tests/remake1a.test > @@ -17,6 +17,7 @@ > # Make sure remaking rules in subdir are correctly generated. > # See also sister "grepping" test `remake.test'. > > +required=GNUmake > . ./defs || Exit 1 > > fingerprint='=/FiNgErPrInT/=' > [ OK, I'm going to be really nitpicking here ... ] If you require GNU make in this test, IMHO you can as well change the line: $MAKE Makefile below with simply: $MAKE On the other hand, the test is perfectly correct also as it stands, so you decide if the suggested change is worth the additional noise. Thanks, Stefano