diff options
Diffstat (limited to 'poky/bitbake/lib/bb/data.py')
-rw-r--r-- | poky/bitbake/lib/bb/data.py | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/poky/bitbake/lib/bb/data.py b/poky/bitbake/lib/bb/data.py index 5d02bab99b..62ec214762 100644 --- a/poky/bitbake/lib/bb/data.py +++ b/poky/bitbake/lib/bb/data.py @@ -272,7 +272,7 @@ def update_data(d): """Performs final steps upon the datastore, including application of overrides""" d.finalize(parent = True) -def build_dependencies(key, keys, shelldeps, varflagsexcl, d): +def build_dependencies(key, keys, shelldeps, varflagsexcl, ignored_vars, d): deps = set() try: if key[-1] == ']': @@ -283,12 +283,15 @@ def build_dependencies(key, keys, shelldeps, varflagsexcl, d): return deps, value varflags = d.getVarFlags(key, ["vardeps", "vardepvalue", "vardepsexclude", "exports", "postfuncs", "prefuncs", "lineno", "filename"]) or {} vardeps = varflags.get("vardeps") + exclusions = varflags.get("vardepsexclude", "").split() - def handle_contains(value, contains, d): + def handle_contains(value, contains, exclusions, d): newvalue = [] if value: newvalue.append(str(value)) for k in sorted(contains): + if k in exclusions or k in ignored_vars: + continue l = (d.getVar(k) or "").split() for item in sorted(contains[k]): for word in item.split(): @@ -316,7 +319,7 @@ def build_dependencies(key, keys, shelldeps, varflagsexcl, d): parser.parse_python(value, filename=varflags.get("filename"), lineno=varflags.get("lineno")) deps = deps | parser.references deps = deps | (keys & parser.execs) - value = handle_contains(value, parser.contains, d) + value = handle_contains(value, parser.contains, exclusions, d) else: value, parsedvar = d.getVarFlag(key, "_content", False, retparser=True) parser = bb.codeparser.ShellParser(key, logger) @@ -324,7 +327,7 @@ def build_dependencies(key, keys, shelldeps, varflagsexcl, d): deps = deps | shelldeps deps = deps | parsedvar.references deps = deps | (keys & parser.execs) | (keys & parsedvar.execs) - value = handle_contains(value, parsedvar.contains, d) + value = handle_contains(value, parsedvar.contains, exclusions, d) if hasattr(parsedvar, "removes"): value = handle_remove(value, deps, parsedvar.removes, d) if vardeps is None: @@ -339,7 +342,7 @@ def build_dependencies(key, keys, shelldeps, varflagsexcl, d): value, parser = d.getVarFlag(key, "_content", False, retparser=True) deps |= parser.references deps = deps | (keys & parser.execs) - value = handle_contains(value, parser.contains, d) + value = handle_contains(value, parser.contains, exclusions, d) if hasattr(parser, "removes"): value = handle_remove(value, deps, parser.removes, d) @@ -359,7 +362,7 @@ def build_dependencies(key, keys, shelldeps, varflagsexcl, d): deps |= set(varfdeps) deps |= set((vardeps or "").split()) - deps -= set(varflags.get("vardepsexclude", "").split()) + deps -= set(exclusions) except bb.parse.SkipRecipe: raise except Exception as e: @@ -380,7 +383,7 @@ def generate_dependencies(d, ignored_vars): tasklist = d.getVar('__BBTASKS', False) or [] for task in tasklist: - deps[task], values[task] = build_dependencies(task, keys, shelldeps, varflagsexcl, d) + deps[task], values[task] = build_dependencies(task, keys, shelldeps, varflagsexcl, ignored_vars, d) newdeps = deps[task] seen = set() while newdeps: @@ -389,7 +392,7 @@ def generate_dependencies(d, ignored_vars): newdeps = set() for dep in nextdeps: if dep not in deps: - deps[dep], values[dep] = build_dependencies(dep, keys, shelldeps, varflagsexcl, d) + deps[dep], values[dep] = build_dependencies(dep, keys, shelldeps, varflagsexcl, ignored_vars, d) newdeps |= deps[dep] newdeps -= seen #print "For %s: %s" % (task, str(deps[task])) |