diff options
Diffstat (limited to 'bitbake/lib/bb/siggen.py')
-rw-r--r-- | bitbake/lib/bb/siggen.py | 37 |
1 files changed, 4 insertions, 33 deletions
diff --git a/bitbake/lib/bb/siggen.py b/bitbake/lib/bb/siggen.py index e9bb51d736..03c824ec38 100644 --- a/bitbake/lib/bb/siggen.py +++ b/bitbake/lib/bb/siggen.py | |||
@@ -110,42 +110,13 @@ class SignatureGeneratorBasic(SignatureGenerator): | |||
110 | ignore_mismatch = ((d.getVar("BB_HASH_IGNORE_MISMATCH") or '') == '1') | 110 | ignore_mismatch = ((d.getVar("BB_HASH_IGNORE_MISMATCH") or '') == '1') |
111 | tasklist, gendeps, lookupcache = bb.data.generate_dependencies(d) | 111 | tasklist, gendeps, lookupcache = bb.data.generate_dependencies(d) |
112 | 112 | ||
113 | taskdeps = {} | 113 | taskdeps, basehash = bb.data.generate_dependency_hash(tasklist, gendeps, lookupcache, self.basewhitelist, fn) |
114 | basehash = {} | ||
115 | 114 | ||
116 | for task in tasklist: | 115 | for task in tasklist: |
117 | data = lookupcache[task] | ||
118 | |||
119 | if data is None: | ||
120 | bb.error("Task %s from %s seems to be empty?!" % (task, fn)) | ||
121 | data = '' | ||
122 | |||
123 | gendeps[task] -= self.basewhitelist | ||
124 | newdeps = gendeps[task] | ||
125 | seen = set() | ||
126 | while newdeps: | ||
127 | nextdeps = newdeps | ||
128 | seen |= nextdeps | ||
129 | newdeps = set() | ||
130 | for dep in nextdeps: | ||
131 | if dep in self.basewhitelist: | ||
132 | continue | ||
133 | gendeps[dep] -= self.basewhitelist | ||
134 | newdeps |= gendeps[dep] | ||
135 | newdeps -= seen | ||
136 | |||
137 | alldeps = sorted(seen) | ||
138 | for dep in alldeps: | ||
139 | data = data + dep | ||
140 | var = lookupcache[dep] | ||
141 | if var is not None: | ||
142 | data = data + str(var) | ||
143 | datahash = hashlib.md5(data.encode("utf-8")).hexdigest() | ||
144 | k = fn + "." + task | 116 | k = fn + "." + task |
145 | if not ignore_mismatch and k in self.basehash and self.basehash[k] != datahash: | 117 | if not ignore_mismatch and k in self.basehash and self.basehash[k] != basehash[k]: |
146 | 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)) | 118 | 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], basehash[k])) |
147 | self.basehash[k] = datahash | 119 | self.basehash[k] = basehash[k] |
148 | taskdeps[task] = alldeps | ||
149 | 120 | ||
150 | self.taskdeps[fn] = taskdeps | 121 | self.taskdeps[fn] = taskdeps |
151 | self.gendeps[fn] = gendeps | 122 | self.gendeps[fn] = gendeps |