diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | lib/bb/runqueue.py | 21 |
2 files changed, 19 insertions, 6 deletions
@@ -112,6 +112,10 @@ Changes in Bitbake 1.9.x: honours dependencies - Make fetcher timestamp updating non-fatal when permissions don't allow updates + - Add BB_SCHEDULER variable/option ("completion" or "speed") controlling + the way bitbake schedules tasks + - Add BB_STAMP_POLICY variable/option ("perfile" or "full") controlling + how extensively stamps are looked at for validity Changes in Bitbake 1.8.0: - Release 1.7.x as a stable series diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py index 1ac034331..a516fcfcf 100644 --- a/lib/bb/runqueue.py +++ b/lib/bb/runqueue.py @@ -165,8 +165,10 @@ class RunQueue: self.cfgData = cfgData self.targets = targets - self.number_tasks = int(bb.data.getVar("BB_NUMBER_THREADS", cfgData) or 1) - self.multi_provider_whitelist = (bb.data.getVar("MULTI_PROVIDER_WHITELIST", cfgData) or "").split() + self.number_tasks = int(bb.data.getVar("BB_NUMBER_THREADS", cfgData, 1) or 1) + self.multi_provider_whitelist = (bb.data.getVar("MULTI_PROVIDER_WHITELIST", cfgData, 1) or "").split() + self.scheduler = bb.data.getVar("BB_SCHEDULER", cfgData, 1) or "speed" + self.stamppolicy = bb.data.getVar("BB_STAMP_POLICY", cfgData, 1) or "perfile" def reset_runqueue(self): self.runq_fnid = [] @@ -631,10 +633,11 @@ class RunQueue: self.runq_weight = self.calculate_task_weights(endpoints) # Decide what order to execute the tasks in, pick a scheduler - # FIXME - Allow user selection #self.sched = RunQueueScheduler(self) - self.sched = RunQueueSchedulerSpeed(self) - #self.sched = RunQueueSchedulerCompletion(self) + if self.scheduler == "completion": + self.sched = RunQueueSchedulerCompletion(self) + else: + self.sched = RunQueueSchedulerSpeed(self) # Sanity Check - Check for multiple tasks building the same provider prov_list = {} @@ -666,6 +669,12 @@ class RunQueue: current = [] notcurrent = [] buildable = [] + + if self.stamppolicy == "perfile": + fulldeptree = False + else: + fulldeptree = True + for task in range(len(self.runq_fnid)): unchecked[task] = "" if len(self.runq_depends[task]) == 0: @@ -704,7 +713,7 @@ class RunQueue: fn2 = self.taskData.fn_index[self.runq_fnid[dep]] taskname2 = self.runq_task[dep] stampfile2 = "%s.%s" % (self.dataCache.stamp[fn2], taskname2) - if fn == fn2: + if fulldeptree or fn == fn2: if dep in notcurrent: iscurrent = False else: |