Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 13616 | Differences between
and this patch

Collapse All | Expand All

(-)/usr/lib/python2.2/site-packages/portage.py (-3 / +65 lines)
Lines 800-806 Link Here
800
		self.regenerate()
800
		self.regenerate()
801
	
801
	
802
	def regenerate(self,useonly=0):
802
	def regenerate(self,useonly=0):
803
		global incrementals,usesplit,profiledir
803
		global incrementals,usesplit,pkgusesplit,profiledir
804
		if useonly:
804
		if useonly:
805
			myincrementals=["USE"]
805
			myincrementals=["USE"]
806
		else:
806
		else:
Lines 817-822 Link Here
817
					continue
817
					continue
818
				#variables are already expanded
818
				#variables are already expanded
819
				mysplit=curdb[mykey].split()
819
				mysplit=curdb[mykey].split()
820
				if mykey=="USE":
821
					mysplit=self.parseuse(mysplit)
820
				for x in mysplit:
822
				for x in mysplit:
821
					if x=="-*":
823
					if x=="-*":
822
						# "-*" is a special "minus" var that means "unset all settings".  so USE="-* gnome" will have *just* gnome enabled.
824
						# "-*" is a special "minus" var that means "unset all settings".  so USE="-* gnome" will have *just* gnome enabled.
Lines 850-856 Link Here
850
					if self.configdict["defaults"]["ARCH"] not in usesplit:
852
					if self.configdict["defaults"]["ARCH"] not in usesplit:
851
						usesplit.insert(0,self.configdict["defaults"]["ARCH"])
853
						usesplit.insert(0,self.configdict["defaults"]["ARCH"])
852
						self.configlist[-1]["USE"]=string.join(usesplit," ")
854
						self.configlist[-1]["USE"]=string.join(usesplit," ")
855
		mypkgusesplit=pkgusesplit
856
		pkgusesplit={}
857
		for x in mypkgusesplit:
858
			mypos=0
859
			while mypos<len(mypkgusesplit[x]):
860
				if mypkgusesplit[x][mypos] in usesplit:
861
					del mypkgusesplit[x][mypos]
862
				else:
863
					mypos=mypos+1
864
			if mypkgusesplit[x]!=[]:
865
				pkgusesplit[x]=mypkgusesplit[x]
853
	
866
	
867
	def parseuse(self,myusesplit,mypos=0):
868
		global pkgusesplit
869
		try:
870
			if pkgusesplit: pass
871
		except:
872
			pkgusesplit={}
873
		while mypos<len(myusesplit):
874
			if myusesplit[mypos]=="(":
875
				firstpos=mypos
876
				mypos=mypos+1
877
				while mypos<len(myusesplit):
878
					if myusesplit[mypos]==")":
879
						if mypos==firstpos+3:
880
							myitems=[myusesplit[mypos-1]]
881
						elif mypos>firstpos+3:
882
							myitems=myusesplit[firstpos+2:mypos]
883
						pkg=myusesplit[firstpos+1]
884
						pkgusesplit[pkg]=[]
885
						for x in myitems:
886
							if x=="-*" or x=="*":
887
								myusesplit[firstpos:mypos+1]=[]
888
								mypos=firstpos-1
889
								break
890
							if x[0]=="-":
891
								y=x[1:]
892
							else:
893
								y="-"+x
894
							if x not in pkgusesplit[pkg] and y not in pkgusesplit[pkg]:
895
								pkgusesplit[pkg].append(x)
896
						myusesplit[firstpos:mypos+1]=[]
897
						mypos=firstpos-1
898
						break
899
					mypos=mypos+1
900
			mypos=mypos+1
901
		return myusesplit
902
854
	def __getitem__(self,mykey):
903
	def __getitem__(self,mykey):
855
		if mykey=="CONFIG_PROTECT_MASK":
904
		if mykey=="CONFIG_PROTECT_MASK":
856
			suffix=" /etc/env.d"
905
			suffix=" /etc/env.d"
Lines 2218-2232 Link Here
2218
		mydep=mydep[1:]
2267
		mydep=mydep[1:]
2219
	return prefix+cpv_expand(mydep,mydb)+postfix
2268
	return prefix+cpv_expand(mydep,mydb)+postfix
2220
2269
2221
def dep_check(depstring,mydbapi,use="yes",mode=None):
2270
def dep_check(depstring,mydbapi,use="yes",mode=None,parent=None):
2222
	"""Takes a depend string and parses the condition."""
2271
	"""Takes a depend string and parses the condition."""
2223
	global usesplit
2272
	global usesplit,pkgusesplit
2224
	if use=="all":
2273
	if use=="all":
2225
		#enable everything (for repoman)
2274
		#enable everything (for repoman)
2226
		myusesplit=["*"]
2275
		myusesplit=["*"]
2227
	elif use=="yes":
2276
	elif use=="yes":
2228
		#default behavior
2277
		#default behavior
2229
		myusesplit=usesplit
2278
		myusesplit=usesplit
2279
		if parent and (pkgusesplit!={}):
2280
			myparent=string.split(parent)[2]
2281
			for x in pkgusesplit:
2282
				if string.count(myparent,x,0):
2283
					for y in pkgusesplit[x]:
2284
						if y[0]=="-":
2285
							z=y[1:]
2286
						else:
2287
							z="-"+y
2288
						if z in myusesplit:
2289
							myusesplit.remove(z)
2290
						if y not in myusesplit:
2291
							myusesplit.append(y)
2230
	else:
2292
	else:
2231
		#we are being run by autouse(), don't consult USE vars yet.
2293
		#we are being run by autouse(), don't consult USE vars yet.
2232
		myusesplit=[]
2294
		myusesplit=[]

Return to bug 13616