Subject: bug#10848: automake-1.11.3 on OSX Lion with llvm-gcc - 1 of 829 tests failed

From: Stefano Lattarini <[email-masked]>
Date: Mon, 20 Feb 2012 14:24:03 +0100

Thanks for the report.

On 02/20/2012 01:09 AM, Panther Martin wrote:
>  
> Hi I'm reporting 1 test-suite failure on 64bit OSX Lion 10.7.3 using
> 
>   llvm-gcc-4.2.1 (5658)
>   autoconf-2.68
>   automake-1.11.3
>   gawk-4.0.0
> 
> FAIL: conffile-leading-dot.test (exit: 1)
> =========================================
>
> /private/tmp/homebrew-automake-1.11.3-vk9X/automake-1.11.3/tests:...
> conffile-leading-dot: running make --version -v | grep GNU
> GNU Make 3.81
> === Running test ./conffile-leading-dot.test
> ++ pwd
> /private/tmp/homebrew-automake-1.11.3-vk9X/automake-1.11.3/tests/conffile-leading-dot.dir
> + set -e
> + cat
> + echo foo = barbarbar
> + touch a.in b.in c.in
> + aclocal-1.11 -Werror
> + AUTOMAKE_fails -Wnone -Wunsupported
> + AUTOMAKE_run 1 -Wnone -Wunsupported
> + expected_exitcode=1
> + shift
> + exitcode=0
> + automake-1.11 --foreign -Werror -Wall -Wnone -Wunsupported
> + exitcode=1
> + cat stderr
> configure.in:3: omit leading './' from config file names such as './Makefile';
> configure.in:3: remake rules might be subtly broken otherwise
> configure.in:4: omit leading './' from config file names such as './foo';
> configure.in:4: remake rules might be subtly broken otherwise
> + cat stdout
> + test 1 = 1
> + grep '^configure\.in:3:.*'\''\./Makefile'\''' stderr
> configure.in:3: omit leading './' from config file names such as './Makefile';
> + grep '^configure\.in:3:.* omit leading '\''\./'\''' stderr
> configure.in:3: omit leading './' from config file names such as './Makefile';
> + grep '^configure\.in:3:.*remake rules might be subtly broken' stderr
> configure.in:3: remake rules might be subtly broken otherwise
> + grep '^configure\.in:4:.*'\''\./foo'\''' stderr
> configure.in:4: omit leading './' from config file names such as './foo';
> + grep '^configure\.in:4:.* omit leading '\''\./'\''' stderr
> configure.in:4: omit leading './' from config file names such as './foo';
> + grep '^configure\.in:4:.*remake rules might be subtly broken' stderr
> configure.in:4: remake rules might be subtly broken otherwise
> + autoconf -B /no/such/dir
> + automake-1.11 --foreign -Werror -Wall -Wall -Wno-unsupported
> + ./configure
> checking for a BSD-compatible install... /usr/bin/install -c
> checking whether build environment is sane... yes
> checking for a thread-safe mkdir -p... ./install-sh -c -d
> checking for gawk... gawk
> checking whether make sets $(MAKE)... yes
> configure: creating ./config.status
> config.status: creating ./Makefile
> config.status: creating ./foo
> + make
> make: Nothing to be done for `all'.
> + grep barbarbar Makefile
> foo = barbarbar
> + echo foo = bazbazbaz
> + make
>  cd . && /bin/sh /.../missing --run automake-1.11 --foreign ./Makefile
> make: Nothing to be done for `all'.
>
The failure is here.  I suspect this might be yet another timestamp issue.
Could you please answer the following questions?

  1. Is your system quite fast? (I'd assume yes, given the contents of
     config.log)

  2. Does the directory you are building Automake into have sub-second
     timestamp resolution?

  3. Does the reported failure happen consistently, or is it subject to
     a race?

If the answers to the questions above are respectively "yes", "no" and "yes
it's a racy failure", then I think the attached patch might fix the issue.

Regards,
  Stefano
>From db73aeeae958c122b551bd36066997177cc4653f Mon Sep 17 00:00:00 2001
Message-Id: <db73aeeae[email-masked]>
From: Stefano Lattarini <[email-masked]>
Date: Mon, 20 Feb 2012 14:04:46 +0100
Subject: [PATCH] tests: fix a timestamp issue, and other minor buglets

Reported by Panther Martin in automake bug#10848.

* tests/conffile-leading-dot.test: Add a proper '$sleep' invocation,
to avoid spurious failures on fast systems without sub-second
timestamp resolutions.  Add other minor related and unrelated
improvements and fixlets since we are at it.
---
 THANKS                          |    1 +
 tests/conffile-leading-dot.test |   15 ++++++++-------
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/THANKS b/THANKS
index 3d1f75a..36f8f4b 100644
--- a/THANKS
+++ b/THANKS
@@ -267,6 +267,7 @@ Olivier Louchart-Fletcher [email-masked]
 Olly Betts		[email-masked]
 Oren Ben-Kiki		[email-masked]
 Owen Taylor		[email-masked]
+Panther Martin		[email-masked]
 Patrick Welche		[email-masked]
 Patrik Weiskircher	[email-masked]
 Paul Berrevoets		[email-masked]
diff --git a/tests/conffile-leading-dot.test b/tests/conffile-leading-dot.test
index bfe81b5..732e10f 100755
--- a/tests/conffile-leading-dot.test
+++ b/tests/conffile-leading-dot.test
@@ -29,9 +29,7 @@ AC_CONFIG_FILES([./foo:a.in:b.in:c.in])
 AC_OUTPUT
 END
 
-echo foo = barbarbar > Makefile.am
-
-touch a.in b.in c.in
+touch a.in b.in c.in Makefile.am
 
 $ACLOCAL
 
@@ -44,16 +42,19 @@ grep "^configure\.in:4:.* omit leading '\\./'" stderr
 grep "^configure\.in:4:.*remake rules might be subtly broken" stderr
 
 # Check that our warning was actually justified.
+sed 's/^AM_INIT_AUTOMAKE/&([-Wall -Wno-unsupported])/' <configure.in >t
+mv -f t configure.in
+rm -rf autom4te*.cache
+$ACLOCAL
 $AUTOCONF
 $AUTOMAKE -Wall -Wno-unsupported
 ./configure
 $MAKE
-grep barbarbar Makefile
-# No need to sleep here, configure did that for us already.
-echo foo = bazbazbaz > Makefile.am
+$sleep
+touch Makefile.am
 # Check that remake rules do truly break -- otherwise automake is
 # giving a bogus warning.
-$MAKE 2>stderr && { cat stderr >&2 Exit 1; }
+$MAKE 2>stderr && { cat stderr >&2; Exit 1; }
 cat stderr >&2
 grep "config\\.status:.*invalid argument.*Makefile" stderr
 
-- 
1.7.9