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 /bitbake/lib/bb/runqueue.py | |
| 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>
Diffstat (limited to 'bitbake/lib/bb/runqueue.py')
| -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 |
