bitbake: cooker/providers: Only add target to world build if task exists

A "bitbake world -c unpack" currently breaks as not all tasks have an
unpack task. This change allows addition of world targets only if the
specified task exists which makes certain commands possible when otherwise
you just get errors which can't easily be avoided.

(Bitbake rev: ca4f5e6d01b5c8cf315f59bc86194d63c0d3d042)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2016-09-21 22:31:57 +01:00
parent 37d5307db0
commit 88df0e4d5d
2 changed files with 7 additions and 4 deletions

View File

@ -658,7 +658,7 @@ class BBCooker:
if task is None:
task = self.configuration.cmd
fulltargetlist = self.checkPackages(pkgs_to_build)
fulltargetlist = self.checkPackages(pkgs_to_build, task)
taskdata = {}
localdata = {}
@ -1618,7 +1618,7 @@ class BBCooker:
return True
def checkPackages(self, pkgs_to_build):
def checkPackages(self, pkgs_to_build, task=None):
# Return a copy, don't modify the original
pkgs_to_build = pkgs_to_build[:]
@ -1634,7 +1634,7 @@ class BBCooker:
if 'world' in pkgs_to_build:
pkgs_to_build.remove('world')
for mc in self.multiconfigs:
bb.providers.buildWorldTargetList(self.recipecaches[mc])
bb.providers.buildWorldTargetList(self.recipecaches[mc], task)
for t in self.recipecaches[mc].world_target:
if mc:
t = "multiconfig:" + mc + ":" + t

View File

@ -402,7 +402,7 @@ def getRuntimeProviders(dataCache, rdepend):
return rproviders
def buildWorldTargetList(dataCache):
def buildWorldTargetList(dataCache, task=None):
"""
Build package list for "bitbake world"
"""
@ -413,6 +413,9 @@ def buildWorldTargetList(dataCache):
for f in dataCache.possible_world:
terminal = True
pn = dataCache.pkg_fn[f]
if task and task not in dataCache.task_deps[f]['tasks']:
logger.debug(2, "World build skipping %s as task %s doesn't exist", f, task)
terminal = False
for p in dataCache.pn_provides[pn]:
if p.startswith('virtual/'):