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=[] |