diff options
| -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: |
