mirror of
https://git.yoctoproject.org/poky
synced 2026-09-15 06:49:33 +02:00
bitbake: implement command to get all possible targets and their dependencies
Add a new command generateTargetsTree() which returns a dependency tree of possible targets (tasks and recipes) as well as their dependency information. Optional parameter 'klass' also ensures any recipes which inherit the specified class path (i.e. 'classes/image.bbclass') are included in the model Signed-off-by: Joshua Lock <josh@linux.intel.com>
This commit is contained in:
committed by
Richard Purdie
parent
920c402342
commit
1b3eb0c35f
@@ -222,6 +222,16 @@ class CommandsAsync:
|
|||||||
command.finishAsyncCommand()
|
command.finishAsyncCommand()
|
||||||
generateDotGraph.needcache = True
|
generateDotGraph.needcache = True
|
||||||
|
|
||||||
|
def generateTargetsTree(self, command, params):
|
||||||
|
"""
|
||||||
|
Generate a tree of all buildable targets.
|
||||||
|
"""
|
||||||
|
klass = params[0]
|
||||||
|
|
||||||
|
command.cooker.generateTargetsTree(klass)
|
||||||
|
command.finishAsyncCommand()
|
||||||
|
generateTargetsTree.needcache = True
|
||||||
|
|
||||||
def showVersions(self, command, params):
|
def showVersions(self, command, params):
|
||||||
"""
|
"""
|
||||||
Show the currently selected versions
|
Show the currently selected versions
|
||||||
|
|||||||
@@ -430,6 +430,31 @@ class BBCooker:
|
|||||||
if not regex in matched:
|
if not regex in matched:
|
||||||
collectlog.warn("No bb files matched BBFILE_PATTERN_%s '%s'" % (collection, pattern))
|
collectlog.warn("No bb files matched BBFILE_PATTERN_%s '%s'" % (collection, pattern))
|
||||||
|
|
||||||
|
def checkInheritsClass(self, klass):
|
||||||
|
pkg_list = []
|
||||||
|
for pfn in self.status.pkg_fn:
|
||||||
|
inherits = self.status.inherits.get(pfn, None)
|
||||||
|
if inherits and inherits.count(klass) > 0:
|
||||||
|
pkg_list.append(self.status.pkg_fn[pfn])
|
||||||
|
|
||||||
|
return pkg_list
|
||||||
|
|
||||||
|
def generateTargetsTree(self, klass):
|
||||||
|
"""
|
||||||
|
Generate a dependency tree of buildable targets
|
||||||
|
Generate an event with the result
|
||||||
|
"""
|
||||||
|
pkgs = ['world']
|
||||||
|
# if inherited_class passed ensure all recipes which inherit the
|
||||||
|
# specified class are included in pkgs
|
||||||
|
if klass:
|
||||||
|
extra_pkgs = self.checkInheritsClass(klass)
|
||||||
|
pkgs = pkgs + extra_pkgs
|
||||||
|
|
||||||
|
# generate a dependency tree for all our packages
|
||||||
|
tree = self.generateDepTreeData(pkgs, 'build')
|
||||||
|
bb.event.fire(bb.event.TargetsTreeGenerated(tree), self.configuration.data)
|
||||||
|
|
||||||
def buildWorldTargetList(self):
|
def buildWorldTargetList(self):
|
||||||
"""
|
"""
|
||||||
Build package list for "bitbake world"
|
Build package list for "bitbake world"
|
||||||
|
|||||||
@@ -350,6 +350,15 @@ class DepTreeGenerated(Event):
|
|||||||
Event.__init__(self)
|
Event.__init__(self)
|
||||||
self._depgraph = depgraph
|
self._depgraph = depgraph
|
||||||
|
|
||||||
|
class TargetsTreeGenerated(Event):
|
||||||
|
"""
|
||||||
|
Event when a set of buildable targets has been generated
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, model):
|
||||||
|
Event.__init__(self)
|
||||||
|
self._model = model
|
||||||
|
|
||||||
class MsgBase(Event):
|
class MsgBase(Event):
|
||||||
"""Base class for messages"""
|
"""Base class for messages"""
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user