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

(-)/tmp/portage.py (-5 / +70 lines)
Lines 47-54 Link Here
47
	print green("         portage::250:portage")
47
	print green("         portage::250:portage")
48
	print
48
	print
49
49
50
incrementals=["USE","FEATURES","ACCEPT_KEYWORDS","ACCEPT_LICENSE","CONFIG_PROTECT_MASK","CONFIG_PROTECT","PRELINK_PATH","PRELINK_PATH_MASK"]
50
incrementals=["USE","PKGUSE","FEATURES","ACCEPT_KEYWORDS","ACCEPT_LICENSE","CONFIG_PROTECT_MASK","CONFIG_PROTECT","PRELINK_PATH","PRELINK_PATH_MASK"]
51
stickies=["KEYWORDS_ACCEPT","USE","CFLAGS","CXXFLAGS","MAKEOPTS","EXTRA_ECONF","EXTRA_EMAKE"]
51
stickies=["KEYWORDS_ACCEPT","PKGUSE","USE","CFLAGS","CXXFLAGS","MAKEOPTS","EXTRA_ECONF","EXTRA_EMAKE"]
52
52
53
def getcwd():
53
def getcwd():
54
	"this fixes situations where the current directory doesn't exist"
54
	"this fixes situations where the current directory doesn't exist"
Lines 839-845 Link Here
839
		self.regenerate()
839
		self.regenerate()
840
	
840
	
841
	def regenerate(self,useonly=0):
841
	def regenerate(self,useonly=0):
842
		global incrementals,usesplit,profiledir
842
		global incrementals,usesplit,pkgusesplit,profiledir
843
		if useonly:
843
		if useonly:
844
			myincrementals=["USE"]
844
			myincrementals=["USE"]
845
		else:
845
		else:
Lines 856-861 Link Here
856
					continue
856
					continue
857
				#variables are already expanded
857
				#variables are already expanded
858
				mysplit=curdb[mykey].split()
858
				mysplit=curdb[mykey].split()
859
				if mykey=="USE":
860
					mysplit=self.parseuse(mysplit)
859
				for x in mysplit:
861
				for x in mysplit:
860
					if x=="-*":
862
					if x=="-*":
861
						# "-*" is a special "minus" var that means "unset all settings".  so USE="-* gnome" will have *just* gnome enabled.
863
						# "-*" is a special "minus" var that means "unset all settings".  so USE="-* gnome" will have *just* gnome enabled.
Lines 893-899 Link Here
893
					if self.configdict["defaults"]["ARCH"] not in usesplit:
895
					if self.configdict["defaults"]["ARCH"] not in usesplit:
894
						usesplit.insert(0,self.configdict["defaults"]["ARCH"])
896
						usesplit.insert(0,self.configdict["defaults"]["ARCH"])
895
						self.configlist[-1]["USE"]=string.join(usesplit," ")
897
						self.configlist[-1]["USE"]=string.join(usesplit," ")
898
		mypkgusesplit=pkgusesplit
899
		pkgusesplit={}
900
		for x in mypkgusesplit:
901
			mypos=0
902
			while mypos<len(mypkgusesplit[x]):
903
				if mypkgusesplit[x][mypos] in usesplit:
904
					del mypkgusesplit[x][mypos]
905
				else:
906
					mypos=mypos+1
907
			if mypkgusesplit[x]!=[]:
908
				pkgusesplit[x]=mypkgusesplit[x]
909
		self.configlist[-1]["PKGUSE"]=""
910
		for x in pkgusesplit:
911
			self.configlist[-1]["PKGUSE"]=self.configlist[-1]["PKGUSE"]+"( "+x+" => "+string.join(pkgusesplit[x]," ")+" )"
896
	
912
	
913
	def parseuse(self,myusesplit,mypos=0):
914
		global pkgusesplit
915
		try:
916
			if pkgusesplit: pass
917
		except:
918
			pkgusesplit={}
919
		while mypos<len(myusesplit):
920
			if myusesplit[mypos]=="(":
921
				firstpos=mypos
922
				mypos=mypos+1
923
				while mypos<len(myusesplit):
924
					if myusesplit[mypos]==")":
925
						if mypos==firstpos+3:
926
							myitems=[myusesplit[mypos-1]]
927
						elif mypos>firstpos+3:
928
							myitems=myusesplit[firstpos+2:mypos]
929
						pkg=myusesplit[firstpos+1]
930
						pkgusesplit[pkg]=[]
931
						for x in myitems:
932
							if x=="-*" or x=="*":
933
								myusesplit[firstpos:mypos+1]=[]
934
								mypos=firstpos-1
935
								break
936
							if x[0]=="-":
937
								y=x[1:]
938
							else:
939
								y="-"+x
940
							if x not in pkgusesplit[pkg] and y not in pkgusesplit[pkg]:
941
								pkgusesplit[pkg].append(x)
942
						myusesplit[firstpos:mypos+1]=[]
943
						mypos=firstpos-1
944
						break
945
					mypos=mypos+1
946
			mypos=mypos+1
947
		return myusesplit
948
897
	def __getitem__(self,mykey):
949
	def __getitem__(self,mykey):
898
		if mykey=="CONFIG_PROTECT_MASK":
950
		if mykey=="CONFIG_PROTECT_MASK":
899
			suffix=" /etc/env.d"
951
			suffix=" /etc/env.d"
Lines 2262-2276 Link Here
2262
		mydep=mydep[1:]
2314
		mydep=mydep[1:]
2263
	return prefix+cpv_expand(mydep,mydb)+postfix
2315
	return prefix+cpv_expand(mydep,mydb)+postfix
2264
2316
2265
def dep_check(depstring,mydbapi,use="yes",mode=None):
2317
def dep_check(depstring,mydbapi,use="yes",mode=None,parent=None):
2266
	"""Takes a depend string and parses the condition."""
2318
	"""Takes a depend string and parses the condition."""
2267
	global usesplit
2319
	global usesplit,pkgusesplit
2268
	if use=="all":
2320
	if use=="all":
2269
		#enable everything (for repoman)
2321
		#enable everything (for repoman)
2270
		myusesplit=["*"]
2322
		myusesplit=["*"]
2271
	elif use=="yes":
2323
	elif use=="yes":
2272
		#default behavior
2324
		#default behavior
2273
		myusesplit=usesplit
2325
		myusesplit=usesplit
2326
		if parent and (pkgusesplit!={}):
2327
			myparent=string.split(parent)[2]
2328
			for x in pkgusesplit:
2329
				if string.count(myparent,x,0):
2330
					for y in pkgusesplit[x]:
2331
						if y[0]=="-":
2332
							z=y[1:]
2333
						else:
2334
							z="-"+y
2335
						if z in myusesplit:
2336
							myusesplit.remove(z)
2337
						if y not in myusesplit:
2338
							myusesplit.append(y)
2274
	else:
2339
	else:
2275
		#we are being run by autouse(), don't consult USE vars yet.
2340
		#we are being run by autouse(), don't consult USE vars yet.
2276
		myusesplit=[]
2341
		myusesplit=[]

Return to bug 13616