summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake')
-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 843e468263..383c183235 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -49,6 +49,11 @@ def fn_from_tid(tid):
49def taskname_from_tid(tid): 49def taskname_from_tid(tid):
50 return tid.rsplit(":", 1)[1] 50 return tid.rsplit(":", 1)[1]
51 51
52def mc_from_tid(tid):
53 if tid.startswith('multiconfig:'):
54 return tid.split(':')[1]
55 return ""
56
52def split_tid(tid): 57def split_tid(tid):
53 (mc, fn, taskname, _) = split_tid_mcfn(tid) 58 (mc, fn, taskname, _) = split_tid_mcfn(tid)
54 return (mc, fn, taskname) 59 return (mc, fn, taskname)
@@ -2079,10 +2084,23 @@ class RunQueueExecuteTasks(RunQueueExecute):
2079 2084
2080 return True 2085 return True
2081 2086
2087 def filtermcdeps(self, task, deps):
2088 ret = set()
2089 mainmc = mc_from_tid(task)
2090 for dep in deps:
2091 mc = mc_from_tid(dep)
2092 if mc != mainmc:
2093 continue
2094 ret.add(dep)
2095 return ret
2096
2097 # We filter out multiconfig dependencies from taskdepdata we pass to the tasks
2098 # as most code can't handle them
2082 def build_taskdepdata(self, task): 2099 def build_taskdepdata(self, task):
2083 taskdepdata = {} 2100 taskdepdata = {}
2084 next = self.rqdata.runtaskentries[task].depends 2101 next = self.rqdata.runtaskentries[task].depends
2085 next.add(task) 2102 next.add(task)
2103 next = self.filtermcdeps(task, next)
2086 while next: 2104 while next:
2087 additional = [] 2105 additional = []
2088 for revdep in next: 2106 for revdep in next:
@@ -2092,6 +2110,7 @@ class RunQueueExecuteTasks(RunQueueExecute):
2092 provides = self.rqdata.dataCaches[mc].fn_provides[taskfn] 2110 provides = self.rqdata.dataCaches[mc].fn_provides[taskfn]
2093 taskhash = self.rqdata.runtaskentries[revdep].hash 2111 taskhash = self.rqdata.runtaskentries[revdep].hash
2094 taskdepdata[revdep] = [pn, taskname, fn, deps, provides, taskhash] 2112 taskdepdata[revdep] = [pn, taskname, fn, deps, provides, taskhash]
2113 deps = self.filtermcdeps(task, deps)
2095 for revdep2 in deps: 2114 for revdep2 in deps:
2096 if revdep2 not in taskdepdata: 2115 if revdep2 not in taskdepdata:
2097 additional.append(revdep2) 2116 additional.append(revdep2)