summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/utils.py
diff options
context:
space:
mode:
authorJoshua Lock <josh@linux.intel.com>2011-08-12 17:58:11 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2011-08-15 09:49:37 +0100
commit61d83c6d6b23ea0fa3f99dfb53bf47c727c5a1c6 (patch)
treecbddb0ea6bd9505fc99eb8500b27980d65b9bd59 /bitbake/lib/bb/utils.py
parenta6c48298b17e6a5844b3638b422fe226e3b67b89 (diff)
downloadpoky-61d83c6d6b23ea0fa3f99dfb53bf47c727c5a1c6.tar.gz
Ensure only the filtered environment variables are inherited from the OS
The recent change which modified inheritFromOS to use the intial environment, rather than the current environment, introduced a bug such that variables which had been cleaned from the environment where still set in the data store. This patch changes things such that a list of approved environment variables is saved after the environment is cleaned and only the variables in this list are inherited in inheritFromOS. CC: James Limbouris <james.limbouris@gmail.com> CC: Chris Larson <clarson@kergoth.com> (Bitbake rev: cb6c07054e8baf94614713ec257c643b22266d75) Signed-off-by: Joshua Lock <josh@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/utils.py')
-rw-r--r--bitbake/lib/bb/utils.py23
1 files changed, 16 insertions, 7 deletions
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py
index 1cf1a8da44..1f5540716a 100644
--- a/bitbake/lib/bb/utils.py
+++ b/bitbake/lib/bb/utils.py
@@ -565,18 +565,27 @@ def create_interactive_env(d):
565 for k in preserved_envvars_exported_interactive(): 565 for k in preserved_envvars_exported_interactive():
566 os.setenv(k, bb.data.getVar(k, d, True)) 566 os.setenv(k, bb.data.getVar(k, d, True))
567 567
568def approved_variables():
569 """
570 Determine and return the list of whitelisted variables which are approved
571 to remain in the envrionment.
572 """
573 approved = []
574 if 'BB_ENV_WHITELIST' in os.environ:
575 approved = os.environ['BB_ENV_WHITELIST'].split()
576 else:
577 approved = preserved_envvars()
578 if 'BB_ENV_EXTRAWHITE' in os.environ:
579 approved.extend(os.environ['BB_ENV_EXTRAWHITE'].split())
580 return approved
581
568def clean_environment(): 582def clean_environment():
569 """ 583 """
570 Clean up any spurious environment variables. This will remove any 584 Clean up any spurious environment variables. This will remove any
571 variables the user hasn't chose to preserve. 585 variables the user hasn't chosen to preserve.
572 """ 586 """
573 if 'BB_PRESERVE_ENV' not in os.environ: 587 if 'BB_PRESERVE_ENV' not in os.environ:
574 if 'BB_ENV_WHITELIST' in os.environ: 588 good_vars = approved_variables()
575 good_vars = os.environ['BB_ENV_WHITELIST'].split()
576 else:
577 good_vars = preserved_envvars()
578 if 'BB_ENV_EXTRAWHITE' in os.environ:
579 good_vars.extend(os.environ['BB_ENV_EXTRAWHITE'].split())
580 filter_environment(good_vars) 589 filter_environment(good_vars)
581 590
582def empty_environment(): 591def empty_environment():