From 88df0e4d5d09dadba0cb1e3139b19f9f2866d499 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Wed, 21 Sep 2016 22:31:57 +0100 Subject: [PATCH] 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 --- bitbake/lib/bb/cooker.py | 6 +++--- bitbake/lib/bb/providers.py | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index f3252640cb..934072c44f 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/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/bitbake/lib/bb/providers.py b/bitbake/lib/bb/providers.py index 80701b2811..db02a0b0de 100644 --- a/bitbake/lib/bb/providers.py +++ b/bitbake/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/'):