--- portage.py.orig 2003-07-30 11:39:22.000000000 -0700 +++ portage.py 2003-07-30 11:32:16.000000000 -0700 @@ -923,7 +923,7 @@ self.regenerate() def regenerate(self,useonly=0): - global incrementals,usesplit,profiledir + global incrementals,usesplit,pkgusesplit,profiledir if useonly: myincrementals=["USE"] else: @@ -991,6 +991,24 @@ usesplit.insert(0,self.configdict["defaults"]["ARCH"]) self.configlist[-1]["USE"]=string.join(usesplit," ") + pkgusesplit={} + self.configlist[-1]["PKGUSE"]="" + mylines=grabdict("/etc/portage/package.use") + for x in mylines: + mypkgusesplit=[] + for y in mylines[x]: + if y=="-*" or y=="*": + continue + if y[0]=="-": + z=y[1:] + else: + z="-"+y + if y not in usesplit and y not in mypkgusesplit and z not in mypkgusesplit: + mypkgusesplit.append(y) + if mypkgusesplit: + pkgusesplit[x]=mypkgusesplit + self.configlist[-1]["PKGUSE"] = self.configlist[-1]["PKGUSE"]+"( "+x+" => "+string.join(mypkgusesplit," ")+" )" + def __getitem__(self,mykey): if mykey=="CONFIG_PROTECT_MASK": suffix=" /etc/env.d" @@ -1501,7 +1519,7 @@ actionmap[mydo]["args"][1]) def doebuild(myebuild,mydo,myroot,debug=0,listonly=0,fetchonly=0): - global settings + global settings,pkgusesplit if mydo not in ["help","clean","prerm","postrm","preinst","postinst", "config","touch","setup","depend","fetch","digest", @@ -1545,6 +1563,12 @@ settings["PVR"]=mysplit[1] else: settings["PVR"]=mysplit[1]+"-"+mysplit[2] + + if pkgusesplit.has_key(category+"/"+mysplit[0]): + settings["PUSE"]=string.join(pkgusesplit[category+"/"+mysplit[0]], ' ') + else: + settings["PUSE"]="" + settings["SLOT"]="" if settings.has_key("PATH"): mysplit=string.split(settings["PATH"],":") @@ -2564,15 +2588,27 @@ mydep=mydep[1:] return prefix+cpv_expand(mydep,mydb)+postfix -def dep_check(depstring,mydbapi,use="yes",mode=None): +def dep_check(depstring,mydbapi,use="yes",mode=None,parent=None): """Takes a depend string and parses the condition.""" - global usesplit + global usesplit,pkgusesplit if use=="all": #enable everything (for repoman) myusesplit=["*"] elif use=="yes": #default behavior - myusesplit=usesplit + myusesplit=usesplit[:] + if parent and (pkgusesplit!={}): + myparent=pkgsplit(parent.split()[2])[0] + if pkgusesplit.has_key(myparent): + for x in pkgusesplit[myparent]: + if x[0]=="-": + y=x[1:] + else: + y="-"+x + if y in myusesplit: + myusesplit.remove(y) + if x not in myusesplit: + myusesplit.append(x) else: #we are being run by autouse(), don't consult USE vars yet. myusesplit=[]