Fix the variable subsitution code from bug #221755 so that variable
authorZac Medico <zmedico@gentoo.org>
Mon, 12 May 2008 00:01:26 +0000 (00:01 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 12 May 2008 00:01:26 +0000 (00:01 -0000)
assignments from earlier files don't leak into variable assignments
from later files (except through substitution). (trunk r10294:10297)

svn path=/main/branches/2.1.2/; revision=10298

pym/portage.py
pym/portage_util.py

index a48f23e3da19f6914a6e6f175ac2ff4c28eed0a0..3947db8cdecc0b8685e2e950563b45a38f37bb57 100644 (file)
@@ -1440,12 +1440,9 @@ class config:
                        self.make_defaults_use = []
                        self.mygcfg = {}
                        if self.profiles:
-                               mygcfg_dlists = []
-                               var_map = {}
-                               for x in self.profiles:
-                                       var_map = getconfig(os.path.join(x, "make.defaults"),
-                                               expand=var_map)
-                                       mygcfg_dlists.append(var_map)
+                               expand_map = {}
+                               mygcfg_dlists = [getconfig(os.path.join(x, "make.defaults"),
+                                       expand=expand_map) for x in self.profiles]
 
                                for cfg in mygcfg_dlists:
                                        if cfg:
index e75e0cb152b0e4b76096709db712ece55d2b66cb..b9fc903543bdb7dfabba08f851cca6444ef4d4a5 100644 (file)
@@ -309,10 +309,11 @@ def getconfig(mycfg, tolerant=0, allow_sourcing=False, expand=True):
        if isinstance(expand, dict):
                # Some existing variable definitions have been
                # passed in, for use in substitutions.
-               mykeys = expand.copy()
+               expand_map = expand
                expand = True
        else:
-               mykeys = {}
+               expand_map = {}
+       mykeys = {}
        try:
                f=open(mycfg,'r')
        except IOError, e:
@@ -371,7 +372,8 @@ def getconfig(mycfg, tolerant=0, allow_sourcing=False, expand=True):
                                else:
                                        return mykeys
                        if expand:
-                               mykeys[key] = varexpand(val, mykeys)
+                               mykeys[key] = varexpand(val, expand_map)
+                               expand_map[key] = mykeys[key]
                        else:
                                mykeys[key] = val
        except SystemExit, e: