diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-09-30 14:55:56 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-10-01 07:43:38 +0100 |
commit | cdc57f611699f83eabb129eb8f318e53b452b8b1 (patch) | |
tree | 811e565fb20ce271546e0baaad7d0b0b716d70a4 /bitbake/lib/bb | |
parent | 1630f0a1511e6f46cd114b07b4f487997fde15e7 (diff) | |
download | poky-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.py | 10 |
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: |