]> code.ossystems Code Review - openembedded-core.git/commitdiff
sstatesig: Avoid resetting taskhash within siggen for locked sigs
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Thu, 2 Jan 2020 16:37:58 +0000 (16:37 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 3 Jan 2020 22:35:19 +0000 (22:35 +0000)
Since get_unihash uses taskhash as a key internally, changing it means
different bebahour when locked sigs are active verses not active. Under
corner cases this leads to a signature mismatch.

Avoid this by by adding a wrapper for the place its externally exposed
and then not changing the internals.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/lib/oe/sstatesig.py

index 32a500552cdbaf65dccaee35a05ea5876a8a1586..0e17ad6f5b7034bc2f4a6e561ea051719bf520e3 100644 (file)
@@ -193,7 +193,6 @@ class SignatureGeneratorOEBasicHashMixIn(object):
                 self._internal = True
                 unihash = self.get_unihash(tid)
                 self._internal = False
-                self.taskhash[tid] = h_locked
                 #bb.warn("Using %s %s %s" % (recipename, task, h))
 
                 if h != h_locked and h_locked != unihash:
@@ -206,6 +205,11 @@ class SignatureGeneratorOEBasicHashMixIn(object):
         #bb.warn("%s %s %s" % (recipename, task, h))
         return h
 
+    def get_stampfile_hash(self, tid):
+        if tid in self.lockedhashes and self.lockedhashes[tid]:
+            return self.lockedhashes[tid]
+        return super().get_stampfile_hash(tid)
+
     def get_unihash(self, tid):
         if tid in self.lockedhashes and self.lockedhashes[tid] and not self._internal:
             return self.lockedhashes[tid]