diff options
Diffstat (limited to 'bitbake/lib/bb/runqueue.py')
-rw-r--r-- | bitbake/lib/bb/runqueue.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index 744542b082..75aef96a02 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py | |||
@@ -14,6 +14,7 @@ import os | |||
14 | import sys | 14 | import sys |
15 | import stat | 15 | import stat |
16 | import errno | 16 | import errno |
17 | import itertools | ||
17 | import logging | 18 | import logging |
18 | import re | 19 | import re |
19 | import bb | 20 | import bb |
@@ -2189,11 +2190,16 @@ class RunQueueExecute: | |||
2189 | if not hasattr(self, "sorted_setscene_tids"): | 2190 | if not hasattr(self, "sorted_setscene_tids"): |
2190 | # Don't want to sort this set every execution | 2191 | # Don't want to sort this set every execution |
2191 | self.sorted_setscene_tids = sorted(self.rqdata.runq_setscene_tids) | 2192 | self.sorted_setscene_tids = sorted(self.rqdata.runq_setscene_tids) |
2193 | # Resume looping where we left off when we returned to feed the mainloop | ||
2194 | self.setscene_tids_generator = itertools.cycle(self.rqdata.runq_setscene_tids) | ||
2192 | 2195 | ||
2193 | task = None | 2196 | task = None |
2194 | if not self.sqdone and self.can_start_task(): | 2197 | if not self.sqdone and self.can_start_task(): |
2195 | # Find the next setscene to run | 2198 | loopcount = 0 |
2196 | for nexttask in self.sorted_setscene_tids: | 2199 | # Find the next setscene to run, exit the loop when we've processed all tids or found something to execute |
2200 | while loopcount < len(self.rqdata.runq_setscene_tids): | ||
2201 | loopcount += 1 | ||
2202 | nexttask = next(self.setscene_tids_generator) | ||
2197 | if nexttask in self.sq_buildable and nexttask not in self.sq_running and self.sqdata.stamps[nexttask] not in self.build_stamps.values() and nexttask not in self.sq_harddep_deferred: | 2203 | if nexttask in self.sq_buildable and nexttask not in self.sq_running and self.sqdata.stamps[nexttask] not in self.build_stamps.values() and nexttask not in self.sq_harddep_deferred: |
2198 | if nexttask in self.sq_deferred and self.sq_deferred[nexttask] not in self.runq_complete: | 2204 | if nexttask in self.sq_deferred and self.sq_deferred[nexttask] not in self.runq_complete: |
2199 | # Skip deferred tasks quickly before the 'expensive' tests below - this is key to performant multiconfig builds | 2205 | # Skip deferred tasks quickly before the 'expensive' tests below - this is key to performant multiconfig builds |