1
0
mirror of https://git.yoctoproject.org/poky synced 2026-06-02 13:29:49 +00:00

bitbake: data: Don't expand python functions for variable dependencies

Expanding python functions for variable dependencies doesn't really make sense,
not least since this causes execution of any inline python, it also makes it
impossible to write expressions like d.expand("${X}") of d.setVar("X", "${Y}")
which may have the wrong values if expanded now.

This starts to standardise the approach across bitbake for handling python code.

(Bitbake rev: 765a2480dbe288f64562a9611dd93b6b6dd0a64e)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2016-02-02 13:58:17 +00:00
parent d3e0c448ea
commit f652b6b9d0
+6 -6
View File
@@ -362,27 +362,27 @@ def build_dependencies(key, keys, shelldeps, varflagsexcl, d):
value = varflags.get("vardepvalue") value = varflags.get("vardepvalue")
elif varflags.get("func"): elif varflags.get("func"):
if varflags.get("python"): if varflags.get("python"):
parsedvar = d.expandWithRefs(value, key)
parser = bb.codeparser.PythonParser(key, logger) parser = bb.codeparser.PythonParser(key, logger)
if parsedvar.value and "\t" in parsedvar.value: if value and "\t" in value:
logger.warn("Variable %s contains tabs, please remove these (%s)" % (key, d.getVar("FILE", True))) logger.warn("Variable %s contains tabs, please remove these (%s)" % (key, d.getVar("FILE", True)))
parser.parse_python(parsedvar.value, filename=varflags.get("filename"), lineno=varflags.get("lineno")) parser.parse_python(value, filename=varflags.get("filename"), lineno=varflags.get("lineno"))
deps = deps | parser.references deps = deps | parser.references
deps = deps | (keys & parser.execs)
value = handle_contains(value, parser.contains, d) value = handle_contains(value, parser.contains, d)
else: else:
parsedvar = d.expandWithRefs(value, key) parsedvar = d.expandWithRefs(value, key)
parser = bb.codeparser.ShellParser(key, logger) parser = bb.codeparser.ShellParser(key, logger)
parser.parse_shell(parsedvar.value) parser.parse_shell(parsedvar.value)
deps = deps | shelldeps deps = deps | shelldeps
deps = deps | parsedvar.references
deps = deps | (keys & parser.execs) | (keys & parsedvar.execs)
value = handle_contains(value, parsedvar.contains, d)
if vardeps is None: if vardeps is None:
parser.log.flush() parser.log.flush()
if "prefuncs" in varflags: if "prefuncs" in varflags:
deps = deps | set(varflags["prefuncs"].split()) deps = deps | set(varflags["prefuncs"].split())
if "postfuncs" in varflags: if "postfuncs" in varflags:
deps = deps | set(varflags["postfuncs"].split()) deps = deps | set(varflags["postfuncs"].split())
deps = deps | parsedvar.references
deps = deps | (keys & parser.execs) | (keys & parsedvar.execs)
value = handle_contains(value, parsedvar.contains, d)
else: else:
parser = d.expandWithRefs(value, key) parser = d.expandWithRefs(value, key)
deps |= parser.references deps |= parser.references