diff options
author | Richard Purdie <rpurdie@linux.intel.com> | 2008-03-06 10:35:04 +0000 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2008-03-06 10:35:04 +0000 |
commit | 0dc5e80d24b1ebc01b9ad279e7d4287a48650b4a (patch) | |
tree | 33a7d6d2c551b8a9e2f42a369265fde171468a58 /lib/bb | |
parent | b90175e1b53cffd4bb02a71a63453af3f14d4065 (diff) | |
download | bitbake-0dc5e80d24b1ebc01b9ad279e7d4287a48650b4a.tar.gz |
taskdata.py: When handling build target failures make sure idepends are checked and failed where needed. Fixes --continue mode crashes.
Diffstat (limited to 'lib/bb')
-rw-r--r-- | lib/bb/runqueue.py | 24 | ||||
-rw-r--r-- | lib/bb/taskdata.py | 10 |
2 files changed, 17 insertions, 17 deletions
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py index a516fcfcf..2a3da797e 100644 --- a/lib/bb/runqueue.py +++ b/lib/bb/runqueue.py @@ -402,14 +402,13 @@ class RunQueue: # e.g. do_sometask[depends] = "targetname:do_someothertask" # (makes sure sometask runs after targetname's someothertask) idepends = taskData.tasks_idepends[task] - for idepend in idepends: - depid = int(idepend.split(":")[0]) + for (depid, idependtask) in idepends: if depid in taskData.build_targets: # Won't be in build_targets if ASSUME_PROVIDED depdata = taskData.build_targets[depid][0] if depdata is not None: dep = taskData.fn_index[depdata] - depends.append(taskData.gettask_id(dep, idepend.split(":")[1])) + depends.append(taskData.gettask_id(dep, idependtask)) def add_recursive_build(depid, depfnid): """ @@ -440,10 +439,9 @@ class RunQueue: for nextdepid in taskData.rdepids[fnid]: if nextdepid not in rdep_seen: add_recursive_run(nextdepid, fnid) - for idepend in idepends: - nextdepid = int(idepend.split(":")[0]) - if nextdepid not in dep_seen: - add_recursive_build(nextdepid, fnid) + for (idependid, idependtask) in idepends: + if idependid not in dep_seen: + add_recursive_build(idependid, fnid) def add_recursive_run(rdepid, depfnid): """ @@ -474,10 +472,9 @@ class RunQueue: for nextdepid in taskData.rdepids[fnid]: if nextdepid not in rdep_seen: add_recursive_run(nextdepid, fnid) - for idepend in idepends: - nextdepid = int(idepend.split(":")[0]) - if nextdepid not in dep_seen: - add_recursive_build(nextdepid, fnid) + for (idependid, idependtask) in idepends: + if idependid not in dep_seen: + add_recursive_build(idependid, fnid) # Resolve recursive 'recrdeptask' dependencies # @@ -492,9 +489,8 @@ class RunQueue: add_recursive_build(depid, fnid) for rdepid in taskData.rdepids[fnid]: add_recursive_run(rdepid, fnid) - for idepend in idepends: - depid = int(idepend.split(":")[0]) - add_recursive_build(depid, fnid) + for (idependid, idependtask) in idepends: + add_recursive_build(idependid, fnid) # Rmove all self references if task in depends: diff --git a/lib/bb/taskdata.py b/lib/bb/taskdata.py index 4a79e7a56..a50188b41 100644 --- a/lib/bb/taskdata.py +++ b/lib/bb/taskdata.py @@ -150,7 +150,7 @@ class TaskData: ids = [] for dep in task_deps['depends'][task].split(): if dep: - ids.append(str(self.getbuild_id(dep.split(":")[0])) + ":" + dep.split(":")[1]) + ids.append(((self.getbuild_id(dep.split(":")[0])), dep.split(":")[1])) self.tasks_idepends[taskid].extend(ids) # Work out build dependencies @@ -458,8 +458,6 @@ class TaskData: """ if fnid in self.failed_fnids: return - if not missing_list: - missing_list = [fnid] bb.msg.debug(1, bb.msg.domain.Provider, "File '%s' is unbuildable, removing..." % self.fn_index[fnid]) self.failed_fnids.append(fnid) for target in self.build_targets: @@ -487,6 +485,12 @@ class TaskData: dependees = self.get_dependees(targetid) for fnid in dependees: self.fail_fnid(fnid, missing_list) + for taskid in range(len(self.tasks_idepends)): + idepends = self.tasks_idepends[taskid] + for (idependid, idependtask) in idepends: + if idependid == targetid: + self.fail_fnid(self.tasks_fnid[taskid], missing_list) + if self.abort and targetid in self.external_targets: bb.msg.error(bb.msg.domain.Provider, "Required build target '%s' has no buildable providers.\nMissing or unbuildable dependency chain was: %s" % (self.build_names_index[targetid], missing_list)) raise bb.providers.NoProvider |