Fix PROFILE_ONLY_VARIABLES handling in the config constructor
authorZac Medico <zmedico@gentoo.org>
Mon, 19 Nov 2007 00:02:34 +0000 (00:02 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 19 Nov 2007 00:02:34 +0000 (00:02 -0000)
so that variables are appropriately filtered from "backupenv",
since otherwise they can leak in from there.

svn path=/main/trunk/; revision=8524

pym/portage/__init__.py

index 57ba5ce0ab15f57b0a0d1e19ab5593823fd87d1f..487dd6ba93d1145167623bc678037edbb0883ee2 100644 (file)
@@ -969,9 +969,6 @@ class config(object):
                        self._use_wildcards = copy.deepcopy(clone._use_wildcards)
                else:
 
-                       # backupenv is for calculated incremental variables.
-                       self.backupenv = os.environ.copy()
-
                        def check_var_directory(varname, var):
                                if not os.path.isdir(var):
                                        writemsg(("!!! Error: %s='%s' is not a directory. " + \
@@ -1224,15 +1221,16 @@ class config(object):
                        self.configlist.append({})
                        self.configdict["auto"]=self.configlist[-1]
 
+                       # backupenv is used for calculating incremental variables.
+                       self.backupenv = os.environ.copy()
                        self.configlist.append(self.backupenv) # XXX Why though?
                        self.configdict["backupenv"]=self.configlist[-1]
 
-                       myenv = os.environ.copy()               
                        # Don't allow the user to override certain variables in the env
                        for k in profile_only_variables:
-                               myenv.pop(k, None)
+                               self.backupenv.pop(k, None)
 
-                       self.configlist.append(myenv)
+                       self.configlist.append(self.backupenv.copy())
                        self.configdict["env"]=self.configlist[-1]
 
                        # make lookuplist for loading package.*