Bug #221755 - Enable variable substitution in make.defaults to work accross
authorZac Medico <zmedico@gentoo.org>
Sun, 11 May 2008 23:24:08 +0000 (23:24 -0000)
committerZac Medico <zmedico@gentoo.org>
Sun, 11 May 2008 23:24:08 +0000 (23:24 -0000)
multiple files instead of being confined to a single file. This allows
profiles to create incremental-like behavior with non-incremental variables
when desired. (trunk r10293)

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

pym/portage.py
pym/portage_util.py

index 2ee750e52bf51ce6dd05fcbd54ffba5dbf7adac7..a48f23e3da19f6914a6e6f175ac2ff4c28eed0a0 100644 (file)
@@ -1440,8 +1440,13 @@ class config:
                        self.make_defaults_use = []
                        self.mygcfg = {}
                        if self.profiles:
-                               mygcfg_dlists = [getconfig(os.path.join(x, "make.defaults")) \
-                                       for x in 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)
+
                                for cfg in mygcfg_dlists:
                                        if cfg:
                                                self.make_defaults_use.append(cfg.get("USE", ""))
index eb54076d432536d98f3bf656711999f2ed3bd4b8..e75e0cb152b0e4b76096709db712ece55d2b66cb 100644 (file)
@@ -306,7 +306,13 @@ class _tolerant_shlex(shlex.shlex):
                        return (newfile, StringIO.StringIO())
 
 def getconfig(mycfg, tolerant=0, allow_sourcing=False, expand=True):
-       mykeys={}
+       if isinstance(expand, dict):
+               # Some existing variable definitions have been
+               # passed in, for use in substitutions.
+               mykeys = expand.copy()
+               expand = True
+       else:
+               mykeys = {}
        try:
                f=open(mycfg,'r')
        except IOError, e: