summaryrefslogtreecommitdiffstats
path: root/bitbake
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>2012-01-30 16:16:11 +0000
commit6e1105e1e8764eded2d0dff47fe095b81db75aa1 (patch)
tree4baa72a452e68dbb3a5661c8243e9574e2565f0c /bitbake
parent4494f59a2605a2f3bed285c759112ecbddf71e90 (diff)
downloadpoky-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')
-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 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