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)
downloadpoky-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 247b54fcd3..87284c08fe 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.""" )
141 141
142 cooker = bb.cooker.BBCooker(configuration) 142 cooker = bb.cooker.BBCooker(configuration)
143 143
144 # Optionally clean up the environment 144 # Clear away any spurious environment variables. But don't wipe the
145 if 'BB_PRESERVE_ENV' not in os.environ: 145 # environment totally. This is necessary to ensure the correct operation
146 if 'BB_ENV_WHITELIST' in os.environ: 146 # of the UIs (e.g. for DISPLAY, etc.)
147 good_vars = os.environ['BB_ENV_WHITELIST'].split() 147 bb.utils.clean_environment()
148 else:
149 good_vars = bb.utils.preserved_envvars_list()
150 if 'BB_ENV_EXTRAWHITE' in os.environ:
151 good_vars.extend(os.environ['BB_ENV_EXTRAWHITE'].split())
152 bb.utils.filter_environment(good_vars)
153 148
154 cooker.parseConfiguration() 149 cooker.parseConfiguration()
155 host = cooker.server.host 150 host = cooker.server.host
diff --git a/bitbake-dev/lib/bb/cooker.py b/bitbake-dev/lib/bb/cooker.py
index 8feb228faf..6d04d38080 100644
--- a/bitbake-dev/lib/bb/cooker.py
+++ b/bitbake-dev/lib/bb/cooker.py
@@ -907,6 +907,10 @@ class BBCooker:
907 907
908 def serve(self): 908 def serve(self):
909 909
910 # Empty the environment. The environment will be populated as
911 # necessary from the data store.
912 bb.utils.empty_environment()
913
910 if self.configuration.profile: 914 if self.configuration.profile:
911 try: 915 try:
912 import cProfile as profile 916 import cProfile as profile
diff --git a/bitbake-dev/lib/bb/data.py b/bitbake-dev/lib/bb/data.py
index 82eef44989..19e67dbc37 100644
--- a/bitbake-dev/lib/bb/data.py
+++ b/bitbake-dev/lib/bb/data.py
@@ -331,8 +331,6 @@ def inheritFromOS(d):
331 setVar(s, os.environ[s], d) 331 setVar(s, os.environ[s], d)
332 except TypeError: 332 except TypeError:
333 pass 333 pass
334 os.unsetenv(s)
335 del os.environ[s]
336 334
337def emit_var(var, o=sys.__stdout__, d = init(), all=False): 335def emit_var(var, o=sys.__stdout__, d = init(), all=False):
338 """Emit a variable to be sourced by a shell.""" 336 """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 119f08582d..94bc62f7cf 100644
--- a/bitbake-dev/lib/bb/utils.py
+++ b/bitbake-dev/lib/bb/utils.py
@@ -354,6 +354,28 @@ def filter_environment(good_vars):
354 354
355 return removed_vars 355 return removed_vars
356 356
357def clean_environment():
358 """
359 Clean up any spurious environment variables. This will remove any
360 variables the user hasn't chose to preserve.
361 """
362 if 'BB_PRESERVE_ENV' not in os.environ:
363 if 'BB_ENV_WHITELIST' in os.environ:
364 good_vars = os.environ['BB_ENV_WHITELIST'].split()
365 else:
366 good_vars = preserved_envvars_list()
367 if 'BB_ENV_EXTRAWHITE' in os.environ:
368 good_vars.extend(os.environ['BB_ENV_EXTRAWHITE'].split())
369 filter_environment(good_vars)
370
371def empty_environment():
372 """
373 Remove all variable from the environment.
374 """
375 for s in os.environ.keys():
376 os.unsetenv(s)
377 del os.environ[s]
378
357def prunedir(topdir): 379def prunedir(topdir):
358 # Delete everything reachable from the directory named in 'topdir'. 380 # Delete everything reachable from the directory named in 'topdir'.
359 # CAUTION: This is dangerous! 381 # CAUTION: This is dangerous!