diff options
author | Marius Avram <marius.avram@intel.com> | 2014-02-18 16:39:24 +0200 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-03-09 12:23:58 -0700 |
commit | 1660519e5ceca873aaab0eb3aac6495be5f80dc2 (patch) | |
tree | 568c6c585a49139f3d306e5666764dd52e1fd535 | |
parent | 06f9059abc405197584acf189fac374047af395c (diff) | |
download | ast2050-yocto-poky-1660519e5ceca873aaab0eb3aac6495be5f80dc2.zip ast2050-yocto-poky-1660519e5ceca873aaab0eb3aac6495be5f80dc2.tar.gz |
bitbake: bb/ui: store_dependency_information optimization
This optimization is in support of the bug #5485. The function called
at the beginning of every build: store_dependency_information was taking
approximately 20sec and it was delaying the arrival of events from the
event queue. The change minimizes the calls to _save_a_task(),
reducing the time to half.
(Bitbake rev: b86fd2be40303d886fdb9ad3009355584d285acc)
Signed-off-by: Marius Avram <marius.avram@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | bitbake/lib/bb/ui/buildinfohelper.py | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/bitbake/lib/bb/ui/buildinfohelper.py b/bitbake/lib/bb/ui/buildinfohelper.py index a0f1095..54f6c4e 100644 --- a/bitbake/lib/bb/ui/buildinfohelper.py +++ b/bitbake/lib/bb/ui/buildinfohelper.py @@ -612,11 +612,21 @@ class BuildInfoHelper(object): task_info['task_name'] = taskname task_obj = self.orm_wrapper.get_update_task_object(task_info) return task_obj + + # create tasks + tasks = {} + for taskdesc in event._depgraph['tdepends']: + tasks[taskdesc] = _save_a_task(taskdesc) + # create dependencies between tasks for taskdesc in event._depgraph['tdepends']: - target = _save_a_task(taskdesc) - for taskdesc1 in event._depgraph['tdepends'][taskdesc]: - dep = _save_a_task(taskdesc1) + target = tasks[taskdesc] + for taskdep in event._depgraph['tdepends'][taskdesc]: + if taskdep not in tasks: + # Fetch tasks info is not collected previously + dep = _save_a_task(taskdep) + else: + dep = tasks[taskdep] Task_Dependency.objects.get_or_create( task = target, depends_on = dep ) def store_build_package_information(self, event): |