diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2011-11-11 18:38:15 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-11-15 12:05:24 +0000 |
commit | 97a40ff05ed7c374502759e0d462f5dc21f71f6d (patch) | |
tree | 8d398a468cbb7d7fe70bff9677b296fb900ad1dc | |
parent | d8193f19fe94224089b0e5fc2026a843f7bd0709 (diff) | |
download | poky-97a40ff05ed7c374502759e0d462f5dc21f71f6d.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>
-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 d0d6f3a998..e691fc2416 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py | |||
@@ -1209,8 +1209,13 @@ class RunQueueExecuteTasks(RunQueueExecute): | |||
1209 | if task in self.rq.scenequeue_covered: | 1209 | if task in self.rq.scenequeue_covered: |
1210 | continue | 1210 | continue |
1211 | if len(self.rqdata.runq_revdeps[task]) > 0 and self.rqdata.runq_revdeps[task].issubset(self.rq.scenequeue_covered): | 1211 | if len(self.rqdata.runq_revdeps[task]) > 0 and self.rqdata.runq_revdeps[task].issubset(self.rq.scenequeue_covered): |
1212 | self.rq.scenequeue_covered.add(task) | ||
1213 | found = True | 1212 | found = True |
1213 | for revdep in self.rqdata.runq_revdeps[task]: | ||
1214 | if self.rqdata.runq_fnid[task] != self.rqdata.runq_fnid[revdep]: | ||
1215 | found = False | ||
1216 | break | ||
1217 | if found: | ||
1218 | self.rq.scenequeue_covered.add(task) | ||
1214 | 1219 | ||
1215 | # Detect when the real task needs to be run anyway by looking to see | 1220 | # Detect when the real task needs to be run anyway by looking to see |
1216 | # if any of its dependencies within the same package are scheduled | 1221 | # if any of its dependencies within the same package are scheduled |