Subject: Re: bug#12184: GNU Automake 1.12.2 - 4 tests FAIL on Solaris 10 Sparc

From: Stefano Lattarini <[email-masked]>
Date: Sun, 12 Aug 2012 21:53:08 +0200

On 08/12/2012 08:59 PM, Dennis Clarke wrote:
> 
> Wow .. things just got a LOT worse here.  After nearly 7 hours : 
> 
> ============================================================================
> Testsuite summary for GNU Automake 1.12.2
> ============================================================================
> # TOTAL: 2730
> # PASS:  2445
> # SKIP:  217
> # XFAIL: 50
> # FAIL:  17
> # XPASS: 0
> # ERROR: 1
> 
> This is just, staggering. 
> 
> I am really trying to figure out what could be in the environment that 
> is the cause of these multitude of failures. 
> 

My guess is that your grep (in /usr/local/bin/ggrep ) is busted.  First clue:

    FAIL: t/confsub
    ===============
    ...
    + /usr/local/bin/ggrep -F -v 'cd $(top_builddir)'
    Binary file subdir/Makefile.in matches

Huh?  How on earth is grep thinking that Automake has generated a binary file?

Another example:

    FAIL: t/parallel-tests-fork-bomb
    ================================
    ...
    + env TESTS=test-suite.test make -e check
    + st=1
    + cat output
    make  check-TESTS
    make: Warning: Infinite loop: Target `test-suite.log' depends on itself
    Current working directory /usr/local/build/automake-1.12.2_sparcv9_001/t/parallel-tests-fork-bomb.dir
     mkdir rec-0.d
    make: Warning: Infinite loop: Target `test-suite.log' depends on itself
    Current working directory /usr/local/build/automake-1.12.2_sparcv9_001/t/parallel-tests-fork-bomb.dir
     mkdir rec-0.d
    mkdir: Failed to make directory "rec-0.d"; File exists
     mkdir rec-1.d
    fatal: making test-suite.log: possible infinite recursion detected
    fatal: making test-suite.log: failed to create test-suite.trs
    fatal: making test-suite.log: failed to create test-suite.log
    *** Error code 1
    ...

and so far so good, because the setup in that test is explicitly meant
to elicit such error messages from make; but then we have:

    ...
    + /usr/local/bin/ggrep -E -i 'depend.* on itself' output \
       | /usr/local/bin/ggrep -F test-suite.log
    + continue
    + test no = yes
    + _am_exit 1

which is just wrong, because we've seen that the file 'output' contains
the string "Infinite loop: Target `test-suite.log' depends on itself",
which should be matched by the grep commands above.

Later, once again, ggrep mistakes a simple text file for a binary one:

    FAIL: t/tap-ambiguous-directive
    ===============================
    ...
    + cat
    + /usr/local/bin/ggrep -F ': all.test' stdout
    + cat exp
    PASS: all.test 1 # foo SKIP
    FAIL: all.test 2 # bar TODO
    PASS: all.test 3 # :SKIP
    FAIL: all.test 4 # :TODO
    SKIP: all.test 5 # SKIP SKIP
    XFAIL: all.test 6 # TODO TODO
    + cat got
    Binary file stdout matches
    ...

All the other failures seem similar to this last one.

> [SNIP]
>
> In fact there really isn't anything there that would be harmful. 
>
No in the compiler :-)  But GNU grep is busted on your system IMHO.

> I have a lot of processor cores here ( 128 of them ) and if I can run 
> gmake -j 8 check to speed things up I can get results in an hour. 
>
Great!

> Any suggestions at all ?
You might try this:

  $ gmake check -j8 FGREP='/usr/xpg4/bin/grep -F' EGREP='/usr/xpg4/bin/grep -E'

and see if/how things improve.

Thanks,
  Stefano