runqueue.py: Ensure setscene tasks don't break dependency order
PATCH 1/1 runqueue.py: Ensure setscene tasks don't break dependency order
If A depends upon B which depends upon C and the setscene for B succeeds but C is going to get rebuilt, we should wait for C to try and build A but currently we don't.
This is due to the timing of when we run the task_skip() as this triggers other tasks to become buildable. This patch moves the timing of that call to a more appropriate place allowing dependencies to behave as expected.
Signed-off-by Richard Purdie <[email protected]>
---
lib/bb/runqueue.py +7 -4
@@ -1243,9 +1243,6 @@ class RunQueueExecuteTasks(RunQueueExecute): logger.debug(1, 'Full skip list %s', self.rq.scenequeue_covered) - for task in self.rq.scenequeue_covered: - self.task_skip(task) - event.fire(bb.event.StampUpdate(self.rqdata.target_pairs, self.rqdata.dataCache.stamp), self.cfgData) schedulers = self.get_schedulers()
@@ -1339,8 +1336,14 @@ class RunQueueExecuteTasks(RunQueueExecute): task = self.sched.next() if task is not None: fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[task]] - taskname = self.rqdata.runq_task[task] + + if task in self.rq.scenequeue_covered: + logger.debug(2, "Setscene covered task %s (%s)", task, + self.rqdata.get_user_idstring(task)) + self.task_skip(task) + return True + if self.rq.check_stamp_task(task, taskname): logger.debug(2, "Stamp current task %s (%s)", task, self.rqdata.get_user_idstring(task))