automake-patches
[Top][All Lists]
Advanced

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

Fix remake rule-induced test failures with HP-UX make.


From: Ralf Wildenhues
Subject: Fix remake rule-induced test failures with HP-UX make.
Date: Sat, 15 Jan 2011 11:31:55 +0100
User-agent: Mutt/1.5.20 (2010-08-04)

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?  If you prefer, I can split the typo fixes in a separate
patch.

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
+
+  # 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/='




reply via email to

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