From 523c093a882f6831ba75b5c4513837554d7e2414 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Mon, 30 Dec 2019 14:44:01 +0000 Subject: sstatesig: Fix locked signature handling with unihashes get_taskhash will call get_unihash internally in the parent class. We need to disable our filter of it whilst this runs else incorrect hashes can be calculated. This is believed to be causing the locked signatures test to fail under some circumstances (depending on whether earlier hashes are being remapped). [YOCTO #13605] Signed-off-by: Richard Purdie --- meta/lib/oe/sstatesig.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/meta/lib/oe/sstatesig.py b/meta/lib/oe/sstatesig.py index ca3c6dfeaa..32a500552c 100644 --- a/meta/lib/oe/sstatesig.py +++ b/meta/lib/oe/sstatesig.py @@ -104,6 +104,7 @@ class SignatureGeneratorOEBasicHashMixIn(object): "").split() self.unlockedrecipes = { k: "" for k in self.unlockedrecipes } self.buildarch = data.getVar('BUILD_ARCH') + self._internal = False pass def tasks_resolved(self, virtmap, virtpnmap, dataCache): @@ -156,7 +157,12 @@ class SignatureGeneratorOEBasicHashMixIn(object): else: return super().get_taskhash(tid, deps, dataCache) + # get_taskhash will call get_unihash internally in the parent class, we + # need to disable our filter of it whilst this runs else + # incorrect hashes can be calculated. + self._internal = True h = super().get_taskhash(tid, deps, dataCache) + self._internal = False (mc, _, task, fn) = bb.runqueue.split_tid_mcfn(tid) @@ -184,7 +190,9 @@ class SignatureGeneratorOEBasicHashMixIn(object): h_locked = self.lockedsigs[recipename][task][0] var = self.lockedsigs[recipename][task][1] self.lockedhashes[tid] = h_locked - unihash = super().get_unihash(tid) + 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)) @@ -199,7 +207,7 @@ class SignatureGeneratorOEBasicHashMixIn(object): return h def get_unihash(self, tid): - if tid in self.lockedhashes and self.lockedhashes[tid]: + if tid in self.lockedhashes and self.lockedhashes[tid] and not self._internal: return self.lockedhashes[tid] return super().get_unihash(tid) -- cgit 1.2.3-korg