From d7e7b991ce42439e2df8531859fafcd4a91f2ed9 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Mon, 16 Sep 2013 07:51:18 +0000 Subject: [PATCH] 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 --- bitbake/lib/bb/data.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/bitbake/lib/bb/data.py b/bitbake/lib/bb/data.py index ecac66c6ba..876f6ca542 100644 --- a/bitbake/lib/bb/data.py +++ b/bitbake/lib/bb/data.py @@ -287,18 +287,19 @@ def update_data(d): def build_dependencies(key, keys, shelldeps, vardepvals, d): deps = set() - vardeps = d.getVarFlag(key, "vardeps", True) try: if key[-1] == ']': vf = key[:-1].split('[') value = d.getVarFlag(vf[0], vf[1], False) else: value = d.getVar(key, False) + varflags = d.getVarFlags(key, ["vardeps", "vardepvalue", "vardepsexclude"]) or {} + vardeps = varflags.get("vardeps") - if key in vardepvals: - value = d.getVarFlag(key, "vardepvalue", True) - elif d.getVarFlag(key, "func"): - if d.getVarFlag(key, "python"): + if "vardepvalue" in varflags: + value = varflags.get("vardepvalue") + elif varflags.get("func"): + if varflags.get("python"): parsedvar = d.expandWithRefs(value, key) parser = bb.codeparser.PythonParser(key, logger) 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) if varflagsexcl: varfdeps = [] - varflags = d.getVarFlags(key) - if varflags: - for f in varflags: - if f not in varflagsexcl: - varfdeps.append('%s[%s]' % (key, f)) + for f in varflags: + if f not in varflagsexcl: + varfdeps.append('%s[%s]' % (key, f)) if varfdeps: deps |= set(varfdeps) deps |= set((vardeps or "").split()) - deps -= set((d.getVarFlag(key, "vardepsexclude", True) or "").split()) + deps -= set(varflags.get("vardepsexclude", "").split()) except Exception as e: raise bb.data_smart.ExpansionError(key, None, e) return deps, value