--- /tmp/portage.py.orig 2003-06-23 23:20:06.000000000 -0700 +++ portage.py 2003-07-11 13:50:39.000000000 -0700 @@ -887,7 +887,7 @@ self.regenerate() def regenerate(self,useonly=0): - global incrementals,usesplit,profiledir + global incrementals,usesplit,pkgusesplit,profiledir if useonly: myincrementals=["USE"] else: @@ -942,6 +942,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 x=="-*" or x=="*": + 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" @@ -2507,15 +2525,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=[]