Index: pym/portage_util.py =================================================================== --- pym/portage_util.py (revision 10293) +++ pym/portage_util.py (revision 10298) @@ -306,7 +306,14 @@ 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. + expand_map = expand + expand = True + else: + expand_map = {} + mykeys = {} try: f=open(mycfg,'r') except IOError, e: @@ -365,7 +372,8 @@ 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: Index: pym/portage.py =================================================================== --- pym/portage.py (revision 10293) +++ pym/portage.py (revision 10298) @@ -1440,8 +1440,10 @@ self.make_defaults_use = [] self.mygcfg = {} if self.profiles: - mygcfg_dlists = [getconfig(os.path.join(x, "make.defaults")) \ - for x in self.profiles] + 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: self.make_defaults_use.append(cfg.get("USE", ""))