summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Larson <chris_larson@mentor.com>2010-07-23 14:32:14 -0700
committerRichard Purdie <rpurdie@linux.intel.com>2011-01-04 14:46:32 +0000
commitebe3850beebb233b86bade9b0b93ed23bfd60e04 (patch)
tree121748bb81310cd0b82c326935d881511a345123
parent0d1034d2ea5913e14317c68908e27640d1d8ae36 (diff)
downloadopenembedded-core-ebe3850beebb233b86bade9b0b93ed23bfd60e04.tar.gz
openembedded-core-ebe3850beebb233b86bade9b0b93ed23bfd60e04.tar.bz2
openembedded-core-ebe3850beebb233b86bade9b0b93ed23bfd60e04.zip
Split out 'find next buildable task' into a separate generator function
It needs to be a generator, so scheduler subclasses have the option to skip buildable tasks and return a later one. (Bitbake rev: a8c61e41bc6277222e4cde667ad0b24bd1597aa0) Signed-off-by: Chris Larson <chris_larson@mentor.com> Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
-rw-r--r--bitbake/lib/bb/runqueue.py20
1 files changed, 13 insertions, 7 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 3a630e02a2..be873ff7dc 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -92,17 +92,23 @@ class RunQueueScheduler(object):
self.prio_map = []
self.prio_map.extend(range(numTasks))
- def next(self):
+ def next_buildable_tasks(self):
"""
Return the id of the first task we find that is buildable
"""
+ for tasknum in range(len(self.rqdata.runq_fnid)):
+ taskid = self.prio_map[tasknum]
+ if self.rq.runq_running[taskid] == 1:
+ continue
+ if self.rq.runq_buildable[taskid] == 1:
+ yield taskid
+
+ def next(self):
+ """
+ Return the id of the task we should build next
+ """
if self.rq.stats.active < self.rq.number_tasks:
- for task1 in range(len(self.rqdata.runq_fnid)):
- task = self.prio_map[task1]
- if self.rq.runq_running[task] == 1:
- continue
- if self.rq.runq_buildable[task] == 1:
- return task
+ return next(self.next_buildable_tasks(), None)
class RunQueueSchedulerSpeed(RunQueueScheduler):
"""