summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/siggen.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/siggen.py')
-rw-r--r--bitbake/lib/bb/siggen.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/bitbake/lib/bb/siggen.py b/bitbake/lib/bb/siggen.py
index 5a0b80e8a9..daf56770f9 100644
--- a/bitbake/lib/bb/siggen.py
+++ b/bitbake/lib/bb/siggen.py
@@ -60,6 +60,7 @@ class SignatureGeneratorBasic(SignatureGenerator):
60 self.taskhash = {} 60 self.taskhash = {}
61 self.taskdeps = {} 61 self.taskdeps = {}
62 self.runtaskdeps = {} 62 self.runtaskdeps = {}
63 self.file_checksum_values = {}
63 self.gendeps = {} 64 self.gendeps = {}
64 self.lookupcache = {} 65 self.lookupcache = {}
65 self.pkgnameextract = re.compile("(?P<fn>.*)\..*") 66 self.pkgnameextract = re.compile("(?P<fn>.*)\..*")
@@ -152,6 +153,7 @@ class SignatureGeneratorBasic(SignatureGenerator):
152 k = fn + "." + task 153 k = fn + "." + task
153 data = dataCache.basetaskhash[k] 154 data = dataCache.basetaskhash[k]
154 self.runtaskdeps[k] = [] 155 self.runtaskdeps[k] = []
156 self.file_checksum_values[k] = {}
155 recipename = dataCache.pkg_fn[fn] 157 recipename = dataCache.pkg_fn[fn]
156 for dep in sorted(deps, key=clean_basepath): 158 for dep in sorted(deps, key=clean_basepath):
157 depname = dataCache.pkg_fn[self.pkgnameextract.search(dep).group('fn')] 159 depname = dataCache.pkg_fn[self.pkgnameextract.search(dep).group('fn')]
@@ -161,6 +163,12 @@ class SignatureGeneratorBasic(SignatureGenerator):
161 bb.fatal("%s is not in taskhash, caller isn't calling in dependency order?", dep) 163 bb.fatal("%s is not in taskhash, caller isn't calling in dependency order?", dep)
162 data = data + self.taskhash[dep] 164 data = data + self.taskhash[dep]
163 self.runtaskdeps[k].append(dep) 165 self.runtaskdeps[k].append(dep)
166
167 if task in dataCache.file_checksums[fn]:
168 checksums = bb.fetch2.get_file_checksums(dataCache.file_checksums[fn][task], recipename)
169 for (f,cs) in checksums:
170 self.file_checksum_values[k][f] = cs
171 data = data + cs
164 h = hashlib.md5(data).hexdigest() 172 h = hashlib.md5(data).hexdigest()
165 self.taskhash[k] = h 173 self.taskhash[k] = h
166 #d.setVar("BB_TASKHASH_task-%s" % task, taskhash[task]) 174 #d.setVar("BB_TASKHASH_task-%s" % task, taskhash[task])
@@ -197,6 +205,7 @@ class SignatureGeneratorBasic(SignatureGenerator):
197 205
198 if runtime and k in self.taskhash: 206 if runtime and k in self.taskhash:
199 data['runtaskdeps'] = self.runtaskdeps[k] 207 data['runtaskdeps'] = self.runtaskdeps[k]
208 data['file_checksum_values'] = self.file_checksum_values[k]
200 data['runtaskhashes'] = {} 209 data['runtaskhashes'] = {}
201 for dep in data['runtaskdeps']: 210 for dep in data['runtaskdeps']:
202 data['runtaskhashes'][dep] = self.taskhash[dep] 211 data['runtaskhashes'][dep] = self.taskhash[dep]
@@ -304,6 +313,18 @@ def compare_sigfiles(a, b):
304 for dep in changed: 313 for dep in changed:
305 print "Variable %s value changed from %s to %s" % (dep, a_data['varvals'][dep], b_data['varvals'][dep]) 314 print "Variable %s value changed from %s to %s" % (dep, a_data['varvals'][dep], b_data['varvals'][dep])
306 315
316 changed, added, removed = dict_diff(a_data['file_checksum_values'], b_data['file_checksum_values'])
317 if changed:
318 for f in changed:
319 print "Checksum for file %s changed from %s to %s" % (f, a_data['file_checksum_values'][f], b_data['file_checksum_values'][f])
320 if added:
321 for f in added:
322 print "Dependency on checksum of file %s was added" % (f)
323 if removed:
324 for f in removed:
325 print "Dependency on checksum of file %s was removed" % (f)
326
327
307 if 'runtaskhashes' in a_data and 'runtaskhashes' in b_data: 328 if 'runtaskhashes' in a_data and 'runtaskhashes' in b_data:
308 a = clean_basepaths(a_data['runtaskhashes']) 329 a = clean_basepaths(a_data['runtaskhashes'])
309 b = clean_basepaths(b_data['runtaskhashes']) 330 b = clean_basepaths(b_data['runtaskhashes'])
@@ -353,6 +374,9 @@ def dump_sigfile(a):
353 if 'runtaskdeps' in a_data: 374 if 'runtaskdeps' in a_data:
354 print "Tasks this task depends on: %s" % (a_data['runtaskdeps']) 375 print "Tasks this task depends on: %s" % (a_data['runtaskdeps'])
355 376
377 if 'file_checksum_values' in a_data:
378 print "This task depends on the checksums of files: %s" % (a_data['file_checksum_values'])
379
356 if 'runtaskhashes' in a_data: 380 if 'runtaskhashes' in a_data:
357 for dep in a_data['runtaskhashes']: 381 for dep in a_data['runtaskhashes']:
358 print "Hash for dependent task %s is %s" % (dep, a_data['runtaskhashes'][dep]) 382 print "Hash for dependent task %s is %s" % (dep, a_data['runtaskhashes'][dep])