summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2018-09-07 17:41:27 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-09-10 12:13:38 +0100
commit530aceebc1743b6e279bf9d1c13c841739b6bb14 (patch)
treece1124ad16dcd44418e25e6836b92f489ed38f79
parent479a059c96882817a7f7b3765257f7acdf112348 (diff)
downloadpoky-530aceebc1743b6e279bf9d1c13c841739b6bb14.tar.gz
bitbake: runqueue: Ensure setscene tasks that aren't covered get built
Running "bitbake gconf-native -c cleansstate; bitbake core-image-sato:do_populate_sdk" results in a build where it fails to find gconf-native and fails to build it, merrily trying to build the SDK without gconf being present. The issue is the missing setscene tasks are effectively ignored as the later code in runqueue thinks that since other sstate tasks are present, these 'cover' the missing one. In reality we need to call BB_SETSCENE_DEPVALID to make that decision. To do that we need a "reduced" setscene dependency graph which we don't have in main task graph context. Since that was already done in setscene, we should just assume anything in the non-covered list needs to be built. (Bitbake rev: 464d0339add15bc8b4344ddd1e4c49706e3c0a02) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--bitbake/lib/bb/runqueue.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 91911aff89..9ce06c4085 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -1831,13 +1831,14 @@ class RunQueueExecuteTasks(RunQueueExecute):
1831 bb.build.del_stamp(taskname, self.rqdata.dataCaches[mc], taskfn) 1831 bb.build.del_stamp(taskname, self.rqdata.dataCaches[mc], taskfn)
1832 self.rq.scenequeue_covered.remove(tid) 1832 self.rq.scenequeue_covered.remove(tid)
1833 1833
1834 toremove = covered_remove 1834 toremove = covered_remove | self.rq.scenequeue_notcovered
1835 for task in toremove: 1835 for task in toremove:
1836 logger.debug(1, 'Not skipping task %s due to setsceneverify', task) 1836 logger.debug(1, 'Not skipping task %s due to setsceneverify', task)
1837 while toremove: 1837 while toremove:
1838 covered_remove = [] 1838 covered_remove = []
1839 for task in toremove: 1839 for task in toremove:
1840 removecoveredtask(task) 1840 if task in self.rq.scenequeue_covered:
1841 removecoveredtask(task)
1841 for deptask in self.rqdata.runtaskentries[task].depends: 1842 for deptask in self.rqdata.runtaskentries[task].depends:
1842 if deptask not in self.rq.scenequeue_covered: 1843 if deptask not in self.rq.scenequeue_covered:
1843 continue 1844 continue
@@ -2103,6 +2104,7 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
2103 # If we don't have any setscene functions, skip this step 2104 # If we don't have any setscene functions, skip this step
2104 if len(self.rqdata.runq_setscene_tids) == 0: 2105 if len(self.rqdata.runq_setscene_tids) == 0:
2105 rq.scenequeue_covered = set() 2106 rq.scenequeue_covered = set()
2107 rq.scenequeue_notcovered = set()
2106 rq.state = runQueueRunInit 2108 rq.state = runQueueRunInit
2107 return 2109 return
2108 2110