Hello,

On Mon, Sep 26, 2005 at 12:53:07PM -0400, ken koehler wrote:
> I encountered this failure while building Linux From Scratch 6.1 on an 
> athlon64 [...]

> Failed tests:
>   90: semantics.at:425   AC_C_BIGENDIAN
>       cross

first, thanks to Ken the bug report and for his support.

When I unpacked the tarball which Ken mailed me, I saw the reason:
the system was too quick, and autoheader, called without --force,
thought that the previous autom4te.cache/* files were up-to-date.

So this was a bug in the testsuite, not in the Autoconf itself.

The fix is to add --force to the autoheader call.

Actually, I think there are more places where this problem can appear.
I added --force to AC_CHECK_AUTOCONF; thus all autoconf calls
are with --force.

I committed the patch, as attached to this mail.

Please note that if "autoconf --force" regenerates autom4te.cache/*, then
the subsequent autoheader works: autoheader always creates config.hin,
but the problem was only with autom4te.

Couldn't autom4te also compute some checksums of the input files?

(If Bruno is here, he would suggest that the autom4te caching should be
swiched off by default, right?)

Have a nice day,
        Stepan
2005-09-27  Stepan Kasal  <[EMAIL PROTECTED]>

        * tests/semantics.at (AC_C_BIGENDIAN): Pass --force to autoheader,
          in case the computer is too quick.  Double quote the configure.ac
          snippets.

        * tests/local.at (AT_CHECK_AUTOCONF): Always pass --force to prevent
          problems if the testsuite were running too fast.

Index: tests/local.at
===================================================================
RCS file: /cvsroot/autoconf/autoconf/tests/local.at,v
retrieving revision 1.21
diff -u -r1.21 local.at
--- tests/local.at      7 Jul 2005 23:56:25 -0000       1.21
+++ tests/local.at      27 Sep 2005 15:45:32 -0000
@@ -200,8 +200,10 @@
 
 # AT_CHECK_AUTOCONF(ARGS, [EXIT-STATUS = 0], STDOUT, STDERR)
 # ----------------------------------------------------------
+# We always use "--force", to prevent problems with timestamps if the testsuite
+# were running too fast.
 m4_define([AT_CHECK_AUTOCONF],
-[AT_CHECK([autoconf $1], [$2], [$3], [$4])
+[AT_CHECK([autoconf --force $1], [$2], [$3], [$4])
 if test -s configure; then
   AT_CHECK_SHELL_SYNTAX(configure)
 fi
Index: tests/semantics.at
===================================================================
RCS file: /cvsroot/autoconf/autoconf/tests/semantics.at,v
retrieving revision 1.51
diff -u -r1.51 semantics.at
--- tests/semantics.at  6 Sep 2005 15:34:06 -0000       1.51
+++ tests/semantics.at  27 Sep 2005 15:45:33 -0000
@@ -468,13 +468,13 @@
 # cross-compiling or not.
 
 _AT_CHECK_AC_MACRO(
-  [AC_C_BIGENDIAN([ac_endian=big],[ac_endian=little],[ac_endian=unknown])
+  [[AC_C_BIGENDIAN([ac_endian=big],[ac_endian=little],[ac_endian=unknown])
    echo $ac_endian > at-endian
-])
+]])
 
 rm -f config.hin  # So that next run of autoheader is quiet.
 _AT_CHECK_AC_MACRO(
-  [cross_compiling=yes
+  [[cross_compiling=yes
    AC_C_BIGENDIAN([ac_endian=big],[ac_endian=little],[ac_endian=unknown])
    ac_prevendian=`cat at-endian`
    # Check that we have found the same result as in the previous run
@@ -484,11 +484,12 @@
    if test $ac_endian != $ac_prevendian && test $ac_endian != unknown; then
      AC_MSG_ERROR([unexpected endianness: first run found '$ac_prevendian' but 
second run found '$ac_endian'])
    fi
-])
+]])
 
 # Make sure AC_C_BIGENDIAN with no argument will define WORDS_BIGENDIAN
-AT_CONFIGURE_AC([AC_C_BIGENDIAN])
-AT_CHECK_AUTOHEADER
+AT_CONFIGURE_AC([[AC_C_BIGENDIAN]])
+# --force is necessary, the computer might be too fast.
+AT_CHECK_AUTOHEADER([--force])
 AT_CHECK([grep WORDS_BIGENDIAN config.hin], [], [ignore])
 
 AT_CLEANUP(at-endian)

Reply via email to