diff options
Diffstat (limited to 'bitbake/lib/bb/taskdata.py')
-rw-r--r-- | bitbake/lib/bb/taskdata.py | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/bitbake/lib/bb/taskdata.py b/bitbake/lib/bb/taskdata.py index d8bdbcabf9..1f3b24c845 100644 --- a/bitbake/lib/bb/taskdata.py +++ b/bitbake/lib/bb/taskdata.py | |||
@@ -89,6 +89,19 @@ class TaskData: | |||
89 | 89 | ||
90 | self.add_extra_deps(fn, dataCache) | 90 | self.add_extra_deps(fn, dataCache) |
91 | 91 | ||
92 | # Common code for dep_name/depends = 'depends'/idepends and 'rdepends'/irdepends | ||
93 | def handle_deps(task, dep_name, depends, seen): | ||
94 | if dep_name in task_deps and task in task_deps[dep_name]: | ||
95 | ids = [] | ||
96 | for dep in task_deps[dep_name][task].split(): | ||
97 | if dep: | ||
98 | parts = dep.split(":") | ||
99 | if len(parts) != 2: | ||
100 | bb.msg.fatal("TaskData", "Error for %s, dependency %s does not contain exactly one ':' character.\n Task '%s' should be specified in the form 'packagename:task'" % (fn, dep, dep_name)) | ||
101 | ids.append((parts[0], parts[1])) | ||
102 | seen(parts[0]) | ||
103 | depends.extend(ids) | ||
104 | |||
92 | for task in task_deps['tasks']: | 105 | for task in task_deps['tasks']: |
93 | 106 | ||
94 | tid = "%s:%s" % (fn, task) | 107 | tid = "%s:%s" % (fn, task) |
@@ -105,24 +118,8 @@ class TaskData: | |||
105 | self.taskentries[tid].tdepends.extend(parentids) | 118 | self.taskentries[tid].tdepends.extend(parentids) |
106 | 119 | ||
107 | # Touch all intertask dependencies | 120 | # Touch all intertask dependencies |
108 | if 'depends' in task_deps and task in task_deps['depends']: | 121 | handle_deps(task, 'depends', self.taskentries[tid].idepends, self.seen_build_target) |
109 | ids = [] | 122 | handle_deps(task, 'rdepends', self.taskentries[tid].irdepends, self.seen_run_target) |
110 | for dep in task_deps['depends'][task].split(): | ||
111 | if dep: | ||
112 | if ":" not in dep: | ||
113 | bb.msg.fatal("TaskData", "Error for %s, dependency %s does not contain ':' character\n. Task 'depends' should be specified in the form 'packagename:task'" % (fn, dep)) | ||
114 | ids.append(((dep.split(":")[0]), dep.split(":")[1])) | ||
115 | self.seen_build_target(dep.split(":")[0]) | ||
116 | self.taskentries[tid].idepends.extend(ids) | ||
117 | if 'rdepends' in task_deps and task in task_deps['rdepends']: | ||
118 | ids = [] | ||
119 | for dep in task_deps['rdepends'][task].split(): | ||
120 | if dep: | ||
121 | if ":" not in dep: | ||
122 | bb.msg.fatal("TaskData", "Error for %s, dependency %s does not contain ':' character\n. Task 'rdepends' should be specified in the form 'packagename:task'" % (fn, dep)) | ||
123 | ids.append(((dep.split(":")[0]), dep.split(":")[1])) | ||
124 | self.seen_run_target(dep.split(":")[0]) | ||
125 | self.taskentries[tid].irdepends.extend(ids) | ||
126 | 123 | ||
127 | # Work out build dependencies | 124 | # Work out build dependencies |
128 | if not fn in self.depids: | 125 | if not fn in self.depids: |