summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Taskmaster.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2004-04-07 22:58:22 (GMT)
committerSteven Knight <knight@baldmt.com>2004-04-07 22:58:22 (GMT)
commitf8c2e8cf9666d85adbd85d0bc0dbebaca76fde08 (patch)
tree4848983354e94e8edb68331487af4eede8df5139 /src/engine/SCons/Taskmaster.py
parent18904c3a781f097ca6f8b3ad06ff6ce991ad2640 (diff)
downloadSCons-f8c2e8cf9666d85adbd85d0bc0dbebaca76fde08.zip
SCons-f8c2e8cf9666d85adbd85d0bc0dbebaca76fde08.tar.gz
SCons-f8c2e8cf9666d85adbd85d0bc0dbebaca76fde08.tar.bz2
Have Task.make_ready() create a list of the out-of-date Nodes.
Diffstat (limited to 'src/engine/SCons/Taskmaster.py')
-rw-r--r--src/engine/SCons/Taskmaster.py25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/engine/SCons/Taskmaster.py b/src/engine/SCons/Taskmaster.py
index 8afd847..ffdc065 100644
--- a/src/engine/SCons/Taskmaster.py
+++ b/src/engine/SCons/Taskmaster.py
@@ -169,17 +169,26 @@ class Task:
def make_ready(self):
"""Make a task ready for execution."""
- state = SCons.Node.up_to_date
+ self.out_of_date = []
calc = self.tm.calc
- for t in self.targets:
- c = calc or t.calculator()
- if not t.current(c):
- state = SCons.Node.executing
- for t in self.targets:
- if state == SCons.Node.executing:
+ 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)
+ 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)
+ t.set_state(state)
+ else:
+ state = SCons.Node.up_to_date
+ for t in self.targets:
+ t.set_state(state)
def postprocess(self):
"""Post process a task after it's been executed."""