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) |