diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-11-21 14:02:00 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-11-23 23:40:06 +0000 |
commit | 319ea222ee5e6bf01386f344ec9f9b8b49f639eb (patch) | |
tree | 3c2cd20233e8a466529bfd4cac9d26a0b27b25e4 /bitbake | |
parent | aa9b10d1b09afe5312d5dd1ea409d22f7eaa953d (diff) | |
download | poky-319ea222ee5e6bf01386f344ec9f9b8b49f639eb.tar.gz |
runqueue.py: Ensure we fully process the covered list
The existing looping code can mask an existing "found = True"
by forcing it to False each time. This can lead to dependency
lists not being fully searched and results in dependency errors.
An exmaple of this was the autobuilder building linux-yocto from
sstate but then rebuilding some of the recipe's tasks for no
apparent reason. Separating the logic into two variables solves this
problem since any "found = True" value is now always preserved.
(Bitbake rev: 61017fc5d30b7a13308d038872ec92efc1a84cef)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r-- | bitbake/lib/bb/runqueue.py | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index 2141cf7d84..256f4e30ce 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py | |||
@@ -1210,12 +1210,13 @@ class RunQueueExecuteTasks(RunQueueExecute): | |||
1210 | if task in self.rq.scenequeue_covered: | 1210 | if task in self.rq.scenequeue_covered: |
1211 | continue | 1211 | continue |
1212 | if len(self.rqdata.runq_revdeps[task]) > 0 and self.rqdata.runq_revdeps[task].issubset(self.rq.scenequeue_covered): | 1212 | if len(self.rqdata.runq_revdeps[task]) > 0 and self.rqdata.runq_revdeps[task].issubset(self.rq.scenequeue_covered): |
1213 | found = True | 1213 | ok = True |
1214 | for revdep in self.rqdata.runq_revdeps[task]: | 1214 | for revdep in self.rqdata.runq_revdeps[task]: |
1215 | if self.rqdata.runq_fnid[task] != self.rqdata.runq_fnid[revdep]: | 1215 | if self.rqdata.runq_fnid[task] != self.rqdata.runq_fnid[revdep]: |
1216 | found = False | 1216 | ok = False |
1217 | break | 1217 | break |
1218 | if found: | 1218 | if ok: |
1219 | found = True | ||
1219 | self.rq.scenequeue_covered.add(task) | 1220 | self.rq.scenequeue_covered.add(task) |
1220 | 1221 | ||
1221 | logger.debug(1, 'Skip list (pre setsceneverify) %s', sorted(self.rq.scenequeue_covered)) | 1222 | logger.debug(1, 'Skip list (pre setsceneverify) %s', sorted(self.rq.scenequeue_covered)) |