summaryrefslogtreecommitdiffstats
path: root/bitbake/lib
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2012-06-27 11:04:06 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-06-28 16:32:57 +0100
commitedfb2ba32c5075e2df338a549021c634659f3225 (patch)
treed70d1d5e36362ae3c14ca7e05f86df11e67b5a73 /bitbake/lib
parentd498bd6bf34c6dd65e24ec32d425742f42152cae (diff)
downloadpoky-edfb2ba32c5075e2df338a549021c634659f3225.tar.gz
bitbake: 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. (Bitbake rev: 3190cb83e2af195a464f669c5aa8aedbf795160e) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib')
-rw-r--r--bitbake/lib/bb/runqueue.py12
-rw-r--r--bitbake/lib/bb/taskdata.py10
2 files changed, 14 insertions, 8 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 03766adfea..e09e8c8080 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -406,9 +406,8 @@ class RunQueueData:
406 depdata = taskData.build_targets[depid][0] 406 depdata = taskData.build_targets[depid][0]
407 if depdata is None: 407 if depdata is None:
408 continue 408 continue
409 dep = taskData.fn_index[depdata]
410 for taskname in tasknames: 409 for taskname in tasknames:
411 taskid = taskData.gettask_id(dep, taskname, False) 410 taskid = taskData.gettask_id_fromfnid(depdata, taskname)
412 if taskid is not None: 411 if taskid is not None:
413 depends.append(taskid) 412 depends.append(taskid)
414 413
@@ -419,9 +418,8 @@ class RunQueueData:
419 depdata = taskData.run_targets[depid][0] 418 depdata = taskData.run_targets[depid][0]
420 if depdata is None: 419 if depdata is None:
421 continue 420 continue
422 dep = taskData.fn_index[depdata]
423 for taskname in tasknames: 421 for taskname in tasknames:
424 taskid = taskData.gettask_id(dep, taskname, False) 422 taskid = taskData.gettask_id_fromfnid(depdata, taskname)
425 if taskid is not None: 423 if taskid is not None:
426 depends.append(taskid) 424 depends.append(taskid)
427 425
@@ -469,8 +467,7 @@ class RunQueueData:
469 # Won't be in build_targets if ASSUME_PROVIDED 467 # Won't be in build_targets if ASSUME_PROVIDED
470 depdata = taskData.build_targets[depid][0] 468 depdata = taskData.build_targets[depid][0]
471 if depdata is not None: 469 if depdata is not None:
472 dep = taskData.fn_index[depdata] 470 taskid = taskData.gettask_id_fromfnid(depdata, idependtask)
473 taskid = taskData.gettask_id(dep, idependtask, False)
474 if taskid is None: 471 if taskid is None:
475 bb.msg.fatal("RunQueue", "Task %s in %s depends upon non-existent task %s in %s" % (taskData.tasks_name[task], fn, idependtask, dep)) 472 bb.msg.fatal("RunQueue", "Task %s in %s depends upon non-existent task %s in %s" % (taskData.tasks_name[task], fn, idependtask, dep))
476 depends.append(taskid) 473 depends.append(taskid)
@@ -482,8 +479,7 @@ class RunQueueData:
482 # Won't be in run_targets if ASSUME_PROVIDED 479 # Won't be in run_targets if ASSUME_PROVIDED
483 depdata = taskData.run_targets[depid][0] 480 depdata = taskData.run_targets[depid][0]
484 if depdata is not None: 481 if depdata is not None:
485 dep = taskData.fn_index[depdata] 482 taskid = taskData.gettask_id_fromfnid(depdata, idependtask)
486 taskid = taskData.gettask_id(dep, idependtask, False)
487 if taskid is None: 483 if taskid is None:
488 bb.msg.fatal("RunQueue", "Task %s in %s rdepends upon non-existent task %s in %s" % (taskData.tasks_name[task], fn, idependtask, dep)) 484 bb.msg.fatal("RunQueue", "Task %s in %s rdepends upon non-existent task %s in %s" % (taskData.tasks_name[task], fn, idependtask, dep))
489 depends.append(taskid) 485 depends.append(taskid)
diff --git a/bitbake/lib/bb/taskdata.py b/bitbake/lib/bb/taskdata.py
index 8bc447c11c..55cdde553b 100644
--- a/bitbake/lib/bb/taskdata.py
+++ b/bitbake/lib/bb/taskdata.py
@@ -116,6 +116,16 @@ class TaskData:
116 ids.append(self.tasks_lookup[fnid][task]) 116 ids.append(self.tasks_lookup[fnid][task])
117 return ids 117 return ids
118 118
119 def gettask_id_fromfnid(self, fnid, task):
120 """
121 Return an ID number for the task matching fnid and task.
122 """
123 if fnid in self.tasks_lookup:
124 if task in self.tasks_lookup[fnid]:
125 return self.tasks_lookup[fnid][task]
126
127 return None
128
119 def gettask_id(self, fn, task, create = True): 129 def gettask_id(self, fn, task, create = True):
120 """ 130 """
121 Return an ID number for the task matching fn and task. 131 Return an ID number for the task matching fn and task.