[Top][All Lists]

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

Re: bug#9245: FreeBSD make in concurrent mode report spurious success in

From: Eric Blake
Subject: Re: bug#9245: FreeBSD make in concurrent mode report spurious success in automake-generated tests harness
Date: Tue, 16 Aug 2011 10:18:51 -0600
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv: Gecko/20110621 Fedora/3.1.11-1.fc14 Lightning/1.0b3pre Mnenhy/0.8.3 Thunderbird/3.1.11

On 08/16/2011 10:04 AM, Stefano Lattarini wrote:
The "proper fix" is even easier BTW: just use "$$exit || exit 1" instead.

The updated patch should now work (and I've tested it properly this time).
This new patch hasn't been derived by "cargo-cult guessing", but from the
explanation of the relevant FreeBSD make bug provided by Jilles Tjoelker:

Now that's something to be documented in the Autoconf manual I'd say ...

Indeed. So it all boils down to BSD make rewriting rules (but only for make -j) to be roughly:

sh -c 'set -v; your rules; set +v'

and losing your exit status (not to mention sharing shell status between commands that are supposed to be in independent shells), when it really should have been rewriting as something more complex:

sh -c '(your rule 1); (your rule 2); st=$?; set +v; exit $st'

And your workaround of an explicit exit rather than relying on $? at the end of your 'set +e' invocation is indeed the proper way to force the parallel make bug to be avoided, by exiting prior to any post-commands injected by the BSD make rewriting going on that corrupt $?.

Eric Blake   address@hidden    +1-801-349-2682
Libvirt virtualization library

reply via email to

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