summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/runqueue.py10
1 files changed, 7 insertions, 3 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index bd42538688..dcf90044a2 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -1392,6 +1392,7 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
1392 sq_revdeps = [] 1392 sq_revdeps = []
1393 sq_revdeps_new = [] 1393 sq_revdeps_new = []
1394 sq_revdeps_squash = [] 1394 sq_revdeps_squash = []
1395 self.sq_harddeps = []
1395 1396
1396 # We need to construct a dependency graph for the setscene functions. Intermediate 1397 # We need to construct a dependency graph for the setscene functions. Intermediate
1397 # dependencies between the setscene tasks only complicate the code. This code 1398 # dependencies between the setscene tasks only complicate the code. This code
@@ -1504,6 +1505,7 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
1504 if taskid is None: 1505 if taskid is None:
1505 bb.msg.fatal("RunQueue", "Task %s:%s depends upon non-existent task %s:%s" % (self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[realid]], self.rqdata.taskData.tasks_name[realid], dep, idependtask)) 1506 bb.msg.fatal("RunQueue", "Task %s:%s depends upon non-existent task %s:%s" % (self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[realid]], self.rqdata.taskData.tasks_name[realid], dep, idependtask))
1506 1507
1508 self.sq_harddeps.append(self.rqdata.runq_setscene.index(taskid))
1507 sq_revdeps_squash[self.rqdata.runq_setscene.index(task)].add(self.rqdata.runq_setscene.index(taskid)) 1509 sq_revdeps_squash[self.rqdata.runq_setscene.index(task)].add(self.rqdata.runq_setscene.index(taskid))
1508 # Have to zero this to avoid circular dependencies 1510 # Have to zero this to avoid circular dependencies
1509 sq_revdeps_squash[self.rqdata.runq_setscene.index(taskid)] = set() 1511 sq_revdeps_squash[self.rqdata.runq_setscene.index(taskid)] = set()
@@ -1581,8 +1583,10 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
1581 1583
1582 self.rq.state = runQueueSceneRun 1584 self.rq.state = runQueueSceneRun
1583 1585
1584 def scenequeue_updatecounters(self, task): 1586 def scenequeue_updatecounters(self, task, fail = False):
1585 for dep in self.sq_deps[task]: 1587 for dep in self.sq_deps[task]:
1588 if fail and task in self.sq_harddeps:
1589 continue
1586 self.sq_revdeps2[dep].remove(task) 1590 self.sq_revdeps2[dep].remove(task)
1587 if len(self.sq_revdeps2[dep]) == 0: 1591 if len(self.sq_revdeps2[dep]) == 0:
1588 self.runq_buildable[dep] = 1 1592 self.runq_buildable[dep] = 1
@@ -1609,7 +1613,7 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
1609 self.stats.taskFailed() 1613 self.stats.taskFailed()
1610 bb.event.fire(sceneQueueTaskFailed(task, self.stats, result, self), self.cfgData) 1614 bb.event.fire(sceneQueueTaskFailed(task, self.stats, result, self), self.cfgData)
1611 self.scenequeue_notcovered.add(task) 1615 self.scenequeue_notcovered.add(task)
1612 self.scenequeue_updatecounters(task) 1616 self.scenequeue_updatecounters(task, True)
1613 1617
1614 def task_failoutright(self, task): 1618 def task_failoutright(self, task):
1615 self.runq_running[task] = 1 1619 self.runq_running[task] = 1
@@ -1618,7 +1622,7 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
1618 self.stats.taskSkipped() 1622 self.stats.taskSkipped()
1619 index = self.rqdata.runq_setscene[task] 1623 index = self.rqdata.runq_setscene[task]
1620 self.scenequeue_notcovered.add(task) 1624 self.scenequeue_notcovered.add(task)
1621 self.scenequeue_updatecounters(task) 1625 self.scenequeue_updatecounters(task, True)
1622 1626
1623 def task_skip(self, task): 1627 def task_skip(self, task):
1624 self.runq_running[task] = 1 1628 self.runq_running[task] = 1