--- bin/repoman.orig 2005-03-11 13:37:48.000000000 +0100 +++ bin/repoman 2005-03-11 14:11:16.000000000 +0100 @@ -19,6 +19,7 @@ import portage_checksum import portage_const import portage_dep +import portage_use_desc import cvstree import time from output import * @@ -465,32 +466,13 @@ else: print green("RepoMan scours the neighborhood...") -# retreive local USE list -luselist={} +# get a use_desc object for local/global USE flags checking try: - mylist=portage.grabfile(portdir+"/profiles/use.local.desc") - for mypos in range(0,len(mylist)): - mysplit=mylist[mypos].split()[0] - myuse=string.split(mysplit,":") - if len(myuse)==2: - if not luselist.has_key(myuse[0]): - luselist[myuse[0]] = [] - luselist[myuse[0]].append(myuse[1]) + use_desc=portage_use_desc.use_desc(portdir) except SystemExit, e: - raise # Need to propogate this + raise # Need to propagate this except: - err("Couldn't read from use.local.desc") - -# setup a uselist from portage -uselist=[] -try: - uselist=portage.grabfile(portdir+"/profiles/use.desc") - for l in range(0,len(uselist)): - uselist[l]=string.split(uselist[l])[0] -except SystemExit, e: - raise # Need to propogate this -except: - err("Couldn't read USE flags from use.desc") + err("Couldn't read use.[local.]desc.") # retrieve a list of current licenses in portage liclist=portage.listdir(portdir+"/licenses") @@ -975,20 +957,16 @@ if not os.system("egrep '^[^#]*\([^)]*\' "+checkdir+"/"+y+".ebuild >/dev/null 2>&1"): stats["ebuild.nesteddie"]=stats["ebuild.nesteddie"]+1 fails["ebuild.nesteddie"].append(x+"/"+y+".ebuild") - # uselist checks - global - myuse=string.split(portage.db["/"]["porttree"].dbapi.aux_get(catdir+"/"+y,["IUSE"])[0]) - for mypos in range(len(myuse)-1,-1,-1): - if myuse[mypos] and (myuse[mypos] in uselist): - del myuse[mypos] - # uselist checks - local + + # check IUSE flags against use[.local].desc + myuse = string.split(portage.db["/"]["porttree"].dbapi.aux_get(catdir+"/"+y,["IUSE"])[0]) mykey = portage.dep_getkey(catpkg) - if luselist.has_key(mykey): - for mypos in range(len(myuse)-1,-1,-1): - if myuse[mypos] and (myuse[mypos] in luselist[mykey]): - del myuse[mypos] - for mypos in range(len(myuse)): - stats["IUSE.invalid"]=stats["IUSE.invalid"]+1 - fails["IUSE.invalid"].append(x+"/"+y+".ebuild: %s" % myuse[mypos]) + for myflag in myuse: + if myflag not in use_desc.desc \ + and (mykey not in use_desc.local_desc \ + or myflag not in use_desc.local_desc[mykey]): + stats["IUSE.invalid"]=stats["IUSE.invalid"]+1 + fails["IUSE.invalid"].append(x+"/"+y+".ebuild: %s" % myflag) # license checks if not badlicsyntax: