@@ -118,6 +118,9 @@ Default BBFILES are the .bb files in the current directory.""" )
parser.add_option( "-s", "--show-versions", help = "show current and preferred versions of all packages",
action = "store_true", dest = "show_versions", default = False )
+ parser.add_option( "--show-depends", help = "show dependendcies of the specified packages",
+ action = "store_true", dest = "show_depends", default = False )
+
parser.add_option( "-e", "--environment", help = "show the global or per-package environment (this is what used to be bbread)",
action = "store_true", dest = "show_environment", default = False )
@@ -196,6 +196,17 @@ class CommandsAsync:
command.finishAsyncCommand()
generateDotGraph.needcache = True
+ def showDepends(self, command, params):
+ """
+ Dump dependency names to stdout
+ """
+ pkgs_to_build = params[0]
+ task = params[1]
+
+ command.cooker.showDepends(pkgs_to_build, task)
+ command.finishAsyncCommand()
+ showDepends.needcache = True
+
def showVersions(self, command, params):
"""
Show the currently selected versions
@@ -158,6 +158,12 @@ class BBCooker:
else:
self.commandlineAction = None
bb.error("Please specify a package name for dependency graph generation.")
+ elif self.configuration.show_depends:
+ if self.configuration.pkgs_to_build:
+ self.commandlineAction = ["showDepends", self.configuration.pkgs_to_build, self.configuration.cmd]
+ else:
+ self.commandlineAction = None
+ bb.error("Please specify a package name for dependency graph generation.")
else:
if self.configuration.pkgs_to_build:
self.commandlineAction = ["buildTargets", self.configuration.pkgs_to_build, self.configuration.cmd]
@@ -398,6 +404,14 @@ class BBCooker:
depgraph = self.generateDepTreeData(pkgs_to_build, task)
bb.event.fire(bb.event.DepTreeGenerated(depgraph), self.configuration.data)
+ def showDepends(self, pkgs_to_build, task):
+ """
+ Dump dependency list of a pkgs_to_build.
+ """
+ depgraph = self.generateDepTreeData(pkgs_to_build, task)
+ for pn in depgraph["pn"]:
+ print pn
+
def generateDotGraphFiles(self, pkgs_to_build, task):
"""
Create a task dependency graph of pkgs_to_build.
--
1.7.3.4
From 42fcae0761f680338bfc5baaf29a2911bf940ee3 Mon Sep 17 00:00:00 2001
From: Paul Sokolovsky <pfalcon@users.sourceforge.net>
Date: Thu, 16 Dec 2010 16:18:15 +0200
Subject: [PATCH 3/3] Record which ASSUME_PROVIDED PNs were looked up, dump them with --show-depends.
Signed-off-by: Paul Sokolovsky <pfalcon@users.sourceforge.net>
---
lib/bb/cache.py | 1 +
lib/bb/cooker.py | 7 ++++++-
lib/bb/taskdata.py | 2 ++
3 files changed, 9 insertions(+), 1 deletions(-)
@@ -529,6 +529,7 @@ class CacheData:
(set elsewhere)
"""
self.ignored_dependencies = []
+ self.ignored_dependencies_hit = set()
self.world_target = set()
self.bbfile_priority = {}
self.bbfile_config_priorities = []
@@ -337,6 +337,7 @@ class BBCooker:
depend_tree["depends"] = {}
depend_tree["tdepends"] = {}
depend_tree["pn"] = {}
+ depend_tree["ignored-pn"] = set()
depend_tree["rdepends-pn"] = {}
depend_tree["packages"] = {}
depend_tree["rdepends-pkg"] = {}
@@ -393,6 +394,7 @@ class BBCooker:
depend_tree["packages"][package]["filename"] = fn
depend_tree["packages"][package]["version"] = version
+ depend_tree["ignored-pn"] = self.status.ignored_dependencies_hit
return depend_tree
@@ -409,7 +411,10 @@ class BBCooker:
Dump dependency list of a pkgs_to_build.
"""
depgraph = self.generateDepTreeData(pkgs_to_build, task)
- for pn in depgraph["pn"]:
+ for pn in sorted(depgraph["pn"]):
+ print pn
+ print "-- Dependencies ignored per ASSUME_PROVIDED: --"
+ for pn in sorted(depgraph["ignored-pn"]):
print pn
def generateDotGraphFiles(self, pkgs_to_build, task):
@@ -277,6 +277,7 @@ class TaskData:
unresolved = []
for target in self.build_names_index:
if re_match_strings(target, dataCache.ignored_dependencies):
+ dataCache.ignored_dependencies_hit.add(target)
continue
if self.build_names_index.index(target) in self.failed_deps:
continue
@@ -292,6 +293,7 @@ class TaskData:
unresolved = []
for target in self.run_names_index:
if re_match_strings(target, dataCache.ignored_dependencies):
+ dataCache.ignored_dependencies_hit.add(target)
continue
if self.run_names_index.index(target) in self.failed_rdeps:
continue