bitbake: data: Optimise build_dependencies a little
Instead of multiple calls to getVarFlag, make one call to getVarFlags, only expanding the flags that need to be expanded. This improves performance. (Bitbake rev: eba1e9545cc933820d40de96f023b2307b3c4d0b) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
d6ac67f9af
commit
d7e7b991ce
|
@ -287,18 +287,19 @@ def update_data(d):
|
||||||
|
|
||||||
def build_dependencies(key, keys, shelldeps, vardepvals, d):
|
def build_dependencies(key, keys, shelldeps, vardepvals, d):
|
||||||
deps = set()
|
deps = set()
|
||||||
vardeps = d.getVarFlag(key, "vardeps", True)
|
|
||||||
try:
|
try:
|
||||||
if key[-1] == ']':
|
if key[-1] == ']':
|
||||||
vf = key[:-1].split('[')
|
vf = key[:-1].split('[')
|
||||||
value = d.getVarFlag(vf[0], vf[1], False)
|
value = d.getVarFlag(vf[0], vf[1], False)
|
||||||
else:
|
else:
|
||||||
value = d.getVar(key, False)
|
value = d.getVar(key, False)
|
||||||
|
varflags = d.getVarFlags(key, ["vardeps", "vardepvalue", "vardepsexclude"]) or {}
|
||||||
|
vardeps = varflags.get("vardeps")
|
||||||
|
|
||||||
if key in vardepvals:
|
if "vardepvalue" in varflags:
|
||||||
value = d.getVarFlag(key, "vardepvalue", True)
|
value = varflags.get("vardepvalue")
|
||||||
elif d.getVarFlag(key, "func"):
|
elif varflags.get("func"):
|
||||||
if d.getVarFlag(key, "python"):
|
if varflags.get("python"):
|
||||||
parsedvar = d.expandWithRefs(value, key)
|
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 parsedvar.value and "\t" in parsedvar.value:
|
||||||
|
@ -323,16 +324,14 @@ def build_dependencies(key, keys, shelldeps, vardepvals, d):
|
||||||
varflagsexcl = d.getVar('BB_SIGNATURE_EXCLUDE_FLAGS', True)
|
varflagsexcl = d.getVar('BB_SIGNATURE_EXCLUDE_FLAGS', True)
|
||||||
if varflagsexcl:
|
if varflagsexcl:
|
||||||
varfdeps = []
|
varfdeps = []
|
||||||
varflags = d.getVarFlags(key)
|
for f in varflags:
|
||||||
if varflags:
|
if f not in varflagsexcl:
|
||||||
for f in varflags:
|
varfdeps.append('%s[%s]' % (key, f))
|
||||||
if f not in varflagsexcl:
|
|
||||||
varfdeps.append('%s[%s]' % (key, f))
|
|
||||||
if varfdeps:
|
if varfdeps:
|
||||||
deps |= set(varfdeps)
|
deps |= set(varfdeps)
|
||||||
|
|
||||||
deps |= set((vardeps or "").split())
|
deps |= set((vardeps or "").split())
|
||||||
deps -= set((d.getVarFlag(key, "vardepsexclude", True) or "").split())
|
deps -= set(varflags.get("vardepsexclude", "").split())
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise bb.data_smart.ExpansionError(key, None, e)
|
raise bb.data_smart.ExpansionError(key, None, e)
|
||||||
return deps, value
|
return deps, value
|
||||||
|
|
Loading…
Reference in New Issue