diff options
| -rw-r--r-- | bitbake/lib/bb/runqueue.py | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index 3462ed4457..9f3abff85f 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py | |||
| @@ -2195,6 +2195,9 @@ class RunQueueExecute: | |||
| 2195 | # Find the next setscene to run | 2195 | # Find the next setscene to run |
| 2196 | for nexttask in self.sorted_setscene_tids: | 2196 | for nexttask in self.sorted_setscene_tids: |
| 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: | 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: |
| 2198 | 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 | ||
| 2200 | continue | ||
| 2198 | if nexttask not in self.sqdata.unskippable and self.sqdata.sq_revdeps[nexttask] and \ | 2201 | if nexttask not in self.sqdata.unskippable and self.sqdata.sq_revdeps[nexttask] and \ |
| 2199 | nexttask not in self.sq_needed_harddeps and \ | 2202 | nexttask not in self.sq_needed_harddeps and \ |
| 2200 | self.sqdata.sq_revdeps[nexttask].issubset(self.scenequeue_covered) and \ | 2203 | self.sqdata.sq_revdeps[nexttask].issubset(self.scenequeue_covered) and \ |
| @@ -2224,8 +2227,7 @@ class RunQueueExecute: | |||
| 2224 | if t in self.runq_running and t not in self.runq_complete: | 2227 | if t in self.runq_running and t not in self.runq_complete: |
| 2225 | continue | 2228 | continue |
| 2226 | if nexttask in self.sq_deferred: | 2229 | if nexttask in self.sq_deferred: |
| 2227 | if self.sq_deferred[nexttask] not in self.runq_complete: | 2230 | # Deferred tasks that were still deferred were skipped above so we now need to process |
| 2228 | continue | ||
| 2229 | logger.debug("Task %s no longer deferred" % nexttask) | 2231 | logger.debug("Task %s no longer deferred" % nexttask) |
| 2230 | del self.sq_deferred[nexttask] | 2232 | del self.sq_deferred[nexttask] |
| 2231 | valid = self.rq.validate_hashes(set([nexttask]), self.cooker.data, 0, False, summary=False) | 2233 | valid = self.rq.validate_hashes(set([nexttask]), self.cooker.data, 0, False, summary=False) |
