--- /tmp/portage.py 2003-04-03 13:29:03.000000000 -0800 +++ portage.py 2003-04-13 10:18:18.000000000 -0700 @@ -50,2 +50,2 @@ -incrementals=["USE","FEATURES","ACCEPT_KEYWORDS","ACCEPT_LICENSE","CONFIG_PROTECT_MASK","CONFIG_PROTECT","PRELINK_PATH","PRELINK_PATH_MASK"] -stickies=["KEYWORDS_ACCEPT","USE","CFLAGS","CXXFLAGS","MAKEOPTS","EXTRA_ECONF","EXTRA_EMAKE"] +incrementals=["USE","PKGUSE","FEATURES","ACCEPT_KEYWORDS","ACCEPT_LICENSE","CONFIG_PROTECT_MASK","CONFIG_PROTECT","PRELINK_PATH","PRELINK_PATH_MASK"] +stickies=["KEYWORDS_ACCEPT","USE","PKGUSE","CFLAGS","CXXFLAGS","MAKEOPTS","EXTRA_ECONF","EXTRA_EMAKE"] @@ -842 +842 @@ - global incrementals,usesplit,profiledir + global incrementals,usesplit,pkgusesplit,profiledir @@ -858,0 +859,2 @@ + if mykey=="USE": + mysplit=self.parseuse(mysplit) @@ -882,0 +885 @@ + @@ -895,0 +899,16 @@ + + mypkgusesplit=pkgusesplit + pkgusesplit={} + for x in mypkgusesplit: + mypos=0 + while mypos "+string.join(pkgusesplit[x]," ")+" )" @@ -896,0 +916,36 @@ + def parseuse(self,myusesplit,mypos=0): + global pkgusesplit + try: + if pkgusesplit: pass + except: + pkgusesplit={} + while myposfirstpos+3: + myitems=myusesplit[firstpos+2:mypos] + pkg=myusesplit[firstpos+1] + pkgusesplit[pkg]=[] + for x in myitems: + if x=="-*" or x=="*": + myusesplit[firstpos:mypos+1]=[] + mypos=firstpos-1 + break + if x[0]=="-": + y=x[1:] + else: + y="-"+x + if x not in pkgusesplit[pkg] and y not in pkgusesplit[pkg]: + pkgusesplit[pkg].append(x) + myusesplit[firstpos:mypos+1]=[] + mypos=firstpos-1 + break + mypos=mypos+1 + mypos=mypos+1 + return myusesplit + @@ -2290 +2345 @@ -def dep_check(depstring,mydbapi,use="yes",mode=None): +def dep_check(depstring,mydbapi,use="yes",mode=None,parent=None): @@ -2292 +2347 @@ - global usesplit + global usesplit,pkgusesplit @@ -2298 +2353,16 @@ - myusesplit=usesplit + myusesplit=[] + for x in usesplit: + myusesplit.append(x) + + 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)