summaryrefslogtreecommitdiffstats
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 11:52:30 +0000
commite492eb4dc9016cd0bed194377c6f2b85cf0ad113 (patch)
treebf0d99e61d08be07607fc74f2bedc4c6bf26ce60
parent4a4046268f84b85559eea2c4b6a6004ad8cccb77 (diff)
downloadbitbake-e492eb4dc9016cd0bed194377c6f2b85cf0ad113.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]. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/runqueue.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index 7a39d89bd..a72538800 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -1208,8 +1208,13 @@ class RunQueueExecuteTasks(RunQueueExecute):
if task in self.rq.scenequeue_covered:
continue
if len(self.rqdata.runq_revdeps[task]) > 0 and self.rqdata.runq_revdeps[task].issubset(self.rq.scenequeue_covered):
- self.rq.scenequeue_covered.add(task)
found = True
+ for revdep in self.rqdata.runq_revdeps[task]:
+ if self.rqdata.runq_fnid[task] != self.rqdata.runq_fnid[revdep]:
+ found = False
+ break
+ if found:
+ self.rq.scenequeue_covered.add(task)
# Detect when the real task needs to be run anyway by looking to see
# if any of its dependencies within the same package are scheduled