aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2019-12-05 15:26:56 +0000
committerArmin Kuster <akuster808@gmail.com>2019-12-17 22:08:37 -0800
commitc42d00ff293d0538cad1b84c108bf7f5f49d4d84 (patch)
treef5acba28e6d321795a7a845359e1b4814d61e894
parenta109d034cf4fc059fd5a1e1d03246dac65522dd6 (diff)
downloadbitbake-contrib-c42d00ff293d0538cad1b84c108bf7f5f49d4d84.tar.gz
siggen: Avoid taskhash mismatch errors for nostamp tasks when dependencies rehash
An example: NOTE: recipe binutils-cross-testsuite-2.32.0-r0: task do_check: Started ERROR: Taskhash mismatch b074da4334aff8aa06572e7a8725c941fa6b08de4ce714a65a90c0c0b680abea versus 17375278daed609a7129769b74a1336a37bdef14b534ae85189ccc033a9f2db4 for /home/pokybuild/yocto-worker/qemux86-64/build/meta/recipes-devtools/binutils/binutils-cross-testsuite_2.32.bb:do_check NOTE: recipe binutils-cross-testsuite-2.32.0-r0: task do_check: Succeeded Is caused by a rehash in a dependency happening somewhere earlier in the build and the taint being reset. Change the code so that nostamp taints are preserved to avoid the issue. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit 61624a3fc38e8546e01356d5ce7a09f21e7094ab)
-rw-r--r--lib/bb/siggen.py12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/bb/siggen.py b/lib/bb/siggen.py
index edf10105f..de8532687 100644
--- a/lib/bb/siggen.py
+++ b/lib/bb/siggen.py
@@ -232,10 +232,14 @@ class SignatureGeneratorBasic(SignatureGenerator):
taskdep = dataCache.task_deps[fn]
if 'nostamp' in taskdep and task in taskdep['nostamp']:
# Nostamp tasks need an implicit taint so that they force any dependent tasks to run
- import uuid
- taint = str(uuid.uuid4())
- data = data + taint
- self.taints[tid] = "nostamp:" + taint
+ if tid in self.taints and self.taints[tid].startswith("nostamp:"):
+ # Don't reset taint value upon every call
+ data = data + self.taints[tid][8:]
+ else:
+ import uuid
+ taint = str(uuid.uuid4())
+ data = data + taint
+ self.taints[tid] = "nostamp:" + taint
taint = self.read_taint(fn, task, dataCache.stamp[fn])
if taint: