diff options
author | Steven Knight <knight@baldmt.com> | 2004-05-30 19:17:38 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2004-05-30 19:17:38 (GMT) |
commit | 01989b813c4d05c6a59212f8237287877d415798 (patch) | |
tree | 965379d611026b1b16b9b7e0d78bc130c1f664ae /src/engine/SCons/Taskmaster.py | |
parent | 18fa3dcb772e0c7baab9b9f37678fc908017f4e3 (diff) | |
download | SCons-01989b813c4d05c6a59212f8237287877d415798.zip SCons-01989b813c4d05c6a59212f8237287877d415798.tar.gz SCons-01989b813c4d05c6a59212f8237287877d415798.tar.bz2 |
Eliminate the refactored-out-of-existence Sig.Calculator methods (whose jobs are now handled by Node methods). Stop tying calculators to Taskmaster objects, and eliminate the unused Taskmaster.Calc class.
Diffstat (limited to 'src/engine/SCons/Taskmaster.py')
-rw-r--r-- | src/engine/SCons/Taskmaster.py | 54 |
1 files changed, 17 insertions, 37 deletions
diff --git a/src/engine/SCons/Taskmaster.py b/src/engine/SCons/Taskmaster.py index a253ddf..b09a589 100644 --- a/src/engine/SCons/Taskmaster.py +++ b/src/engine/SCons/Taskmaster.py @@ -165,6 +165,16 @@ class Task: self.tm.executed(self.node) + def mark_targets(self, state): + for t in self.targets: + t.set_state(state) + + def mark_targets_and_side_effects(self, state): + for t in self.targets: + for side_effect in t.side_effects: + side_effect.set_state(state) + t.set_state(state) + def make_ready_all(self): """Mark all targets in a task ready for execution. @@ -172,11 +182,7 @@ class Task: visited--the canonical example being the "scons -c" option. """ self.out_of_date = self.targets[:] - state = SCons.Node.executing - for t in self.targets: - for side_effect in t.side_effects: - side_effect.set_state(state) - t.set_state(state) + self.mark_targets_and_side_effects(SCons.Node.executing) def make_ready_current(self): """Mark all targets in a task ready for execution if any target @@ -185,25 +191,13 @@ class Task: This is the default behavior for building only what's necessary. """ self.out_of_date = [] - calc = self.tm.calc - if calc: - for t in self.targets: - if not t.current(calc): - self.out_of_date.append(t) - else: - for t in self.targets: - if not t.current(t.calculator()): - self.out_of_date.append(t) + for t in self.targets: + if not t.current(t.calculator()): + self.out_of_date.append(t) if self.out_of_date: - state = SCons.Node.executing - for t in self.targets: - for side_effect in t.side_effects: - side_effect.set_state(state) - t.set_state(state) + self.mark_targets_and_side_effects(SCons.Node.executing) else: - state = SCons.Node.up_to_date - for t in self.targets: - t.set_state(state) + self.mark_targets(SCons.Node.up_to_date) make_ready = make_ready_current @@ -218,19 +212,6 @@ def order(dependencies): """Re-order a list of dependencies (if we need to).""" return dependencies -class Calc: - def bsig(self, node): - """ - """ - return None - - def current(self, node, sig): - """Default SCons build engine is-it-current function. - - This returns "always out of date," so every node is always - built/visited. - """ - return 0 class Taskmaster: """A generic Taskmaster for handling a bunch of targets. @@ -239,7 +220,7 @@ class Taskmaster: the base class method, so this class can do its thing. """ - def __init__(self, targets=[], tasker=Task, calc=Calc(), order=order): + def __init__(self, targets=[], tasker=Task, order=order): self.targets = targets # top level targets self.candidates = targets[:] # nodes that might be ready to be executed self.candidates.reverse() @@ -247,7 +228,6 @@ class Taskmaster: self.pending = [] # nodes that depend on a currently executing node self.tasker = tasker self.ready = None # the next task that is ready to be executed - self.calc = calc self.order = order self.exception_set(None, None) self.message = None |