diff options
author | Richard Purdie <rpurdie@linux.intel.com> | 2010-10-05 22:21:34 +0100 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2010-10-05 22:26:33 +0100 |
commit | 35d095c282aa27bb2c5b90b9ebafeaa4a3de907e (patch) | |
tree | e4e5b4732ffa2e58f2e93fc51d3bd7e101e5eedf /bitbake/lib/bb/runqueue.py | |
parent | 2d93cb0a0d70e6219379363cd80d375e30abebae (diff) | |
download | openembedded-core-35d095c282aa27bb2c5b90b9ebafeaa4a3de907e.tar.gz openembedded-core-35d095c282aa27bb2c5b90b9ebafeaa4a3de907e.tar.bz2 openembedded-core-35d095c282aa27bb2c5b90b9ebafeaa4a3de907e.zip |
bitbake/sstate: Implement a lookup function to speed up setscene processing
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'bitbake/lib/bb/runqueue.py')
-rw-r--r-- | bitbake/lib/bb/runqueue.py | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index dff4ff7f3e..b5167126ee 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py @@ -757,7 +757,8 @@ class RunQueue: self.cfgData = cfgData self.rqdata = RunQueueData(self, cooker, cfgData, dataCache, taskData, targets) - self.stamppolicy = bb.data.getVar("BB_STAMP_POLICY", cfgData, 1) or "perfile" + self.stamppolicy = bb.data.getVar("BB_STAMP_POLICY", cfgData, True) or "perfile" + self.hashvalidate = bb.data.getVar("BB_HASHCHECK_FUNCTION", cfgData, True) or None self.state = runQueuePrepare @@ -1326,6 +1327,29 @@ class RunQueueExecuteScenequeue(RunQueueExecute): if len(self.sq_revdeps[task]) == 0: self.runq_buildable[task] = 1 + if self.rq.hashvalidate: + sq_hash = [] + sq_hashfn = [] + sq_fn = [] + sq_task = [] + for task in range(len(self.sq_revdeps)): + realtask = self.rqdata.runq_setscene[task] + fn = self.rqdata.taskData.fn_index[self.rqdata.runq_fnid[realtask]] + sq_fn.append(fn) + sq_hashfn.append(self.rqdata.dataCache.hashfn[fn]) + sq_hash.append(self.rqdata.runq_hash[realtask]) + sq_task.append(self.rqdata.runq_task[realtask]) + + call = self.rq.hashvalidate + "(sq_fn, sq_task, sq_hash, sq_hashfn, d)" + locs = { "sq_fn" : sq_fn, "sq_task" : sq_task, "sq_hash" : sq_hash, "sq_hashfn" : sq_hashfn, "d" : self.cooker.configuration.data } + valid = bb.utils.better_eval(call, locs) + for task in range(len(self.sq_revdeps)): + if task not in valid: + bb.msg.debug(2, bb.msg.domain.RunQueue, "No package found so skipping setscene task %s" % (self.rqdata.get_user_idstring(task))) + self.task_failoutright(task) + + #print(str(valid)) + bb.msg.note(1, bb.msg.domain.RunQueue, "Executing setscene Tasks") self.rq.state = runQueueSceneRun |