--- portage.py.orig 2006-06-24 15:14:59.000000000 +0200 +++ portage.py.orig 2006-06-29 21:36:21.000000000 +0200 @@ -912,6 +912,7 @@ self.locked = 0 self.mycpv = None self.puse = [] + self.penv = [] self.modifiedkeys = [] self.virtuals = {} @@ -959,6 +960,7 @@ "env": self.configlist[6] } self.profiles = copy.deepcopy(clone.profiles) self.backupenv = copy.deepcopy(clone.backupenv) + self.penvdict = copy.deepcopy(clone.penvdict) self.pusedict = copy.deepcopy(clone.pusedict) self.categories = copy.deepcopy(clone.categories) self.pkeywordsdict = copy.deepcopy(clone.pkeywordsdict) @@ -1179,10 +1181,21 @@ pmask_locations.append(abs_user_config) if os.environ.get("PORTAGE_CALLER","") == "repoman": + self.penvdict = {} self.pusedict = {} self.pkeywordsdict = {} self.punmaskdict = {} else: + #package.env + penvdict=grabdict_package( + os.path.join(abs_user_config, "package.env"), recursive=1) + self.penvdict = {} + for key in penvdict.keys(): + cp = dep_getkey(key) + if not self.penvdict.has_key(cp): + self.penvdict[cp] = {} + self.penvdict[cp][key] = penvdict[key] + pusedict = grabdict_package( os.path.join(abs_user_config, "package.use"), recursive=1) self.pusedict = {} @@ -1467,6 +1480,7 @@ self.modifiedkeys = [] if not keeping_pkg: self.puse = "" + self.penv = "" self.configdict["pkg"].clear() self.regenerate(use_cache=use_cache) @@ -1519,11 +1533,31 @@ self.pusekey = best_match_to_list(self.mycpv, self.pusedict[cp].keys()) if self.pusekey: newpuse = string.join(self.pusedict[cp][self.pusekey]) - if newpuse == self.puse: + newpenv = "" + if self.penvdict.has_key(cp): + self.penvkey = best_match_to_list(self.mycpv, self.penvdict[cp].keys()) + if self.penvkey: + newpenv = self.penvdict[cp][self.penvkey] + if self.puse == newpuse and self.penv == newpenv: return self.puse = newpuse + self.penv = newpenv self.configdict["pkg"]["PKGUSE"] = self.puse[:] # For saving to PUSE file self.configdict["pkg"]["USE"] = self.puse[:] # this gets appended to USE + for envname in self.penv: + penvfile = USER_CONFIG_PATH + "/env/" + envname + if not os.access(penvfile, os.R_OK): + writemsg("!!! Can't access package.env file %s\n" % penvfile) + else: + penvconfig = getconfig(penvfile) + if penvconfig is None: + writemsg("!!! Parsing error in %s\n" % penvfile) + else: + for penv in penvconfig.keys(): + if penv in self.configdict["pkg"] and penv in INCREMENTALS: + self.configdict["pkg"][penv] += " "+penvconfig[penv] + else: + self.configdict["pkg"][penv] = penvconfig[penv] self.reset(keeping_pkg=1,use_cache=use_cache) def setinst(self,mycpv,mydbapi):