diff options
Diffstat (limited to 'src/engine')
-rw-r--r-- | src/engine/SCons/Taskmaster.py | 11 | ||||
-rw-r--r-- | src/engine/SCons/TaskmasterTests.py | 3 |
2 files changed, 9 insertions, 5 deletions
diff --git a/src/engine/SCons/Taskmaster.py b/src/engine/SCons/Taskmaster.py index 84eb08d..6bd5e21 100644 --- a/src/engine/SCons/Taskmaster.py +++ b/src/engine/SCons/Taskmaster.py @@ -253,6 +253,7 @@ class Taskmaster: self.ready = None # the next task that is ready to be executed self.order = order self.message = None + self.altered = [] def _find_next_ready_node(self): """Find the next node that is ready to be built""" @@ -331,15 +332,15 @@ class Taskmaster: self.ready = node break - # If there aren't any children with builders and this - # was a top-level argument, then see if we can find any + # If this was a top-level argument and we haven't already + # done so, see if we can alter the target list to find any # corresponding targets in linked build directories: - if not derived and node in self.targets: + if node in self.targets and node not in self.altered: alt, message = node.alter_targets() if alt: self.message = message - self.candidates.pop() - self.candidates.extend(alt) + self.candidates.extend(self.order(alt)) + self.altered.append(node) continue # Add derived files that have not been built diff --git a/src/engine/SCons/TaskmasterTests.py b/src/engine/SCons/TaskmasterTests.py index a908192..cc4ba0c 100644 --- a/src/engine/SCons/TaskmasterTests.py +++ b/src/engine/SCons/TaskmasterTests.py @@ -421,6 +421,9 @@ class TaskmasterTestCase(unittest.TestCase): t = tm.next_task() assert t.get_target() == n7 t.executed() + t = tm.next_task() + assert t.get_target() == n6 + t.executed() n1 = Node("n1") n2 = Node("n2", [n1]) |