diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2011-11-11 18:38:15 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-01-30 16:16:11 +0000 |
commit | 6e1105e1e8764eded2d0dff47fe095b81db75aa1 (patch) | |
tree | 4baa72a452e68dbb3a5661c8243e9574e2565f0c /bitbake/lib | |
parent | 4494f59a2605a2f3bed285c759112ecbddf71e90 (diff) | |
download | poky-6e1105e1e8764eded2d0dff47fe095b81db75aa1.tar.gz |
lib/bb/runqueue: avoid marking runtime dependencies as covered
The code which populates setscene_covered list was adding a task to the
covered list if all of the tasks that depend upon it were also covered;
however, this means that tasks that would have installed "runtime"
dependencies were being marked as covered also, e.g. gmp-native and
mpfr-native are needed by gcc-cross at runtime since they are shared
libraries that gcc links to, but their do_populate_sysroot tasks were
being marked as covered, resulting in failures later on if gcc-cross was
available from sstate but mpfr-native and gmp-native weren't.
Since we currently have no real way to handle runtime dependencies for
native packages, add a workaround which avoids marking tasks as covered
if one or more of their revdeps are from a different recipe.
Fixes [YOCTO #1536].
(Bitbake rev: e492eb4dc9016cd0bed194377c6f2b85cf0ad113)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib')
-rw-r--r-- | bitbake/lib/bb/runqueue.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index aca06b57be..675f830712 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py | |||
@@ -1203,8 +1203,13 @@ class RunQueueExecuteTasks(RunQueueExecute): | |||
1203 | if task in self.rq.scenequeue_covered: | 1203 | if task in self.rq.scenequeue_covered: |
1204 | continue | 1204 | continue |
1205 | if len(self.rqdata.runq_revdeps[task]) > 0 and self.rqdata.runq_revdeps[task].issubset(self.rq.scenequeue_covered): | 1205 | if len(self.rqdata.runq_revdeps[task]) > 0 and self.rqdata.runq_revdeps[task].issubset(self.rq.scenequeue_covered): |
1206 | self.rq.scenequeue_covered.add(task) | ||
1207 | found = True | 1206 | found = True |
1207 | for revdep in self.rqdata.runq_revdeps[task]: | ||
1208 | if self.rqdata.runq_fnid[task] != self.rqdata.runq_fnid[revdep]: | ||
1209 | found = False | ||
1210 | break | ||
1211 | if found: | ||
1212 | self.rq.scenequeue_covered.add(task) | ||
1208 | 1213 | ||
1209 | # Detect when the real task needs to be run anyway by looking to see | 1214 | # Detect when the real task needs to be run anyway by looking to see |
1210 | # if any of its dependencies within the same package are scheduled | 1215 | # if any of its dependencies within the same package are scheduled |