From 4ae815df90d539075bf7f82ab1e04461e7e7651e Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Sun, 1 Apr 2007 10:04:37 +0000 Subject: Add code to handle inter-task dependencies (from trunk) --- ChangeLog | 1 + lib/bb/runqueue.py | 9 +++++++++ lib/bb/taskdata.py | 13 ++++++++++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 80d562295..093b42d3f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,7 @@ Changes in Bitbake 1.8.2: - Catch truncated cache file errors - Add PE (Package Epoch) support from Philipp Zabel (pH5) + - Add code to handle inter-task dependencies Changes in Bitbake 1.8.0: - Release 1.7.x as a stable series diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py index e95c3b7d5..059f800b6 100644 --- a/lib/bb/runqueue.py +++ b/lib/bb/runqueue.py @@ -122,6 +122,15 @@ class RunQueue: dep = taskData.fn_index[depdata] depends.append(taskData.gettask_id(dep, taskname)) + idepends = taskData.tasks_idepends[task] + for idepend in idepends: + depid = int(idepend.split(":")[0]) + if depid in taskData.build_targets: + depdata = taskData.build_targets[depid][0] + if depdata: + dep = taskData.fn_index[depdata] + depends.append(taskData.gettask_id(dep, idepend.split(":")[1])) + def add_recursive_build(depid): """ Add build depends of depid to depends diff --git a/lib/bb/taskdata.py b/lib/bb/taskdata.py index 17d6d9553..3d3adfdbd 100644 --- a/lib/bb/taskdata.py +++ b/lib/bb/taskdata.py @@ -43,6 +43,7 @@ class TaskData: self.tasks_fnid = [] self.tasks_name = [] self.tasks_tdepends = [] + self.tasks_idepends = [] # Cache to speed up task ID lookups self.tasks_lookup = {} @@ -108,6 +109,7 @@ class TaskData: self.tasks_name.append(task) self.tasks_fnid.append(fnid) self.tasks_tdepends.append([]) + self.tasks_idepends.append([]) listid = len(self.tasks_name) - 1 @@ -134,8 +136,9 @@ class TaskData: if fnid in self.tasks_fnid: return - # Work out task dependencies for task in task_graph.allnodes(): + + # Work out task dependencies parentids = [] for dep in task_graph.getparents(task): parentid = self.gettask_id(fn, dep) @@ -143,6 +146,14 @@ class TaskData: taskid = self.gettask_id(fn, task) self.tasks_tdepends[taskid].extend(parentids) + # Touch all intertask dependencies + if 'depends' in task_deps and task in task_deps['depends']: + ids = [] + for dep in task_deps['depends'][task].split(" "): + if dep: + ids.append(str(self.getbuild_id(dep.split(":")[0])) + ":" + dep.split(":")[1]) + self.tasks_idepends[taskid].extend(ids) + # Work out build dependencies if not fnid in self.depids: dependids = {} -- cgit 1.2.3-korg