diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-06-27 11:04:06 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2012-06-28 12:37:52 +0100 |
commit | 3190cb83e2af195a464f669c5aa8aedbf795160e (patch) | |
tree | 90c31b817b21075836ddb76a668e503b382b629e /lib | |
parent | e6ff1d4bab43fdcd8af1230f1d54615f53c1978e (diff) | |
download | bitbake-3190cb83e2af195a464f669c5aa8aedbf795160e.tar.gz |
taskdata: Add gettask_id_fromfnid helper function
This is like gettask_id but doesn't require translation of fnid -> fn
first which the function then translates back. This gives a sizeable
performance improvement since a significant number of lookups are avoided.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/bb/runqueue.py | 12 | ||||
-rw-r--r-- | lib/bb/taskdata.py | 10 |
2 files changed, 14 insertions, 8 deletions
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py index 03766adfe..e09e8c808 100644 --- a/lib/bb/runqueue.py +++ b/lib/bb/runqueue.py @@ -406,9 +406,8 @@ class RunQueueData: depdata = taskData.build_targets[depid][0] if depdata is None: continue - dep = taskData.fn_index[depdata] for taskname in tasknames: - taskid = taskData.gettask_id(dep, taskname, False) + taskid = taskData.gettask_id_fromfnid(depdata, taskname) if taskid is not None: depends.append(taskid) @@ -419,9 +418,8 @@ class RunQueueData: depdata = taskData.run_targets[depid][0] if depdata is None: continue - dep = taskData.fn_index[depdata] for taskname in tasknames: - taskid = taskData.gettask_id(dep, taskname, False) + taskid = taskData.gettask_id_fromfnid(depdata, taskname) if taskid is not None: depends.append(taskid) @@ -469,8 +467,7 @@ class RunQueueData: # Won't be in build_targets if ASSUME_PROVIDED depdata = taskData.build_targets[depid][0] if depdata is not None: - dep = taskData.fn_index[depdata] - taskid = taskData.gettask_id(dep, idependtask, False) + taskid = taskData.gettask_id_fromfnid(depdata, idependtask) if taskid is None: bb.msg.fatal("RunQueue", "Task %s in %s depends upon non-existent task %s in %s" % (taskData.tasks_name[task], fn, idependtask, dep)) depends.append(taskid) @@ -482,8 +479,7 @@ class RunQueueData: # Won't be in run_targets if ASSUME_PROVIDED depdata = taskData.run_targets[depid][0] if depdata is not None: - dep = taskData.fn_index[depdata] - taskid = taskData.gettask_id(dep, idependtask, False) + taskid = taskData.gettask_id_fromfnid(depdata, idependtask) if taskid is None: bb.msg.fatal("RunQueue", "Task %s in %s rdepends upon non-existent task %s in %s" % (taskData.tasks_name[task], fn, idependtask, dep)) depends.append(taskid) diff --git a/lib/bb/taskdata.py b/lib/bb/taskdata.py index 8bc447c11..55cdde553 100644 --- a/lib/bb/taskdata.py +++ b/lib/bb/taskdata.py @@ -116,6 +116,16 @@ class TaskData: ids.append(self.tasks_lookup[fnid][task]) return ids + def gettask_id_fromfnid(self, fnid, task): + """ + Return an ID number for the task matching fnid and task. + """ + if fnid in self.tasks_lookup: + if task in self.tasks_lookup[fnid]: + return self.tasks_lookup[fnid][task] + + return None + def gettask_id(self, fn, task, create = True): """ Return an ID number for the task matching fn and task. |