diff options
Diffstat (limited to 'bitbake')
-rw-r--r-- | bitbake/lib/bb/runqueue.py | 19 |
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): | |||
50 | def taskname_from_tid(tid): | 50 | def taskname_from_tid(tid): |
51 | return tid.rsplit(":", 1)[1] | 51 | return tid.rsplit(":", 1)[1] |
52 | 52 | ||
53 | def mc_from_tid(tid): | ||
54 | if tid.startswith('multiconfig:'): | ||
55 | return tid.split(':')[1] | ||
56 | return "" | ||
57 | |||
53 | def split_tid(tid): | 58 | def 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: |