]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
siggen: Fix check calculation problem with file_checksums
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Sat, 2 Apr 2016 16:10:48 +0000 (17:10 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Sat, 2 Apr 2016 16:14:35 +0000 (17:14 +0100)
When I enabled debugging of the checksum code, I found the value calculated
from siginfo/sigdata files for do_fetch tasks never matched. This was due
to an error in the way the data was being stored for these, it wasn't ordered
correctly. This patch fixes things so the checksums calculated from
siginfo/sigdata files is correct when file checksums are present.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
lib/bb/siggen.py

index 114851c49085ac8483a026d2ed36ba45923a8d91..d8ba1d47a32ce2653bc2ea680d1de4d58096c2d4 100644 (file)
@@ -186,8 +186,9 @@ class SignatureGeneratorBasic(SignatureGenerator):
         k = fn + "." + task
         data = dataCache.basetaskhash[k]
         self.runtaskdeps[k] = []
-        self.file_checksum_values[k] = {}
+        self.file_checksum_values[k] = []
         recipename = dataCache.pkg_fn[fn]
+
         for dep in sorted(deps, key=clean_basepath):
             depname = dataCache.pkg_fn[self.pkgnameextract.search(dep).group('fn')]
             if not self.rundep_check(fn, recipename, task, dep, depname, dataCache):
@@ -203,7 +204,7 @@ class SignatureGeneratorBasic(SignatureGenerator):
             else:
                 checksums = bb.fetch2.get_file_checksums(dataCache.file_checksums[fn][task], recipename)
             for (f,cs) in checksums:
-                self.file_checksum_values[k][f] = cs
+                self.file_checksum_values[k].append((f,cs))
                 if cs:
                     data = data + cs
 
@@ -262,7 +263,7 @@ class SignatureGeneratorBasic(SignatureGenerator):
 
         if runtime and k in self.taskhash:
             data['runtaskdeps'] = self.runtaskdeps[k]
-            data['file_checksum_values'] = [(os.path.basename(f), cs) for f,cs in self.file_checksum_values[k].items()]
+            data['file_checksum_values'] = [(os.path.basename(f), cs) for f,cs in self.file_checksum_values[k]]
             data['runtaskhashes'] = {}
             for dep in data['runtaskdeps']:
                 data['runtaskhashes'][dep] = self.taskhash[dep]