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 843e468263..383c183235 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py | |||
| @@ -49,6 +49,11 @@ def fn_from_tid(tid): | |||
| 49 | def taskname_from_tid(tid): | 49 | def taskname_from_tid(tid): |
| 50 | return tid.rsplit(":", 1)[1] | 50 | return tid.rsplit(":", 1)[1] |
| 51 | 51 | ||
| 52 | def mc_from_tid(tid): | ||
| 53 | if tid.startswith('multiconfig:'): | ||
| 54 | return tid.split(':')[1] | ||
| 55 | return "" | ||
| 56 | |||
| 52 | def split_tid(tid): | 57 | def 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) |
