[bitbake-devel] [master][PATCH] Implement support for per-task exports
Christopher Larson
kergoth at gmail.com
Sat Apr 30 19:52:48 UTC 2016
From: Christopher Larson <chris_larson at mentor.com>
Signed-off-by: Christopher Larson <chris_larson at mentor.com>
---
bin/bitbake-worker | 10 ++++++++++
lib/bb/data.py | 4 +++-
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/bin/bitbake-worker b/bin/bitbake-worker
index 767a1c0..d02ab77 100755
--- a/bin/bitbake-worker
+++ b/bin/bitbake-worker
@@ -207,14 +207,24 @@ def fork_off_task(cfg, data, workerdata, fn, task, taskname, appends, taskdepdat
# exported_vars() returns a generator which *cannot* be passed to os.environ.update()
# successfully. We also need to unset anything from the environment which shouldn't be there
exports = bb.data.exported_vars(the_data)
+
bb.utils.empty_environment()
for e, v in exports:
os.environ[e] = v
+
for e in fakeenv:
os.environ[e] = fakeenv[e]
the_data.setVar(e, fakeenv[e])
the_data.setVarFlag(e, 'export', "1")
+ task_exports = the_data.getVarFlag(taskname, 'exports', True)
+ if task_exports:
+ for e in task_exports.split():
+ the_data.setVarFlag(e, 'export', '1')
+ v = the_data.getVar(e, True)
+ if v is not None:
+ os.environ[e] = v
+
if quieterrors:
the_data.setVarFlag(taskname, "quieterrors", "1")
diff --git a/lib/bb/data.py b/lib/bb/data.py
index dbc6dea..4b3a9f9 100644
--- a/lib/bb/data.py
+++ b/lib/bb/data.py
@@ -339,7 +339,7 @@ def build_dependencies(key, keys, shelldeps, varflagsexcl, d):
deps |= parser.references
deps = deps | (keys & parser.execs)
return deps, value
- varflags = d.getVarFlags(key, ["vardeps", "vardepvalue", "vardepsexclude", "vardepvalueexclude", "postfuncs", "prefuncs", "lineno", "filename"]) or {}
+ varflags = d.getVarFlags(key, ["vardeps", "vardepvalue", "vardepsexclude", "vardepvalueexclude", "exports", "postfuncs", "prefuncs", "lineno", "filename"]) or {}
vardeps = varflags.get("vardeps")
value = d.getVar(key, False)
@@ -383,6 +383,8 @@ def build_dependencies(key, keys, shelldeps, varflagsexcl, d):
deps = deps | set(varflags["prefuncs"].split())
if "postfuncs" in varflags:
deps = deps | set(varflags["postfuncs"].split())
+ if "exports" in varflags:
+ deps = deps | set(varflags["exports"].split())
else:
parser = d.expandWithRefs(value, key)
deps |= parser.references
--
2.8.0
More information about the bitbake-devel
mailing list