diff options
Diffstat (limited to 'bitbake')
-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] |