summaryrefslogtreecommitdiffstats
path: root/bitbake/lib
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib')
-rw-r--r--bitbake/lib/bb/runqueue.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 2179ee1302..6457726d96 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -14,6 +14,7 @@ import os
14import sys 14import sys
15import stat 15import stat
16import errno 16import errno
17import itertools
17import logging 18import logging
18import re 19import re
19import bb 20import bb
@@ -2204,11 +2205,16 @@ class RunQueueExecute:
2204 if not hasattr(self, "sorted_setscene_tids"): 2205 if not hasattr(self, "sorted_setscene_tids"):
2205 # Don't want to sort this set every execution 2206 # Don't want to sort this set every execution
2206 self.sorted_setscene_tids = sorted(self.rqdata.runq_setscene_tids) 2207 self.sorted_setscene_tids = sorted(self.rqdata.runq_setscene_tids)
2208 # Resume looping where we left off when we returned to feed the mainloop
2209 self.setscene_tids_generator = itertools.cycle(self.rqdata.runq_setscene_tids)
2207 2210
2208 task = None 2211 task = None
2209 if not self.sqdone and self.can_start_task(): 2212 if not self.sqdone and self.can_start_task():
2210 # Find the next setscene to run 2213 loopcount = 0
2211 for nexttask in self.sorted_setscene_tids: 2214 # Find the next setscene to run, exit the loop when we've processed all tids or found something to execute
2215 while loopcount < len(self.rqdata.runq_setscene_tids):
2216 loopcount += 1
2217 nexttask = next(self.setscene_tids_generator)
2212 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: 2218 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:
2213 if nexttask in self.sq_deferred and self.sq_deferred[nexttask] not in self.runq_complete: 2219 if nexttask in self.sq_deferred and self.sq_deferred[nexttask] not in self.runq_complete:
2214 # Skip deferred tasks quickly before the 'expensive' tests below - this is key to performant multiconfig builds 2220 # Skip deferred tasks quickly before the 'expensive' tests below - this is key to performant multiconfig builds