diff options
| -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: |
