From 23b7484d326cf7fac013384598d7745a042eaa75 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Thu, 2 Jan 2020 16:37:58 +0000 Subject: sstatesig: Avoid resetting taskhash within siggen for locked sigs 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 --- meta/lib/oe/sstatesig.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/meta/lib/oe/sstatesig.py b/meta/lib/oe/sstatesig.py index 32a500552c..0e17ad6f5b 100644 --- a/meta/lib/oe/sstatesig.py +++ b/meta/lib/oe/sstatesig.py @@ -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] -- cgit 1.2.3-korg