From 97e0beb393b9c3f2eeedc409bfc4924357d1c47e Mon Sep 17 00:00:00 2001 From: Joshua Lock Date: Thu, 30 Jun 2011 23:02:55 -0700 Subject: cooker: remove code duplication in non trivial functions 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. (Bitbake rev: 3e38ea4e5748473740821b6e10c8477c08ab45e2) Signed-off-by: Joshua Lock Signed-off-by: Richard Purdie --- bitbake/lib/bb/cooker.py | 56 +++++++++++------------------------------------- 1 file changed, 12 insertions(+), 44 deletions(-) diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index 9874f664b5..1b31cea880 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py @@ -327,9 +327,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) @@ -349,10 +351,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] @@ -579,48 +589,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 @@ -636,7 +604,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): -- cgit v1.2.3-54-g00ecf