From b296ae263ce12294a7264ed09b987acda73e4f67 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 28 Oct 2008 22:15:06 +0000 Subject: bitbake: Add tryaltconfigs option to disable the alternative configuration attempts and make the 'continue' more aggresive --- bitbake-dev/bin/bitbake | 3 +++ bitbake-dev/lib/bb/runqueue.py | 2 +- bitbake-dev/lib/bb/taskdata.py | 3 ++- bitbake/bin/bitbake | 3 +++ bitbake/doc/bitbake.1 | 3 +++ bitbake/lib/bb/cooker.py | 8 ++++---- bitbake/lib/bb/runqueue.py | 4 +++- bitbake/lib/bb/taskdata.py | 3 ++- 8 files changed, 21 insertions(+), 8 deletions(-) diff --git a/bitbake-dev/bin/bitbake b/bitbake-dev/bin/bitbake index 3e8782597..920877e4d 100755 --- a/bitbake-dev/bin/bitbake +++ b/bitbake-dev/bin/bitbake @@ -69,6 +69,9 @@ Default BBFILES are the .bb files in the current directory.""" ) parser.add_option( "-k", "--continue", help = "continue as much as possible after an error. While the target that failed, and those that depend on it, cannot be remade, the other dependencies of these targets can be processed all the same.", action = "store_false", dest = "abort", default = True ) + parser.add_option( "-a", "--tryaltconfigs", help = "continue with builds by trying to use alternative providers where possible.", + action = "store_true", dest = "tryaltconfigs", default = False ) + parser.add_option( "-f", "--force", help = "force run of specified cmd, regardless of stamp status", action = "store_true", dest = "force", default = False ) diff --git a/bitbake-dev/lib/bb/runqueue.py b/bitbake-dev/lib/bb/runqueue.py index 1c911ef0c..01452d2f3 100644 --- a/bitbake-dev/lib/bb/runqueue.py +++ b/bitbake-dev/lib/bb/runqueue.py @@ -869,7 +869,7 @@ class RunQueue: self.finish_runqueue() if self.state is runQueueFailed: - if self.taskData.abort: + if not self.taskData.tryaltconfigs: raise bb.runqueue.TaskFailure(self.failed_fnids) for fnid in self.failed_fnids: self.taskData.fail_fnid(fnid) diff --git a/bitbake-dev/lib/bb/taskdata.py b/bitbake-dev/lib/bb/taskdata.py index 566614ee6..782dfb0b7 100644 --- a/bitbake-dev/lib/bb/taskdata.py +++ b/bitbake-dev/lib/bb/taskdata.py @@ -30,7 +30,7 @@ class TaskData: """ BitBake Task Data implementation """ - def __init__(self, abort = True): + def __init__(self, abort = True, tryaltconfigs = False): self.build_names_index = [] self.run_names_index = [] self.fn_index = [] @@ -57,6 +57,7 @@ class TaskData: self.failed_fnids = [] self.abort = abort + self.tryaltconfigs = tryaltconfigs def getbuild_id(self, name): """ diff --git a/bitbake/bin/bitbake b/bitbake/bin/bitbake index 9a9b6d3bc..6a69e340f 100755 --- a/bitbake/bin/bitbake +++ b/bitbake/bin/bitbake @@ -60,6 +60,9 @@ Default BBFILES are the .bb files in the current directory.""" ) parser.add_option( "-k", "--continue", help = "continue as much as possible after an error. While the target that failed, and those that depend on it, cannot be remade, the other dependencies of these targets can be processed all the same.", action = "store_false", dest = "abort", default = True ) + parser.add_option( "-a", "--tryaltconfigs", help = "continue with builds by trying to use alternative providers where possible.", + action = "store_true", dest = "tryaltconfigs", default = False ) + parser.add_option( "-f", "--force", help = "force run of specified cmd, regardless of stamp status", action = "store_true", dest = "force", default = False ) diff --git a/bitbake/doc/bitbake.1 b/bitbake/doc/bitbake.1 index 01172d741..e687f0a42 100644 --- a/bitbake/doc/bitbake.1 +++ b/bitbake/doc/bitbake.1 @@ -54,6 +54,9 @@ continue as much as possible after an error. While the target that failed, and those that depend on it, cannot be remade, the other dependencies of these targets can be processed all the same. .TP +.B \-a, \-\-tryaltconfigs +continue with builds by trying to use alternative providers where possible. +.TP .B \-f, \-\-force force run of specified cmd, regardless of stamp status .TP diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index 7477ee6c6..c5d640da8 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py @@ -194,7 +194,7 @@ class BBCooker: bb.data.update_data(localdata) bb.data.expandKeys(localdata) - taskdata = bb.taskdata.TaskData(self.configuration.abort) + taskdata = bb.taskdata.TaskData(self.configuration.abort, self.configuration.tryaltconfigs) try: taskdata.add_provider(localdata, self.status, pkgs_to_build[0]) @@ -243,7 +243,7 @@ class BBCooker: localdata = data.createCopy(self.configuration.data) bb.data.update_data(localdata) bb.data.expandKeys(localdata) - taskdata = bb.taskdata.TaskData(self.configuration.abort) + taskdata = bb.taskdata.TaskData(self.configuration.abort, self.configuration.tryaltconfigs) runlist = [] try: @@ -500,7 +500,7 @@ class BBCooker: bb.build.del_stamp('do_%s' % self.configuration.cmd, self.configuration.data) # Setup taskdata structure - taskdata = bb.taskdata.TaskData(self.configuration.abort) + taskdata = bb.taskdata.TaskData(self.configuration.abort, self.configuration.tryaltconfigs) taskdata.add_provider(self.configuration.data, self.status, item) buildname = bb.data.getVar("BUILDNAME", self.configuration.data) @@ -534,7 +534,7 @@ class BBCooker: bb.data.update_data(localdata) bb.data.expandKeys(localdata) - taskdata = bb.taskdata.TaskData(self.configuration.abort) + taskdata = bb.taskdata.TaskData(self.configuration.abort, self.configuration.tryaltconfigs) runlist = [] try: diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py index 62bd10ae2..2df51de75 100644 --- a/bitbake/lib/bb/runqueue.py +++ b/bitbake/lib/bb/runqueue.py @@ -845,7 +845,7 @@ class RunQueue: failed_fnids = self.finish_runqueue() if len(failed_fnids) == 0: return failures - if self.taskData.abort: + if not self.taskData.tryaltconfigs: raise bb.runqueue.TaskFailure(failed_fnids) for fnid in failed_fnids: #print "Failure: %s %s %s" % (fnid, self.taskData.fn_index[fnid], self.runq_task[fnid]) @@ -970,6 +970,8 @@ class RunQueue: bb.msg.error(bb.msg.domain.RunQueue, "Task %s (%s) failed" % (task, self.get_user_idstring(task))) self.failed_fnids.append(self.runq_fnid[task]) self.stats.taskFailed() + if not self.taskData.abort: + continue break self.task_complete(task) self.stats.taskCompleted() diff --git a/bitbake/lib/bb/taskdata.py b/bitbake/lib/bb/taskdata.py index 566614ee6..782dfb0b7 100644 --- a/bitbake/lib/bb/taskdata.py +++ b/bitbake/lib/bb/taskdata.py @@ -30,7 +30,7 @@ class TaskData: """ BitBake Task Data implementation """ - def __init__(self, abort = True): + def __init__(self, abort = True, tryaltconfigs = False): self.build_names_index = [] self.run_names_index = [] self.fn_index = [] @@ -57,6 +57,7 @@ class TaskData: self.failed_fnids = [] self.abort = abort + self.tryaltconfigs = tryaltconfigs def getbuild_id(self, name): """ -- cgit v1.2.3