summaryrefslogtreecommitdiffstats
path: root/bitbake-dev
diff options
context:
space:
mode:
authorRobert Bradford <rob@openedhand.com>2008-10-17 09:46:23 +0000
committerRobert Bradford <rob@openedhand.com>2008-10-17 09:46:23 +0000
commit9294b951744b5fc64dea7f10760bee0b1d8cd6f0 (patch)
treef28c47805f0fb89a5376645edaa9dead71379568 /bitbake-dev
parent603ae240ffb8833bf47dfbcc4e5be808714adf15 (diff)
downloadast2050-yocto-poky-9294b951744b5fc64dea7f10760bee0b1d8cd6f0.zip
ast2050-yocto-poky-9294b951744b5fc64dea7f10760bee0b1d8cd6f0.tar.gz
bitbake-dev: Refactor the environment variable handling.
Do not clear the environment when saving the environment to the data store. Instead clear this once the cooker has forked. This ensures that the UI operates in a filtered (but not empty) environment. git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5526 311d38ba-8fff-0310-9ca6-ca027cbcb966
Diffstat (limited to 'bitbake-dev')
-rwxr-xr-xbitbake-dev/bin/bitbake13
-rw-r--r--bitbake-dev/lib/bb/cooker.py4
-rw-r--r--bitbake-dev/lib/bb/data.py2
-rw-r--r--bitbake-dev/lib/bb/utils.py22
4 files changed, 30 insertions, 11 deletions
diff --git a/bitbake-dev/bin/bitbake b/bitbake-dev/bin/bitbake
index 247b54f..87284c0 100755
--- a/bitbake-dev/bin/bitbake
+++ b/bitbake-dev/bin/bitbake
@@ -141,15 +141,10 @@ Default BBFILES are the .bb files in the current directory.""" )
cooker = bb.cooker.BBCooker(configuration)
- # Optionally clean up the environment
- if 'BB_PRESERVE_ENV' not in os.environ:
- if 'BB_ENV_WHITELIST' in os.environ:
- good_vars = os.environ['BB_ENV_WHITELIST'].split()
- else:
- good_vars = bb.utils.preserved_envvars_list()
- if 'BB_ENV_EXTRAWHITE' in os.environ:
- good_vars.extend(os.environ['BB_ENV_EXTRAWHITE'].split())
- bb.utils.filter_environment(good_vars)
+ # 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()
cooker.parseConfiguration()
host = cooker.server.host
diff --git a/bitbake-dev/lib/bb/cooker.py b/bitbake-dev/lib/bb/cooker.py
index 8feb228..6d04d38 100644
--- a/bitbake-dev/lib/bb/cooker.py
+++ b/bitbake-dev/lib/bb/cooker.py
@@ -907,6 +907,10 @@ class BBCooker:
def serve(self):
+ # Empty the environment. The environment will be populated as
+ # necessary from the data store.
+ bb.utils.empty_environment()
+
if self.configuration.profile:
try:
import cProfile as profile
diff --git a/bitbake-dev/lib/bb/data.py b/bitbake-dev/lib/bb/data.py
index 82eef44..19e67db 100644
--- a/bitbake-dev/lib/bb/data.py
+++ b/bitbake-dev/lib/bb/data.py
@@ -331,8 +331,6 @@ def inheritFromOS(d):
setVar(s, os.environ[s], d)
except TypeError:
pass
- os.unsetenv(s)
- del os.environ[s]
def emit_var(var, o=sys.__stdout__, d = init(), all=False):
"""Emit a variable to be sourced by a shell."""
diff --git a/bitbake-dev/lib/bb/utils.py b/bitbake-dev/lib/bb/utils.py
index 119f085..94bc62f 100644
--- a/bitbake-dev/lib/bb/utils.py
+++ b/bitbake-dev/lib/bb/utils.py
@@ -354,6 +354,28 @@ def filter_environment(good_vars):
return removed_vars
+def clean_environment():
+ """
+ Clean up any spurious environment variables. This will remove any
+ variables the user hasn't chose to preserve.
+ """
+ if 'BB_PRESERVE_ENV' not in os.environ:
+ if 'BB_ENV_WHITELIST' in os.environ:
+ good_vars = os.environ['BB_ENV_WHITELIST'].split()
+ else:
+ good_vars = preserved_envvars_list()
+ if 'BB_ENV_EXTRAWHITE' in os.environ:
+ good_vars.extend(os.environ['BB_ENV_EXTRAWHITE'].split())
+ filter_environment(good_vars)
+
+def empty_environment():
+ """
+ Remove all variable from the environment.
+ """
+ for s in os.environ.keys():
+ os.unsetenv(s)
+ del os.environ[s]
+
def prunedir(topdir):
# Delete everything reachable from the directory named in 'topdir'.
# CAUTION: This is dangerous!
OpenPOWER on IntegriCloud