summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/runqueue.py12
1 files changed, 7 insertions, 5 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 9acad7af8e..3bcbaee12a 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -133,7 +133,7 @@ class RunQueueScheduler(object):
133 133
134 self.prio_map = [self.rqdata.runtaskentries.keys()] 134 self.prio_map = [self.rqdata.runtaskentries.keys()]
135 135
136 self.buildable = [] 136 self.buildable = set()
137 self.skip_maxthread = {} 137 self.skip_maxthread = {}
138 self.stamps = {} 138 self.stamps = {}
139 for tid in self.rqdata.runtaskentries: 139 for tid in self.rqdata.runtaskentries:
@@ -148,8 +148,10 @@ class RunQueueScheduler(object):
148 """ 148 """
149 Return the id of the first task we find that is buildable 149 Return the id of the first task we find that is buildable
150 """ 150 """
151 self.buildable = [x for x in self.buildable if x not in self.rq.runq_running] 151 buildable = set(self.buildable)
152 buildable = [x for x in self.buildable if (x in self.rq.tasks_covered or x in self.rq.tasks_notcovered) and x not in self.rq.holdoff_tasks] 152 buildable.difference_update(self.rq.runq_running)
153 buildable.difference_update(self.rq.holdoff_tasks)
154 buildable.intersection_update(self.rq.tasks_covered | self.rq.tasks_notcovered)
153 if not buildable: 155 if not buildable:
154 return None 156 return None
155 157
@@ -167,7 +169,7 @@ class RunQueueScheduler(object):
167 skip_buildable[rtaskname] = 1 169 skip_buildable[rtaskname] = 1
168 170
169 if len(buildable) == 1: 171 if len(buildable) == 1:
170 tid = buildable[0] 172 tid = buildable.pop()
171 taskname = taskname_from_tid(tid) 173 taskname = taskname_from_tid(tid)
172 if taskname in skip_buildable and skip_buildable[taskname] >= int(self.skip_maxthread[taskname]): 174 if taskname in skip_buildable and skip_buildable[taskname] >= int(self.skip_maxthread[taskname]):
173 return None 175 return None
@@ -204,7 +206,7 @@ class RunQueueScheduler(object):
204 return self.next_buildable_task() 206 return self.next_buildable_task()
205 207
206 def newbuildable(self, task): 208 def newbuildable(self, task):
207 self.buildable.append(task) 209 self.buildable.add(task)
208 210
209 def removebuildable(self, task): 211 def removebuildable(self, task):
210 self.buildable.remove(task) 212 self.buildable.remove(task)