aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2016-09-21 22:31:57 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-09-21 22:33:47 +0100
commitca4f5e6d01b5c8cf315f59bc86194d63c0d3d042 (patch)
tree71b7b18e80f54709979a51910b06447bb4c29dc7
parentc3873346c6fa1021a1d63bddd9b898a77c618432 (diff)
downloadbitbake-ca4f5e6d01b5c8cf315f59bc86194d63c0d3d042.tar.gz
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. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/cooker.py6
-rw-r--r--lib/bb/providers.py5
2 files changed, 7 insertions, 4 deletions
diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index f3252640c..934072c44 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -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
diff --git a/lib/bb/providers.py b/lib/bb/providers.py
index 80701b281..db02a0b0d 100644
--- a/lib/bb/providers.py
+++ b/lib/bb/providers.py
@@ -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/'):