diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index 58137f6d62..46e5560e83 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py @@ -581,7 +581,7 @@ class BBCooker: if pkgs_to_build[0] in set(ignore.split()): bb.fatal("%s is in ASSUME_PROVIDED" % pkgs_to_build[0]) - taskdata, runlist, pkgs_to_build = self.buildTaskData(pkgs_to_build, None, self.configuration.abort) + taskdata, runlist, pkgs_to_build = self.buildTaskData(pkgs_to_build, None, self.configuration.abort, allowincomplete=True) targetid = taskdata.getbuild_id(pkgs_to_build[0]) fnid = taskdata.build_targets[targetid][0] @@ -614,7 +614,7 @@ class BBCooker: logger.plain("\npython %s () {\n%s}\n", e, envdata.getVar(e, True)) - def buildTaskData(self, pkgs_to_build, task, abort): + def buildTaskData(self, pkgs_to_build, task, abort, allowincomplete=False): """ Prepare a runqueue and taskdata object for iteration over pkgs_to_build """ @@ -629,7 +629,7 @@ class BBCooker: localdata = data.createCopy(self.data) bb.data.update_data(localdata) bb.data.expandKeys(localdata) - taskdata = bb.taskdata.TaskData(abort, skiplist=self.skiplist) + taskdata = bb.taskdata.TaskData(abort, skiplist=self.skiplist, allowincomplete=allowincomplete) current = 0 runlist = [] @@ -654,7 +654,7 @@ class BBCooker: # We set abort to False here to prevent unbuildable targets raising # an exception when we're just generating data - taskdata, runlist, pkgs_to_build = self.buildTaskData(pkgs_to_build, task, False) + taskdata, runlist, pkgs_to_build = self.buildTaskData(pkgs_to_build, task, False, allowincomplete=True) return runlist, taskdata diff --git a/bitbake/lib/bb/taskdata.py b/bitbake/lib/bb/taskdata.py index af72a1fb09..ca58e17922 100644 --- a/bitbake/lib/bb/taskdata.py +++ b/bitbake/lib/bb/taskdata.py @@ -41,7 +41,7 @@ class TaskData: """ BitBake Task Data implementation """ - def __init__(self, abort = True, tryaltconfigs = False, skiplist = None): + def __init__(self, abort = True, tryaltconfigs = False, skiplist = None, allowincomplete = False): self.build_names_index = [] self.run_names_index = [] self.fn_index = [] @@ -70,6 +70,7 @@ class TaskData: self.abort = abort self.tryaltconfigs = tryaltconfigs + self.allowincomplete = allowincomplete self.skiplist = skiplist @@ -594,9 +595,10 @@ class TaskData: added = added + 1 except bb.providers.NoProvider: targetid = self.getbuild_id(target) - if self.abort and targetid in self.external_targets: + if self.abort and targetid in self.external_targets and not self.allowincomplete: raise - self.remove_buildtarget(targetid) + if not self.allowincomplete: + self.remove_buildtarget(targetid) for target in self.get_unresolved_run_targets(dataCache): try: self.add_rprovider(cfgData, dataCache, target)