Don't wipe the timestamp when a target fails to redo.

It's really a separate condition.  And since we're not removing the target
*file* in case of error - we update it atomically, and keeping it is better
than losing it - there's no reason to wipe the timestamp in that case
either.

However, we do need to know that the build failed, so that anybody else
(especially in a parallel build) who looks at that target knows that it
died.  So add a separate flag just for that.
This commit is contained in:
Avery Pennarun 2010-12-10 20:53:31 -08:00
commit 0126f6be1e
4 changed files with 39 additions and 17 deletions

View file

@ -42,6 +42,8 @@ def dirty_deps(f, depth, max_changed):
def should_build(t):
f = state.File(name=t)
if f.is_failed():
raise builder.ImmediateReturn(32)
return dirty_deps(f, depth = '', max_changed = vars.RUNID)