diff options
author | Chris Larson <chris_larson@mentor.com> | 2010-07-23 14:32:14 -0700 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2011-01-04 14:46:32 +0000 |
commit | ebe3850beebb233b86bade9b0b93ed23bfd60e04 (patch) | |
tree | 121748bb81310cd0b82c326935d881511a345123 | |
parent | 0d1034d2ea5913e14317c68908e27640d1d8ae36 (diff) | |
download | openembedded-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.py | 20 |
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): """ |