summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/runqueue.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 2a1299db39..886eef1f27 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -1975,11 +1975,19 @@ class RunQueueExecute:
1975 self.setbuildable(revdep) 1975 self.setbuildable(revdep)
1976 logger.debug(1, "Marking task %s as buildable", revdep) 1976 logger.debug(1, "Marking task %s as buildable", revdep)
1977 1977
1978 for t in self.sq_deferred.copy(): 1978 found = None
1979 for t in sorted(self.sq_deferred.copy()):
1979 if self.sq_deferred[t] == task: 1980 if self.sq_deferred[t] == task:
1980 logger.debug(2, "Deferred task %s now buildable" % t) 1981 # Allow the next deferred task to run. Any other deferred tasks should be deferred after that task.
1981 del self.sq_deferred[t] 1982 # We shouldn't allow all to run at once as it is prone to races.
1982 update_scenequeue_data([t], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=False) 1983 if not found:
1984 bb.note("Deferred task %s now buildable" % t)
1985 del self.sq_deferred[t]
1986 update_scenequeue_data([t], self.sqdata, self.rqdata, self.rq, self.cooker, self.stampcache, self, summary=False)
1987 found = t
1988 else:
1989 bb.note("Deferring %s after %s" % (t, found))
1990 self.sq_deferred[t] = found
1983 1991
1984 def task_complete(self, task): 1992 def task_complete(self, task):
1985 self.stats.taskCompleted() 1993 self.stats.taskCompleted()