diff options
| -rw-r--r-- | bitbake/lib/bb/data.py | 14 | ||||
| -rw-r--r-- | bitbake/lib/bb/siggen.py | 6 |
2 files changed, 9 insertions, 11 deletions
diff --git a/bitbake/lib/bb/data.py b/bitbake/lib/bb/data.py index 3a6af325f4..430d444203 100644 --- a/bitbake/lib/bb/data.py +++ b/bitbake/lib/bb/data.py | |||
| @@ -276,7 +276,8 @@ def build_dependencies(key, keys, shelldeps, varflagsexcl, ignored_vars, d): | |||
| 276 | value, parser = d.getVarFlag(vf[0], vf[1], False, retparser=True) | 276 | value, parser = d.getVarFlag(vf[0], vf[1], False, retparser=True) |
| 277 | deps |= parser.references | 277 | deps |= parser.references |
| 278 | deps = deps | (keys & parser.execs) | 278 | deps = deps | (keys & parser.execs) |
| 279 | return deps, value | 279 | deps -= ignored_vars |
| 280 | return frozenset(deps), value | ||
| 280 | varflags = d.getVarFlags(key, ["vardeps", "vardepvalue", "vardepsexclude", "exports", "postfuncs", "prefuncs", "lineno", "filename"]) or {} | 281 | varflags = d.getVarFlags(key, ["vardeps", "vardepvalue", "vardepsexclude", "exports", "postfuncs", "prefuncs", "lineno", "filename"]) or {} |
| 281 | vardeps = varflags.get("vardeps") | 282 | vardeps = varflags.get("vardeps") |
| 282 | exclusions = varflags.get("vardepsexclude", "").split() | 283 | exclusions = varflags.get("vardepsexclude", "").split() |
| @@ -359,12 +360,13 @@ def build_dependencies(key, keys, shelldeps, varflagsexcl, ignored_vars, d): | |||
| 359 | 360 | ||
| 360 | deps |= set((vardeps or "").split()) | 361 | deps |= set((vardeps or "").split()) |
| 361 | deps -= set(exclusions) | 362 | deps -= set(exclusions) |
| 363 | deps -= ignored_vars | ||
| 362 | except bb.parse.SkipRecipe: | 364 | except bb.parse.SkipRecipe: |
| 363 | raise | 365 | raise |
| 364 | except Exception as e: | 366 | except Exception as e: |
| 365 | bb.warn("Exception during build_dependencies for %s" % key) | 367 | bb.warn("Exception during build_dependencies for %s" % key) |
| 366 | raise | 368 | raise |
| 367 | return deps, value | 369 | return frozenset(deps), value |
| 368 | #bb.note("Variable %s references %s and calls %s" % (key, str(deps), str(execs))) | 370 | #bb.note("Variable %s references %s and calls %s" % (key, str(deps), str(execs))) |
| 369 | #d.setVarFlag(key, "vardeps", deps) | 371 | #d.setVarFlag(key, "vardeps", deps) |
| 370 | 372 | ||
| @@ -383,7 +385,7 @@ def generate_dependencies(d, ignored_vars): | |||
| 383 | newdeps = deps[task] | 385 | newdeps = deps[task] |
| 384 | seen = set() | 386 | seen = set() |
| 385 | while newdeps: | 387 | while newdeps: |
| 386 | nextdeps = newdeps - ignored_vars | 388 | nextdeps = newdeps |
| 387 | seen |= nextdeps | 389 | seen |= nextdeps |
| 388 | newdeps = set() | 390 | newdeps = set() |
| 389 | for dep in nextdeps: | 391 | for dep in nextdeps: |
| @@ -407,7 +409,6 @@ def generate_dependency_hash(tasklist, gendeps, lookupcache, ignored_vars, fn): | |||
| 407 | else: | 409 | else: |
| 408 | data = [data] | 410 | data = [data] |
| 409 | 411 | ||
| 410 | gendeps[task] -= ignored_vars | ||
| 411 | newdeps = gendeps[task] | 412 | newdeps = gendeps[task] |
| 412 | seen = set() | 413 | seen = set() |
| 413 | while newdeps: | 414 | while newdeps: |
| @@ -415,9 +416,6 @@ def generate_dependency_hash(tasklist, gendeps, lookupcache, ignored_vars, fn): | |||
| 415 | seen |= nextdeps | 416 | seen |= nextdeps |
| 416 | newdeps = set() | 417 | newdeps = set() |
| 417 | for dep in nextdeps: | 418 | for dep in nextdeps: |
| 418 | if dep in ignored_vars: | ||
| 419 | continue | ||
| 420 | gendeps[dep] -= ignored_vars | ||
| 421 | newdeps |= gendeps[dep] | 419 | newdeps |= gendeps[dep] |
| 422 | newdeps -= seen | 420 | newdeps -= seen |
| 423 | 421 | ||
| @@ -429,7 +427,7 @@ def generate_dependency_hash(tasklist, gendeps, lookupcache, ignored_vars, fn): | |||
| 429 | data.append(str(var)) | 427 | data.append(str(var)) |
| 430 | k = fn + ":" + task | 428 | k = fn + ":" + task |
| 431 | basehash[k] = hashlib.sha256("".join(data).encode("utf-8")).hexdigest() | 429 | basehash[k] = hashlib.sha256("".join(data).encode("utf-8")).hexdigest() |
| 432 | taskdeps[task] = alldeps | 430 | taskdeps[task] = frozenset(seen) |
| 433 | 431 | ||
| 434 | return taskdeps, basehash | 432 | return taskdeps, basehash |
| 435 | 433 | ||
diff --git a/bitbake/lib/bb/siggen.py b/bitbake/lib/bb/siggen.py index 07bb529452..72b906c153 100644 --- a/bitbake/lib/bb/siggen.py +++ b/bitbake/lib/bb/siggen.py | |||
| @@ -25,13 +25,13 @@ hashequiv_logger = logging.getLogger('BitBake.SigGen.HashEquiv') | |||
| 25 | 25 | ||
| 26 | class SetEncoder(json.JSONEncoder): | 26 | class SetEncoder(json.JSONEncoder): |
| 27 | def default(self, obj): | 27 | def default(self, obj): |
| 28 | if isinstance(obj, set): | 28 | if isinstance(obj, set) or isinstance(obj, frozenset): |
| 29 | return dict(_set_object=list(sorted(obj))) | 29 | return dict(_set_object=list(sorted(obj))) |
| 30 | return json.JSONEncoder.default(self, obj) | 30 | return json.JSONEncoder.default(self, obj) |
| 31 | 31 | ||
| 32 | def SetDecoder(dct): | 32 | def SetDecoder(dct): |
| 33 | if '_set_object' in dct: | 33 | if '_set_object' in dct: |
| 34 | return set(dct['_set_object']) | 34 | return frozenset(dct['_set_object']) |
| 35 | return dct | 35 | return dct |
| 36 | 36 | ||
| 37 | def init(d): | 37 | def init(d): |
| @@ -1056,7 +1056,7 @@ def calc_basehash(sigdata): | |||
| 1056 | basedata = '' | 1056 | basedata = '' |
| 1057 | 1057 | ||
| 1058 | alldeps = sigdata['taskdeps'] | 1058 | alldeps = sigdata['taskdeps'] |
| 1059 | for dep in alldeps: | 1059 | for dep in sorted(alldeps): |
| 1060 | basedata = basedata + dep | 1060 | basedata = basedata + dep |
| 1061 | val = sigdata['varvals'][dep] | 1061 | val = sigdata['varvals'][dep] |
| 1062 | if val is not None: | 1062 | if val is not None: |
