Hi Eric. On Tuesday 16 August 2011, Eric Blake wrote: > 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: > > <http://www.freebsd.org/cgi/query-pr.cgi?pr=159730> > > > > 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 $?. > I'll have a "draft patch" read soonish. There is ample room for improvements, but I'll post it here anyway since it can benefit from early feedback. Regards, Stefano _______________________________________________ Autoconf mailing list Autoconf@xxxxxxx https://lists.gnu.org/mailman/listinfo/autoconf