Subject: Re: make -j and failure modes
To: None <tech-userlevel@NetBSD.org>
From: Luke Mewburn <lukem@NetBSD.org>
List: tech-userlevel
Date: 12/13/2003 09:32:12
On Wed, Dec 10, 2003 at 12:53:24PM -0600, James Chacon wrote:
| >
| > Make -j is simply broken (in yet another way) - just avoid it.
|
| Actually I can't find other ways it's not working correctly (as long
| as proper analysis of your Makefiles has been done and .WAIT's added
| appropriately).
|
| This is fixed via adding '|| exit $?' as Ben suggested so I'll
| probably start reviewing Makefiles for this shortly. In addition
| the man page for make needs a much clearer explanation of the
| implications of -j and command execution (since non-compat mode
| is different than traditional make in this respect with all the
| commands flowing through 1 shell instance).
Why can't this be fixed by using ``|| exit $?\n'' instead of ``\n'' as
the separator for the merged input fed to sh -e when using make -j ?
This would involve less churn of Makefiles; the current bug is being
caused due to an optimization that make -j performs that is dangerous
given the variance in -e semantics in different sh implementations,
and hacking the Makefiles to work around this issue doesn't strike me
as the optimal solution.