summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/siggen.py25
1 files changed, 18 insertions, 7 deletions
diff --git a/bitbake/lib/bb/siggen.py b/bitbake/lib/bb/siggen.py
index d9d0294615..f31d66a176 100644
--- a/bitbake/lib/bb/siggen.py
+++ b/bitbake/lib/bb/siggen.py
@@ -62,9 +62,13 @@ class SignatureGeneratorBasic(SignatureGenerator):
62 self.runtaskdeps = {} 62 self.runtaskdeps = {}
63 self.gendeps = {} 63 self.gendeps = {}
64 self.lookupcache = {} 64 self.lookupcache = {}
65 self.pkgnameextract = re.compile("(?P<fn>.*)\..*")
65 self.basewhitelist = set((data.getVar("BB_HASHBASE_WHITELIST", True) or "").split()) 66 self.basewhitelist = set((data.getVar("BB_HASHBASE_WHITELIST", True) or "").split())
66 self.taskwhitelist = data.getVar("BB_HASHTASK_WHITELIST", True) or None 67 self.taskwhitelist = None
68 self.init_rundepcheck(data)
67 69
70 def init_rundepcheck(self, data):
71 self.taskwhitelist = data.getVar("BB_HASHTASK_WHITELIST", True) or None
68 if self.taskwhitelist: 72 if self.taskwhitelist:
69 self.twl = re.compile(self.taskwhitelist) 73 self.twl = re.compile(self.taskwhitelist)
70 else: 74 else:
@@ -131,17 +135,24 @@ class SignatureGeneratorBasic(SignatureGenerator):
131 for task in taskdeps: 135 for task in taskdeps:
132 d.setVar("BB_BASEHASH_task-%s" % task, self.basehash[fn + "." + task]) 136 d.setVar("BB_BASEHASH_task-%s" % task, self.basehash[fn + "." + task])
133 137
138 def rundep_check(self, fn, recipename, task, dep, depname):
139 # Return True if we should keep the dependency, False to drop it
140 # We only manipulate the dependencies for packages not in the whitelist
141 if self.twl and not self.twl.search(recipename):
142 # then process the actual dependencies
143 if self.twl.search(depname):
144 return False
145 return True
146
134 def get_taskhash(self, fn, task, deps, dataCache): 147 def get_taskhash(self, fn, task, deps, dataCache):
135 k = fn + "." + task 148 k = fn + "." + task
136 data = dataCache.basetaskhash[k] 149 data = dataCache.basetaskhash[k]
137 self.runtaskdeps[k] = [] 150 self.runtaskdeps[k] = []
151 recipename = dataCache.pkg_fn[fn]
138 for dep in sorted(deps, key=clean_basepath): 152 for dep in sorted(deps, key=clean_basepath):
139 # We only manipulate the dependencies for packages not in the whitelist 153 depname = dataCache.pkg_fn[self.pkgnameextract.search(dep).group('fn')]
140 if self.twl and not self.twl.search(dataCache.pkg_fn[fn]): 154 if not self.rundep_check(fn, recipename, task, dep, depname):
141 # then process the actual dependencies 155 continue
142 dep_fn = re.search("(?P<fn>.*)\..*", dep).group('fn')
143 if self.twl.search(dataCache.pkg_fn[dep_fn]):
144 continue
145 if dep not in self.taskhash: 156 if dep not in self.taskhash:
146 bb.fatal("%s is not in taskhash, caller isn't calling in dependency order?", dep) 157 bb.fatal("%s is not in taskhash, caller isn't calling in dependency order?", dep)
147 data = data + self.taskhash[dep] 158 data = data + self.taskhash[dep]