summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoshua Lock <josh@linux.intel.com>2011-07-22 10:21:00 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-07-25 12:50:23 +0100
commit54c7206165c0e7cfe5f7b243c80461baf5e7dfb1 (patch)
tree4db01357db7a80ae848b0cb0ec008ba34a3ad0e7
parent0cbf5dcaf9f67522bd58d868aa01f28e846dfc19 (diff)
downloadbitbake-contrib-54c7206165c0e7cfe5f7b243c80461baf5e7dfb1.tar.gz
bitbake|cooker: save a copy of the environment when BitBake is started
Create a data store in the cooker containing the values of the environment from when BitBake is launched such that child processes can replicate (and/or use values from) the host environment, rather than the cleaned up environment that the main BitBake process uses. Signed-off-by: Joshua Lock <josh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-xbin/bitbake5
-rw-r--r--lib/bb/cooker.py10
2 files changed, 13 insertions, 2 deletions
diff --git a/bin/bitbake b/bin/bitbake
index 8d6fef7b8..5398cf122 100755
--- a/bin/bitbake
+++ b/bin/bitbake
@@ -197,6 +197,9 @@ Default BBFILES are the .bb files in the current directory.""")
handler = bb.event.LogHandler()
logger.addHandler(handler)
+ # Before we start modifying the environment we should take a pristine
+ # copy for possible later use
+ initialenv = os.environ.copy()
# Clear away any spurious environment variables. But don't wipe the
# environment totally. This is necessary to ensure the correct operation
# of the UIs (e.g. for DISPLAY, etc.)
@@ -207,7 +210,7 @@ Default BBFILES are the .bb files in the current directory.""")
server.initServer()
idle = server.getServerIdleCB()
- cooker = bb.cooker.BBCooker(configuration, idle)
+ cooker = bb.cooker.BBCooker(configuration, idle, initialenv)
cooker.parseCommandLine()
server.addcooker(cooker)
diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index 3a72880a4..d8535a7a4 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -78,7 +78,7 @@ class BBCooker:
Manages one bitbake build run
"""
- def __init__(self, configuration, server_registration_cb):
+ def __init__(self, configuration, server_registration_cb, savedenv={}):
self.status = None
self.appendlist = {}
self.skiplist = {}
@@ -87,6 +87,14 @@ class BBCooker:
self.configuration = configuration
+ # Keep a datastore of the initial environment variables and their
+ # values from when BitBake was launched to enable child processes
+ # to use environment variables which have been cleaned from the
+ # BitBake processes env
+ self.savedenv = bb.data.init()
+ for k in savedenv:
+ self.savedenv.setVar(k, savedenv[k])
+
self.caches_array = []
# Currently, only Image Creator hob ui needs extra cache.
# So, we save Extra Cache class name and container file