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 71f178de4f..329cda33a4 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -50,6 +50,11 @@ def fn_from_tid(tid):
50def taskname_from_tid(tid): 50def taskname_from_tid(tid):
51 return tid.rsplit(":", 1)[1] 51 return tid.rsplit(":", 1)[1]
52 52
53def mc_from_tid(tid):
54 if tid.startswith('multiconfig:'):
55 return tid.split(':')[1]
56 return ""
57
53def split_tid(tid): 58def split_tid(tid):
54 (mc, fn, taskname, _) = split_tid_mcfn(tid) 59 (mc, fn, taskname, _) = split_tid_mcfn(tid)
55 return (mc, fn, taskname) 60 return (mc, fn, taskname)
@@ -2102,10 +2107,23 @@ class RunQueueExecuteTasks(RunQueueExecute):
2102 2107
2103 return True 2108 return True
2104 2109
2110 def filtermcdeps(self, task, deps):
2111 ret = set()
2112 mainmc = mc_from_tid(task)
2113 for dep in deps:
2114 mc = mc_from_tid(dep)
2115 if mc != mainmc:
2116 continue
2117 ret.add(dep)
2118 return ret
2119
2120 # We filter out multiconfig dependencies from taskdepdata we pass to the tasks
2121 # as most code can't handle them
2105 def build_taskdepdata(self, task): 2122 def build_taskdepdata(self, task):
2106 taskdepdata = {} 2123 taskdepdata = {}
2107 next = self.rqdata.runtaskentries[task].depends 2124 next = self.rqdata.runtaskentries[task].depends
2108 next.add(task) 2125 next.add(task)
2126 next = self.filtermcdeps(task, next)
2109 while next: 2127 while next:
2110 additional = [] 2128 additional = []
2111 for revdep in next: 2129 for revdep in next:
@@ -2115,6 +2133,7 @@ class RunQueueExecuteTasks(RunQueueExecute):
2115 provides = self.rqdata.dataCaches[mc].fn_provides[taskfn] 2133 provides = self.rqdata.dataCaches[mc].fn_provides[taskfn]
2116 taskhash = self.rqdata.runtaskentries[revdep].hash 2134 taskhash = self.rqdata.runtaskentries[revdep].hash
2117 unihash = self.rqdata.runtaskentries[revdep].unihash 2135 unihash = self.rqdata.runtaskentries[revdep].unihash
2136 deps = self.filtermcdeps(task, deps)
2118 taskdepdata[revdep] = [pn, taskname, fn, deps, provides, taskhash, unihash] 2137 taskdepdata[revdep] = [pn, taskname, fn, deps, provides, taskhash, unihash]
2119 for revdep2 in deps: 2138 for revdep2 in deps:
2120 if revdep2 not in taskdepdata: 2139 if revdep2 not in taskdepdata: