diff options
| -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 247b54fcd..87284c08f 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 8feb228fa..6d04d3808 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 82eef4498..19e67dbc3 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 119f08582..94bc62f7c 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! | 
