diff --git a/bitbake/bin/bitbake b/bitbake/bin/bitbake index 89289050de..40b50e1688 100755 --- a/bitbake/bin/bitbake +++ b/bitbake/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/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py index 484fb2dc76..b1a0f25e75 100644 --- a/bitbake/lib/bb/utils.py +++ b/bitbake/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(): """