summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2011-09-09 17:25:41 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-09-09 18:39:25 +0100
commitfa071627adac4b493e524c536b47485e728766c1 (patch)
tree77ee13410337f147f3d2ea4a4d6b4e2dbd551dd7 /bitbake
parent98c2da694ca4c72b3e222a593b8baddea102bde5 (diff)
downloadast2050-yocto-poky-fa071627adac4b493e524c536b47485e728766c1.zip
ast2050-yocto-poky-fa071627adac4b493e524c536b47485e728766c1.tar.gz
runqueue: Ensure task environment is correct
This fixes two problems: a) Variables which were in the parent environment but not set as "export" variables in the datastore could end up in the task environment b) oe.environ.update() can't cope with the generator returned by bb.data.exported_vars() Whilst the updated code isn't as neat, it does do the expected thing, sets the environment correctly and stops unwanted values leaking into the task environment. (Bitbake rev: 67e5e23034c5ec2b9efcca935242830306c0048d) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/runqueue.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 5a4321f..e2255e7 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -1072,6 +1072,7 @@ class RunQueueExecute:
# a fork() or exec*() activates PSEUDO...
envbackup = {}
+ fakeenv = {}
umask = None
taskdep = self.rqdata.dataCache.task_deps[fn]
@@ -1087,6 +1088,7 @@ class RunQueueExecute:
for key, value in (var.split('=') for var in envvars):
envbackup[key] = os.environ.get(key)
os.environ[key] = value
+ fakeenv[key] = value
fakedirs = (self.rqdata.dataCache.fakerootdirs[fn] or "").split()
for p in fakedirs:
@@ -1136,7 +1138,14 @@ class RunQueueExecute:
for h in self.rqdata.hash_deps:
the_data.setVar("BBHASHDEPS_%s" % h, self.rqdata.hash_deps[h])
- os.environ.update(bb.data.exported_vars(the_data))
+ # 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]
if quieterrors:
the_data.setVarFlag(taskname, "quieterrors", "1")
OpenPOWER on IntegriCloud