summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Taskmaster.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2004-12-03 16:06:04 (GMT)
committerSteven Knight <knight@baldmt.com>2004-12-03 16:06:04 (GMT)
commitf0c3476fdae7032e6232d112864518934ba8a13e (patch)
treefe59fb9ac580b7b454482d93d0389cd0f00f12fc /src/engine/SCons/Taskmaster.py
parent9bb2d035b8c5b5f1575ba40eb264d7a334f10542 (diff)
downloadSCons-f0c3476fdae7032e6232d112864518934ba8a13e.zip
SCons-f0c3476fdae7032e6232d112864518934ba8a13e.tar.gz
SCons-f0c3476fdae7032e6232d112864518934ba8a13e.tar.bz2
Print --debug={tree,dtree,includes} even if the build has an error.
Diffstat (limited to 'src/engine/SCons/Taskmaster.py')
-rw-r--r--src/engine/SCons/Taskmaster.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/engine/SCons/Taskmaster.py b/src/engine/SCons/Taskmaster.py
index 6bd5e21..b528f44 100644
--- a/src/engine/SCons/Taskmaster.py
+++ b/src/engine/SCons/Taskmaster.py
@@ -152,8 +152,16 @@ class Task:
for t in self.targets:
t.set_state(SCons.Node.failed)
self.tm.failed(self.node)
+ next_top = self.tm.next_top_level_candidate()
self.tm.stop()
+ if next_top:
+ # We're stopping because of a build failure, but give the
+ # calling Task class a chance to postprocess() the top-level
+ # target under which the build failure occurred.
+ self.targets = [next_top]
+ self.top = 1
+
def fail_continue(self):
"""Explicit continue-the-build failure.
@@ -426,6 +434,14 @@ class Taskmaster:
return not self.ready and (self.pending or self.executing)
+ def next_top_level_candidate(self):
+ candidates = self.candidates[:]
+ candidates.reverse()
+ for c in candidates:
+ if c in self.targets:
+ return c
+ return None
+
def stop(self):
"""Stop the current build completely."""
self.candidates = []