summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2013-09-16 07:36:42 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-09-17 14:09:37 +0100
commitf41f46f7eaa6889edeb3a4e4ddedc07084686c60 (patch)
tree05886690faa40c66fbb0c33cf9c242c3272440a0
parente63448d9ee331b0f45fb9a0197d0dbee49eb2fa0 (diff)
downloadbitbake-f41f46f7eaa6889edeb3a4e4ddedc07084686c60.tar.gz
data: Cache an list of export variables
Compute a cache of the list of potential export variables so that we don't have to compute the list from scratch. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/data.py2
-rw-r--r--lib/bb/data_smart.py7
2 files changed, 8 insertions, 1 deletions
diff --git a/lib/bb/data.py b/lib/bb/data.py
index beaf08960..ecac66c6b 100644
--- a/lib/bb/data.py
+++ b/lib/bb/data.py
@@ -342,7 +342,7 @@ def build_dependencies(key, keys, shelldeps, vardepvals, d):
def generate_dependencies(d):
keys = set(key for key in d if not key.startswith("__"))
- shelldeps = set(key for key in keys if d.getVarFlag(key, "export") and not d.getVarFlag(key, "unexport"))
+ shelldeps = set(key for key in d.getVar("__exportlist", False) if d.getVarFlag(key, "export") and not d.getVarFlag(key, "unexport"))
vardepvals = set(key for key in keys if d.getVarFlag(key, "vardepvalue"))
deps = {}
diff --git a/lib/bb/data_smart.py b/lib/bb/data_smart.py
index a6a4b6c8a..1bb186e10 100644
--- a/lib/bb/data_smart.py
+++ b/lib/bb/data_smart.py
@@ -578,6 +578,13 @@ class DataSmart(MutableMapping):
if flag == "defaultval" and '_' in var:
self._setvar_update_overrides(var)
+ if flag == "unexport" or flag == "export":
+ if not "__exportlist" in self.dict:
+ self._makeShadowCopy("__exportlist")
+ if not "_content" in self.dict["__exportlist"]:
+ self.dict["__exportlist"]["_content"] = set()
+ self.dict["__exportlist"]["_content"].add(var)
+
def getVarFlag(self, var, flag, expand=False, noweakdefault=False):
local_var = self._findVar(var)
value = None