aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <rpurdie@linux.intel.com>2007-04-01 10:04:37 +0000
committerRichard Purdie <rpurdie@linux.intel.com>2007-04-01 10:04:37 +0000
commit4ae815df90d539075bf7f82ab1e04461e7e7651e (patch)
tree7694f41acd438d4d43d279506ba5967cbf7d6159
parent159c80b97e96d82e4076ce0c004756243dfe48c3 (diff)
downloadbitbake-4ae815df90d539075bf7f82ab1e04461e7e7651e.tar.gz
Add code to handle inter-task dependencies (from trunk)
-rw-r--r--ChangeLog1
-rw-r--r--lib/bb/runqueue.py9
-rw-r--r--lib/bb/taskdata.py13
3 files changed, 22 insertions, 1 deletions
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 = {}