From 692b87497e99379a6cf6362636aa06093ebd643c Mon Sep 17 00:00:00 2001 From: Christopher Larson Date: Sat, 30 Apr 2016 12:52:48 -0700 Subject: bitbake: Implement support for per-task exports (Bitbake rev: 4506ccf1495c6ed6e8ed678f4baa166bc94d1761) Signed-off-by: Christopher Larson Signed-off-by: Richard Purdie --- bitbake/bin/bitbake-worker | 10 ++++++++++ bitbake/lib/bb/data.py | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/bitbake/bin/bitbake-worker b/bitbake/bin/bitbake-worker index 5fcffddd4d..6a6b26b64a 100755 --- a/bitbake/bin/bitbake-worker +++ b/bitbake/bin/bitbake-worker @@ -208,14 +208,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/bitbake/lib/bb/data.py b/bitbake/lib/bb/data.py index e9ce0ad4d0..48d990dd16 100644 --- a/bitbake/lib/bb/data.py +++ b/bitbake/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 -- cgit v1.2.3-54-g00ecf