From 6fe38decefac01554eb3104bc48ec77710fc5518 Mon Sep 17 00:00:00 2001 From: stevenknight Date: Tue, 2 Oct 2001 12:24:41 +0000 Subject: [PATCH] Let the Taskmaster control whether the build stops. git-svn-id: http://scons.tigris.org/svn/scons/trunk@80 fdb21ef1-2011-0410-befe-b5e4ea1792b1 --- src/engine/SCons/Job.py | 11 +++++------ src/engine/SCons/JobTests.py | 4 +++- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/engine/SCons/Job.py b/src/engine/SCons/Job.py index 26031ff1..f17c0752 100644 --- a/src/engine/SCons/Job.py +++ b/src/engine/SCons/Job.py @@ -86,8 +86,9 @@ class Serial: try: task.execute() except: + # Let the failed() callback function arrange for the + # build to stop if that's appropriate. self.taskmaster.failed(task) - return else: self.taskmaster.executed(task) @@ -219,12 +220,10 @@ class Parallel: finally: cv.acquire() except: + # Let the failed() callback function arrange for + # calling self.jobs.stop() to to stop the build + # if that's appropriate. self.taskmaster.failed(task) - # stop all jobs since there was a failure: - # (this will wake up any waiting jobs, so - # it isn't necessary to explicitly wake them - # here) - self.jobs.stop() else: self.taskmaster.executed(task) diff --git a/src/engine/SCons/JobTests.py b/src/engine/SCons/JobTests.py index f2189eba..b90ba1c6 100644 --- a/src/engine/SCons/JobTests.py +++ b/src/engine/SCons/JobTests.py @@ -68,6 +68,7 @@ class Taskmaster: """n is the number of dummy tasks to perform.""" self.test_case = test_case + self.stop = None self.num_tasks = n self.num_iterated = 0 self.num_executed = 0 @@ -88,7 +89,7 @@ class Taskmaster: def next_task(self): - if self.all_tasks_are_iterated(): + if self.stop or self.all_tasks_are_iterated(): return None else: self.num_iterated = self.num_iterated + 1 @@ -110,6 +111,7 @@ class Taskmaster: def failed(self, task): self.num_failed = self.num_failed + 1 + self.stop = 1 def is_blocked(self): # simulate blocking tasks -- 2.26.2