[bitbake-devel] [PATCH 09/10] cooker: remove code duplication in non trivial functions
Joshua Lock
josh at linux.intel.com
Fri Jul 1 06:02:55 UTC 2011
The generateTargetsTreeData() and generateDepTreeData() functions perform
are essentially the same function only creating slightly different data
structures. Instead of duplicating non-trivial code drop
generateTargetsTreeData and instead have an optional boolean argument which
defaults to False for generateDepTreeData() which has it include the extra
fields required for the targets tree.
Signed-off-by: Joshua Lock <josh at linux.intel.com>
---
lib/bb/cooker.py | 56 +++++++++++------------------------------------------
1 files changed, 12 insertions(+), 44 deletions(-)
diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index 6682551..3f6edc4 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -325,9 +325,11 @@ class BBCooker:
return taskdata, rq
- def generateDepTreeData(self, pkgs_to_build, task):
+ def generateDepTreeData(self, pkgs_to_build, task, more_meta=False):
"""
Create a dependency tree of pkgs_to_build, returning the data.
+ When more_meta is set to True include summary, license and group
+ information in the returned tree.
"""
taskdata, rq = self.prepareTreeData(pkgs_to_build, task)
@@ -347,10 +349,18 @@ class BBCooker:
fn = taskdata.fn_index[fnid]
pn = self.status.pkg_fn[fn]
version = "%s:%s-%s" % self.status.pkg_pepvpr[fn]
+ if more_meta:
+ summary = self.status.summary[fn]
+ lic = self.status.license[fn]
+ section = self.status.section[fn]
if pn not in depend_tree["pn"]:
depend_tree["pn"][pn] = {}
depend_tree["pn"][pn]["filename"] = fn
depend_tree["pn"][pn]["version"] = version
+ if more_meta:
+ depend_tree["pn"][pn]["summary"] = summary
+ depend_tree["pn"][pn]["license"] = lic
+ depend_tree["pn"][pn]["section"] = section
for dep in rq.rqdata.runq_depends[task]:
depfn = taskdata.fn_index[rq.rqdata.runq_fnid[dep]]
deppn = self.status.pkg_fn[depfn]
@@ -577,48 +587,6 @@ class BBCooker:
return pkg_list
- def generateTargetsTreeData(self, pkgs_to_build, task):
- """
- Create a tree of pkgs_to_build metadata, returning the data.
- """
- taskdata, rq = self.prepareTreeData(pkgs_to_build, task)
-
- seen_fnids = []
- target_tree = {}
- target_tree["depends"] = {}
- target_tree["pn"] = {}
- target_tree["rdepends-pn"] = {}
-
- for task in xrange(len(rq.rqdata.runq_fnid)):
- taskname = rq.rqdata.runq_task[task]
- fnid = rq.rqdata.runq_fnid[task]
- fn = taskdata.fn_index[fnid]
- pn = self.status.pkg_fn[fn]
- version = "%s:%s-%s" % self.status.pkg_pepvpr[fn]
- summary = self.status.summary[fn]
- license = self.status.license[fn]
- section = self.status.section[fn]
- if pn not in target_tree["pn"]:
- target_tree["pn"][pn] = {}
- target_tree["pn"][pn]["filename"] = fn
- target_tree["pn"][pn]["version"] = version
- target_tree["pn"][pn]["summary"] = summary
- target_tree["pn"][pn]["license"] = license
- target_tree["pn"][pn]["section"] = section
- if fnid not in seen_fnids:
- seen_fnids.append(fnid)
- packages = []
-
- target_tree["depends"][pn] = []
- for dep in taskdata.depids[fnid]:
- target_tree["depends"][pn].append(taskdata.build_names_index[dep])
-
- target_tree["rdepends-pn"][pn] = []
- for rdep in taskdata.rdepids[fnid]:
- target_tree["rdepends-pn"][pn].append(taskdata.run_names_index[rdep])
-
- return target_tree
-
def generateTargetsTree(self, klass=None, pkgs=[]):
"""
Generate a dependency tree of buildable targets
@@ -634,7 +602,7 @@ class BBCooker:
pkgs = pkgs + extra_pkgs
# generate a dependency tree for all our packages
- tree = self.generateTargetsTreeData(pkgs, 'build')
+ tree = self.generateDepTreeData(pkgs, 'build', more_meta=True)
bb.event.fire(bb.event.TargetsTreeGenerated(tree), self.configuration.data)
def buildWorldTargetList(self):
--
1.7.5.4
More information about the bitbake-devel
mailing list