summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--lib/bb/runqueue.py21
2 files changed, 19 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 1f77e7105..a83b13f57 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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: