diff options
author | Robert Bradford <rob@openedhand.com> | 2008-10-17 09:46:23 +0000 |
---|---|---|
committer | Robert Bradford <rob@openedhand.com> | 2008-10-17 09:46:23 +0000 |
commit | 9294b951744b5fc64dea7f10760bee0b1d8cd6f0 (patch) | |
tree | f28c47805f0fb89a5376645edaa9dead71379568 /bitbake-dev | |
parent | 603ae240ffb8833bf47dfbcc4e5be808714adf15 (diff) | |
download | 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-x | bitbake-dev/bin/bitbake | 13 | ||||
-rw-r--r-- | bitbake-dev/lib/bb/cooker.py | 4 | ||||
-rw-r--r-- | bitbake-dev/lib/bb/data.py | 2 | ||||
-rw-r--r-- | bitbake-dev/lib/bb/utils.py | 22 |
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 | ||
337 | def emit_var(var, o=sys.__stdout__, d = init(), all=False): | 335 | def 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 | ||
357 | def 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 | |||
371 | def 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 | |||
357 | def prunedir(topdir): | 379 | def 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! |