summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2015-09-30 14:55:56 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-10-01 07:43:38 +0100
commitcdc57f611699f83eabb129eb8f318e53b452b8b1 (patch)
tree811e565fb20ce271546e0baaad7d0b0b716d70a4 /bitbake/lib/bb
parent1630f0a1511e6f46cd114b07b4f487997fde15e7 (diff)
downloadpoky-cdc57f611699f83eabb129eb8f318e53b452b8b1.tar.gz
bitbake: siggen: Make it clear why nostamp tasks signatures don't match
If you run bitbake-diffsigs against two differing sigdata files from nostamp tasks it shows no difference despite the differing checksum. Change the code so this shows up as a nostamp 'taint' and at least makes the issue clearer to the end user. (Bitbake rev: 97679d18955dadaa34f9450564e44da99984d140) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb')
-rw-r--r--bitbake/lib/bb/siggen.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/bitbake/lib/bb/siggen.py b/bitbake/lib/bb/siggen.py
index 2985272218..0352e45231 100644
--- a/bitbake/lib/bb/siggen.py
+++ b/bitbake/lib/bb/siggen.py
@@ -80,6 +80,7 @@ class SignatureGeneratorBasic(SignatureGenerator):
80 self.taskdeps = {} 80 self.taskdeps = {}
81 self.runtaskdeps = {} 81 self.runtaskdeps = {}
82 self.file_checksum_values = {} 82 self.file_checksum_values = {}
83 self.taints = {}
83 self.gendeps = {} 84 self.gendeps = {}
84 self.lookupcache = {} 85 self.lookupcache = {}
85 self.pkgnameextract = re.compile("(?P<fn>.*)\..*") 86 self.pkgnameextract = re.compile("(?P<fn>.*)\..*")
@@ -199,11 +200,14 @@ class SignatureGeneratorBasic(SignatureGenerator):
199 if 'nostamp' in taskdep and task in taskdep['nostamp']: 200 if 'nostamp' in taskdep and task in taskdep['nostamp']:
200 # Nostamp tasks need an implicit taint so that they force any dependent tasks to run 201 # Nostamp tasks need an implicit taint so that they force any dependent tasks to run
201 import uuid 202 import uuid
202 data = data + str(uuid.uuid4()) 203 taint = str(uuid.uuid4())
204 data = data + taint
205 self.taints[k] = "nostamp:" + taint
203 206
204 taint = self.read_taint(fn, task, dataCache.stamp[fn]) 207 taint = self.read_taint(fn, task, dataCache.stamp[fn])
205 if taint: 208 if taint:
206 data = data + taint 209 data = data + taint
210 self.taints[k] = taint
207 logger.warn("%s is tainted from a forced run" % k) 211 logger.warn("%s is tainted from a forced run" % k)
208 212
209 h = hashlib.md5(data).hexdigest() 213 h = hashlib.md5(data).hexdigest()
@@ -247,6 +251,10 @@ class SignatureGeneratorBasic(SignatureGenerator):
247 if taint: 251 if taint:
248 data['taint'] = taint 252 data['taint'] = taint
249 253
254 if runtime and k in self.taints:
255 if 'nostamp:' in self.taints[k]:
256 data['taint'] = self.taints[k]
257
250 fd, tmpfile = tempfile.mkstemp(dir=os.path.dirname(sigfile), prefix="sigtask.") 258 fd, tmpfile = tempfile.mkstemp(dir=os.path.dirname(sigfile), prefix="sigtask.")
251 try: 259 try:
252 with os.fdopen(fd, "wb") as stream: 260 with os.fdopen(fd, "wb") as stream: