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/'):