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 11:52:30 +0000 |
commit | e492eb4dc9016cd0bed194377c6f2b85cf0ad113 (patch) | |
tree | bf0d99e61d08be07607fc74f2bedc4c6bf26ce60 /lib/bb/runqueue.py | |
parent | 4a4046268f84b85559eea2c4b6a6004ad8cccb77 (diff) | |
download | bitbake-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>
Diffstat (limited to 'lib/bb/runqueue.py')
-rw-r--r-- | lib/bb/runqueue.py | 7 |
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 |