redo-ifchange: return nonzero if one of the dependencies fails to build.

Oops!  We were just always returning 0 (success) in that case.
This commit is contained in:
Avery Pennarun 2010-11-21 07:09:47 -08:00
commit 840a8da1ef
2 changed files with 5 additions and 1 deletions

View file

@ -95,11 +95,13 @@ def wait(want_token):
del _waitfds[fd] del _waitfds[fd]
rv = os.waitpid(pd.pid, 0) rv = os.waitpid(pd.pid, 0)
assert(rv[0] == pd.pid) assert(rv[0] == pd.pid)
_debug("done1: rv=%r\n" % (rv,))
rv = rv[1] rv = rv[1]
if os.WIFEXITED(rv): if os.WIFEXITED(rv):
pd.rv = os.WEXITSTATUS(rv) pd.rv = os.WEXITSTATUS(rv)
else: else:
pd.rv = -os.WTERMSIG(rv) pd.rv = -os.WTERMSIG(rv)
_debug("done2: rv=%d\n" % pd.rv)
pd.donefunc(pd.name, pd.rv) pd.donefunc(pd.name, pd.rv)
@ -187,11 +189,13 @@ def start_job(reason, lock, jobfunc, donefunc):
try: try:
try: try:
rv = jobfunc() or 0 rv = jobfunc() or 0
_debug('jobfunc completed (%r, %r)\n' % (jobfunc,rv))
except Exception: except Exception:
import traceback import traceback
traceback.print_exc() traceback.print_exc()
lock.unlock() lock.unlock()
finally: finally:
_debug('exit: %d\n' % rv)
os._exit(rv) os._exit(rv)
# else we're the parent process # else we're the parent process
lock.owned = False # child owns it now lock.owned = False # child owns it now

View file

@ -47,7 +47,7 @@ def should_build(t):
def maybe_build(t): def maybe_build(t):
if should_build(t): if should_build(t):
builder.build(t) return builder.build(t)
if not vars.TARGET: if not vars.TARGET: