summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2013-02-11 11:00:45 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-02-11 11:07:16 +0000
commitfc330d810099c57fefd4e706159a73ad8401d97c (patch)
tree267162caaf128e17a8e0437546f7b31252a242fb
parentbb53b47710ca4579e20284668cb354f734c3d502 (diff)
downloadbitbake-fc330d810099c57fefd4e706159a73ad8401d97c.tar.gz
bitbake/utils: Improve environment handling to allow UIs access to original environment
We need to empty out the environment whilst we build the cooker but we need the environment for the UIs since hob uses DISPLAY and other session variables. This patch adapts the utils functions to return removed environment components so we can reinject them for use by the UI, allowing hob to work again. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-xbin/bitbake10
-rw-r--r--lib/bb/utils.py10
2 files changed, 12 insertions, 8 deletions
diff --git a/bin/bitbake b/bin/bitbake
index 89289050d..40b50e168 100755
--- a/bin/bitbake
+++ b/bin/bitbake
@@ -229,10 +229,8 @@ Default BBFILES are the .bb files in the current directory.""")
# 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.)
- bb.utils.clean_environment()
+ # Clear away any spurious environment variables while we stoke up the cooker
+ cleanedvars = bb.utils.clean_environment()
server = server.BitBakeServer()
if configuration.bind:
@@ -258,6 +256,10 @@ Default BBFILES are the .bb files in the current directory.""")
# Setup a connection to the server (cooker)
server_connection = server.establishConnection()
+ # Restore the environment in case the UI needs it
+ for k in cleanedvars:
+ os.environ[k] = cleanedvars[k]
+
try:
return server.launchUI(ui_main, server_connection.connection, server_connection.events)
finally:
diff --git a/lib/bb/utils.py b/lib/bb/utils.py
index 484fb2dc7..b1a0f25e7 100644
--- a/lib/bb/utils.py
+++ b/lib/bb/utils.py
@@ -474,17 +474,17 @@ def filter_environment(good_vars):
are not known and may influence the build in a negative way.
"""
- removed_vars = []
+ removed_vars = {}
for key in os.environ.keys():
if key in good_vars:
continue
- removed_vars.append(key)
+ removed_vars[key] = os.environ[key]
os.unsetenv(key)
del os.environ[key]
if len(removed_vars):
- logger.debug(1, "Removed the following variables from the environment: %s", ", ".join(removed_vars))
+ logger.debug(1, "Removed the following variables from the environment: %s", ", ".join(removed_vars.keys()))
return removed_vars
@@ -509,7 +509,9 @@ def clean_environment():
"""
if 'BB_PRESERVE_ENV' not in os.environ:
good_vars = approved_variables()
- filter_environment(good_vars)
+ return filter_environment(good_vars)
+
+ return {}
def empty_environment():
"""