summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/runqueue.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 3db083b261..3773ec0e1e 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -1188,6 +1188,25 @@ class RunQueueExecuteTasks(RunQueueExecute):
1188 self.rq.scenequeue_covered.add(task) 1188 self.rq.scenequeue_covered.add(task)
1189 found = True 1189 found = True
1190 1190
1191 # Detect when the real task needs to be run anyway by looking to see
1192 # if any of its dependencies within the same package are scheduled
1193 # to be run.
1194 covered_remove = set()
1195 for task in self.rq.scenequeue_covered:
1196 task_fnid = self.rqdata.runq_fnid[task]
1197 for dep in self.rqdata.runq_depends[task]:
1198 if self.rqdata.runq_fnid[dep] == task_fnid:
1199 if dep not in self.rq.scenequeue_covered:
1200 covered_remove.add(task)
1201 break
1202
1203 for task in covered_remove:
1204 fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[task]]
1205 taskname = self.rqdata.runq_task[task] + '_setscene'
1206 bb.build.del_stamp(taskname, self.rqdata.dataCache, fn)
1207 logger.debug(1, 'Not skipping task %s because it will have to be run anyway', task)
1208 self.rq.scenequeue_covered.remove(task)
1209
1191 logger.debug(1, 'Full skip list %s', self.rq.scenequeue_covered) 1210 logger.debug(1, 'Full skip list %s', self.rq.scenequeue_covered)
1192 1211
1193 for task in self.rq.scenequeue_covered: 1212 for task in self.rq.scenequeue_covered: