diff options
author | Steven Knight <knight@baldmt.com> | 2004-05-19 17:49:55 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2004-05-19 17:49:55 (GMT) |
commit | afc2ed0070c73d8f0dbc24ba3fe5e5773522beaa (patch) | |
tree | 9122729d1120c1119fe10ff360f4675789ca8f9b /src/engine/SCons/Taskmaster.py | |
parent | e2763b54fc32b24169586918481d31b6234c0ae4 (diff) | |
download | SCons-afc2ed0070c73d8f0dbc24ba3fe5e5773522beaa.zip SCons-afc2ed0070c73d8f0dbc24ba3fe5e5773522beaa.tar.gz SCons-afc2ed0070c73d8f0dbc24ba3fe5e5773522beaa.tar.bz2 |
Fix spurious rebuilds/reinstalls of header files and circular dependencies with generated header files by allowing Scanners to be associated explicitly with Builders, not just through Scanner file suffix lists.
Diffstat (limited to 'src/engine/SCons/Taskmaster.py')
-rw-r--r-- | src/engine/SCons/Taskmaster.py | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/engine/SCons/Taskmaster.py b/src/engine/SCons/Taskmaster.py index e5b3548..a253ddf 100644 --- a/src/engine/SCons/Taskmaster.py +++ b/src/engine/SCons/Taskmaster.py @@ -158,12 +158,10 @@ class Task: their dependent parent nodes. """ for t in self.targets: - def get_parents(node, parent): return node.get_parents() - def set_state(node, parent): node.set_state(SCons.Node.failed) - walker = SCons.Node.Walker(t, get_parents, eval_func=set_state) - n = walker.next() - while n: - n = walker.next() + # Set failure state on all of the parents that were dependent + # on this failed build. + def set_state(node): node.set_state(SCons.Node.failed) + t.call_for_all_waiting_parents(set_state) self.tm.executed(self.node) @@ -340,6 +338,12 @@ class Taskmaster: def unbuilt_nodes(node): return node.get_state() == None not_built = filter(unbuilt_nodes, derived) if not_built: + # We're waiting on one more derived files that have not + # yet been built. Add this node to the waiting_parents + # list of each of those derived files. + def add_to_waiting_parents(child, parent=node): + child.add_to_waiting_parents(parent) + map(add_to_waiting_parents, not_built) not_built.reverse() self.candidates.extend(self.order(not_built)) continue |