diff options
| -rw-r--r-- | bitbake/lib/bb/siggen.py | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/bitbake/lib/bb/siggen.py b/bitbake/lib/bb/siggen.py index 88fc0f1d5c..7d72f0c3ba 100644 --- a/bitbake/lib/bb/siggen.py +++ b/bitbake/lib/bb/siggen.py | |||
| @@ -35,6 +35,7 @@ class SignatureGenerator(object): | |||
| 35 | name = "noop" | 35 | name = "noop" |
| 36 | 36 | ||
| 37 | def __init__(self, data): | 37 | def __init__(self, data): |
| 38 | self.basehash = {} | ||
| 38 | self.taskhash = {} | 39 | self.taskhash = {} |
| 39 | self.runtaskdeps = {} | 40 | self.runtaskdeps = {} |
| 40 | self.file_checksum_values = {} | 41 | self.file_checksum_values = {} |
| @@ -66,11 +67,10 @@ class SignatureGenerator(object): | |||
| 66 | return | 67 | return |
| 67 | 68 | ||
| 68 | def get_taskdata(self): | 69 | def get_taskdata(self): |
| 69 | return (self.runtaskdeps, self.taskhash, self.file_checksum_values, self.taints) | 70 | return (self.runtaskdeps, self.taskhash, self.file_checksum_values, self.taints, self.basehash) |
| 70 | 71 | ||
| 71 | def set_taskdata(self, data): | 72 | def set_taskdata(self, data): |
| 72 | self.runtaskdeps, self.taskhash, self.file_checksum_values, self.taints = data | 73 | self.runtaskdeps, self.taskhash, self.file_checksum_values, self.taints, self.basehash = data |
| 73 | |||
| 74 | 74 | ||
| 75 | class SignatureGeneratorBasic(SignatureGenerator): | 75 | class SignatureGeneratorBasic(SignatureGenerator): |
| 76 | """ | 76 | """ |
| @@ -138,7 +138,11 @@ class SignatureGeneratorBasic(SignatureGenerator): | |||
| 138 | var = lookupcache[dep] | 138 | var = lookupcache[dep] |
| 139 | if var is not None: | 139 | if var is not None: |
| 140 | data = data + str(var) | 140 | data = data + str(var) |
| 141 | self.basehash[fn + "." + task] = hashlib.md5(data).hexdigest() | 141 | datahash = hashlib.md5(data).hexdigest() |
| 142 | k = fn + "." + task | ||
| 143 | if k in self.basehash and self.basehash[k] != datahash: | ||
| 144 | bb.error("When reparsing %s, the basehash value changed from %s to %s. The metadata is not deterministic and this needs to be fixed." % (k, self.basehash[k], datahash)) | ||
| 145 | self.basehash[k] = datahash | ||
| 142 | taskdeps[task] = alldeps | 146 | taskdeps[task] = alldeps |
| 143 | 147 | ||
| 144 | self.taskdeps[fn] = taskdeps | 148 | self.taskdeps[fn] = taskdeps |
| @@ -186,6 +190,7 @@ class SignatureGeneratorBasic(SignatureGenerator): | |||
| 186 | def get_taskhash(self, fn, task, deps, dataCache): | 190 | def get_taskhash(self, fn, task, deps, dataCache): |
| 187 | k = fn + "." + task | 191 | k = fn + "." + task |
| 188 | data = dataCache.basetaskhash[k] | 192 | data = dataCache.basetaskhash[k] |
| 193 | self.basehash[k] = data | ||
| 189 | self.runtaskdeps[k] = [] | 194 | self.runtaskdeps[k] = [] |
| 190 | self.file_checksum_values[k] = [] | 195 | self.file_checksum_values[k] = [] |
| 191 | recipename = dataCache.pkg_fn[fn] | 196 | recipename = dataCache.pkg_fn[fn] |
