]> code.ossystems Code Review - openembedded-core.git/commitdiff
bitbake: Refactor the environment variable handling
authorRobert Bradford <rob@openedhand.com>
Fri, 17 Oct 2008 09:46:35 +0000 (09:46 +0000)
committerRobert Bradford <rob@openedhand.com>
Fri, 17 Oct 2008 09:46:35 +0000 (09:46 +0000)
Refactor the environment variable handling so that it more closes matches the
changes that have been made in bitbake-dev.

git-svn-id: https://svn.o-hand.com/repos/poky/trunk@5527 311d38ba-8fff-0310-9ca6-ca027cbcb966

bitbake/bin/bitbake
bitbake/lib/bb/cooker.py
bitbake/lib/bb/data.py
bitbake/lib/bb/utils.py

index dc35152d57eefa00c283f4b879e3c92d94c1b00f..9a9b6d3bc6f758106be516997cc2047b5b732243 100755 (executable)
@@ -113,15 +113,9 @@ 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.
+    bb.utils.clean_environment()
 
     cooker.parseConfiguration()
 
index 50624d8d3380aa330aba750ae884de6f942fda2e..7477ee6c6fac3c21c62d93a86d0755af52ddba18 100644 (file)
@@ -596,6 +596,9 @@ class BBCooker:
         build.
         """
 
+        # Wipe the OS environment
+        bb.utils.empty_environment()
+
         if self.configuration.show_environment:
             self.showEnvironment(self.configuration.buildfile, self.configuration.pkgs_to_build)
             sys.exit( 0 )
index 82eef44989c6023314a7b228a925953384482ee0..19e67dbc37bea7e94780f6e4b7316e3e74e21351 100644 (file)
@@ -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."""
index 18fc9f72521fa83f4de155df0b343a9c6cc4dcda..0f402f62796e950a9e101718af63222f0b52590d 100644 (file)
@@ -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 variables 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!