summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/taskdata.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/taskdata.py')
-rw-r--r--bitbake/lib/bb/taskdata.py18
1 files changed, 17 insertions, 1 deletions
diff --git a/bitbake/lib/bb/taskdata.py b/bitbake/lib/bb/taskdata.py
index 0ea6c0bfd6..94e822c485 100644
--- a/bitbake/lib/bb/taskdata.py
+++ b/bitbake/lib/bb/taskdata.py
@@ -70,6 +70,8 @@ class TaskData:
70 70
71 self.skiplist = skiplist 71 self.skiplist = skiplist
72 72
73 self.mcdepends = []
74
73 def add_tasks(self, fn, dataCache): 75 def add_tasks(self, fn, dataCache):
74 """ 76 """
75 Add tasks for a given fn to the database 77 Add tasks for a given fn to the database
@@ -88,6 +90,13 @@ class TaskData:
88 90
89 self.add_extra_deps(fn, dataCache) 91 self.add_extra_deps(fn, dataCache)
90 92
93 def add_mcdepends(task):
94 for dep in task_deps['mcdepends'][task].split():
95 if len(dep.split(':')) != 5:
96 bb.msg.fatal("TaskData", "Error for %s:%s[%s], multiconfig dependency %s does not contain exactly four ':' characters.\n Task '%s' should be specified in the form 'multiconfig:fromMC:toMC:packagename:task'" % (fn, task, 'mcdepends', dep, 'mcdepends'))
97 if dep not in self.mcdepends:
98 self.mcdepends.append(dep)
99
91 # Common code for dep_name/depends = 'depends'/idepends and 'rdepends'/irdepends 100 # Common code for dep_name/depends = 'depends'/idepends and 'rdepends'/irdepends
92 def handle_deps(task, dep_name, depends, seen): 101 def handle_deps(task, dep_name, depends, seen):
93 if dep_name in task_deps and task in task_deps[dep_name]: 102 if dep_name in task_deps and task in task_deps[dep_name]:
@@ -110,16 +119,20 @@ class TaskData:
110 parentids = [] 119 parentids = []
111 for dep in task_deps['parents'][task]: 120 for dep in task_deps['parents'][task]:
112 if dep not in task_deps['tasks']: 121 if dep not in task_deps['tasks']:
113 bb.debug(2, "Not adding dependeny of %s on %s since %s does not exist" % (task, dep, dep)) 122 bb.debug(2, "Not adding dependency of %s on %s since %s does not exist" % (task, dep, dep))
114 continue 123 continue
115 parentid = "%s:%s" % (fn, dep) 124 parentid = "%s:%s" % (fn, dep)
116 parentids.append(parentid) 125 parentids.append(parentid)
117 self.taskentries[tid].tdepends.extend(parentids) 126 self.taskentries[tid].tdepends.extend(parentids)
118 127
128
119 # Touch all intertask dependencies 129 # Touch all intertask dependencies
120 handle_deps(task, 'depends', self.taskentries[tid].idepends, self.seen_build_target) 130 handle_deps(task, 'depends', self.taskentries[tid].idepends, self.seen_build_target)
121 handle_deps(task, 'rdepends', self.taskentries[tid].irdepends, self.seen_run_target) 131 handle_deps(task, 'rdepends', self.taskentries[tid].irdepends, self.seen_run_target)
122 132
133 if 'mcdepends' in task_deps and task in task_deps['mcdepends']:
134 add_mcdepends(task)
135
123 # Work out build dependencies 136 # Work out build dependencies
124 if not fn in self.depids: 137 if not fn in self.depids:
125 dependids = set() 138 dependids = set()
@@ -537,6 +550,9 @@ class TaskData:
537 provmap[name] = provider[0] 550 provmap[name] = provider[0]
538 return provmap 551 return provmap
539 552
553 def get_mcdepends(self):
554 return self.mcdepends
555
540 def dump_data(self): 556 def dump_data(self):
541 """ 557 """
542 Dump some debug information on the internal data structures 558 Dump some debug information on the internal data structures