summaryrefslogtreecommitdiffstats
path: root/bitbake/lib
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2011-11-11 18:38:15 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-11-15 12:05:24 +0000
commit97a40ff05ed7c374502759e0d462f5dc21f71f6d (patch)
tree8d398a468cbb7d7fe70bff9677b296fb900ad1dc /bitbake/lib
parentd8193f19fe94224089b0e5fc2026a843f7bd0709 (diff)
downloadpoky-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')
-rw-r--r--bitbake/lib/bb/runqueue.py7
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