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: self.add_extra_deps(fn, dataCache) + # Common code for dep_name/depends = 'depends'/idepends and 'rdepends'/irdepends + def handle_deps(task, dep_name, depends, seen): + if dep_name in task_deps and task in task_deps[dep_name]: + ids = [] + for dep in task_deps[dep_name][task].split(): + if dep: + parts = dep.split(":") + if len(parts) != 2: + 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)) + ids.append((parts[0], parts[1])) + seen(parts[0]) + depends.extend(ids) + for task in task_deps['tasks']: tid = "%s:%s" % (fn, task) @@ -105,24 +118,8 @@ class TaskData: self.taskentries[tid].tdepends.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: - if ":" not in dep: - 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)) - ids.append(((dep.split(":")[0]), dep.split(":")[1])) - self.seen_build_target(dep.split(":")[0]) - self.taskentries[tid].idepends.extend(ids) - if 'rdepends' in task_deps and task in task_deps['rdepends']: - ids = [] - for dep in task_deps['rdepends'][task].split(): - if dep: - if ":" not in dep: - 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)) - ids.append(((dep.split(":")[0]), dep.split(":")[1])) - self.seen_run_target(dep.split(":")[0]) - self.taskentries[tid].irdepends.extend(ids) + handle_deps(task, 'depends', self.taskentries[tid].idepends, self.seen_build_target) + handle_deps(task, 'rdepends', self.taskentries[tid].irdepends, self.seen_run_target) # Work out build dependencies if not fn in self.depids: