diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-11-02 15:07:33 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-05-18 13:10:55 +0100 |
commit | 03f6025a5b0cc4d883a9b2071e026769330752c8 (patch) | |
tree | cfd687b9d4149dd8573fdefb0e57ea78af46760f | |
parent | aa873f982ae4a56b135abd9eee169794e4c3aadd (diff) | |
download | bitbake-03f6025a5b0cc4d883a9b2071e026769330752c8.tar.gz |
siggen: Ensure taskhash mismatches don't override existing data
We recalculate the taskhash to ensure the version we have matches
what we think it should be. When we write out a sigdata file, use
the calculated value so that we don't overwrite any existing file.
This leaves any original taskhash sigdata file intact to allow a
debugging comparison.
(Bitbake rev: dac68af6f4add9c99cb7adcf23b2ae89b96ca075)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Minor fixup
Signed-off-by: Armin Kuster <akuster808@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | lib/bb/siggen.py | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/lib/bb/siggen.py b/lib/bb/siggen.py index 7d72f0c3b..6a903b2fa 100644 --- a/lib/bb/siggen.py +++ b/lib/bb/siggen.py @@ -287,6 +287,15 @@ class SignatureGeneratorBasic(SignatureGenerator): if 'nostamp:' in self.taints[k]: data['taint'] = self.taints[k] + computed_basehash = calc_basehash(data) + if computed_basehash != self.basehash[k]: + bb.error("Basehash mismatch %s versus %s for %s" % (computed_basehash, self.basehash[k], k)) + if runtime and k in self.taskhash: + computed_taskhash = calc_taskhash(data) + if computed_taskhash != self.taskhash[k]: + bb.error("Taskhash mismatch %s versus %s for %s" % (computed_taskhash, self.taskhash[k], k)) + sigfile = sigfile.replace(self.taskhash[k], computed_taskhash) + fd, tmpfile = tempfile.mkstemp(dir=os.path.dirname(sigfile), prefix="sigtask.") try: with os.fdopen(fd, "wb") as stream: @@ -301,15 +310,6 @@ class SignatureGeneratorBasic(SignatureGenerator): pass raise err - computed_basehash = calc_basehash(data) - if computed_basehash != self.basehash[k]: - bb.error("Basehash mismatch %s verses %s for %s" % (computed_basehash, self.basehash[k], k)) - if k in self.taskhash: - computed_taskhash = calc_taskhash(data) - if computed_taskhash != self.taskhash[k]: - bb.error("Taskhash mismatch %s verses %s for %s" % (computed_taskhash, self.taskhash[k], k)) - - def dump_sigs(self, dataCache, options): for fn in self.taskdeps: for task in self.taskdeps[fn]: |