--- bin/emerge.orig2 2005-03-11 11:07:21.000000000 +0100 +++ bin/emerge 2005-03-11 19:51:59.000000000 +0100 @@ -16,6 +16,7 @@ import portage_util import portage_locks import portage_exception +import portage_use_desc spinner_msgs = ["Gentoo Rocks ("+os.uname()[0]+")", @@ -160,6 +161,7 @@ "--skipfirst", "--tree", "--update", "--upgradeonly", +"--use-desc-all", "--use-desc-local", "--use-desc-special", "--usepkg", "--usepkgonly", "--verbose", "--version" ] @@ -348,6 +350,25 @@ print ">>> --pretend disables --ask... removing --ask from options." myopts.remove("--ask") +# Allow --use-desc-* only if in verbose pretend/ask mode +for myoption in ["--use-desc-special", "--use-desc-local", "--use-desc-all"]: + if myoption in myopts: + if ("--pretend" not in myopts) and ("--ask" not in myopts): + print ">>> "+myoption+" is only for --pretend or --ask modes... removing "+myoption+" from options." + myopts.remove(myoption) + elif "--verbose" not in myopts: + print ">>> "+myoption+" is only for --verbose mode... removing "+myoption+" from options." + myopts.remove(myoption) +# --use-desc-*: remove redundant options +if "--use-desc-all" in myopts: + if "--use-desc-local" in myopts: + myopts.remove("--use-desc-local") + if "--use-desc-special" in myopts: + myopts.remove("--use-desc-special") +if "--use-desc-local" in myopts: + if "--use-desc-special" in myopts: + myopts.remove("--use-desc-special") + # forbid --ask when not in a terminal # note: this breaks `emerge --ask | tee logfile`, but that doesn't work anyway. if ("--ask" in myopts) and (not sys.stdout.isatty()): @@ -1397,10 +1418,20 @@ changelogs=[] p=[] totalsize=0 - + use_desc=None + use_desc_level="" + global_desc_dict={} + local_desc_dict={} + + for myoption in ["--use-desc-all", "--use-desc-local", "--use-desc-special"]: + if myoption in myopts: + use_desc=portage_use_desc.use_desc(portage.settings['PORTDIR']) + use_desc_level=myoption[11:] + break + if "--verbose" in myopts: overlays = string.split(portage.settings['PORTDIR_OVERLAY']) - + if "--tree" in myopts: mylist.reverse() mygraph=self.digraph.copy() @@ -1560,6 +1591,25 @@ else: verboseadd += "[No ebuild?]" + # --use-desc-*: add new entries to the local and global USE flags + # descriptions dictionnaries + if iuse_split and use_desc and use_desc_level \ + and x[0] == "ebuild" and x[-1]!="nomerge": + my_global_desc_dict={} + my_local_desc_dict={} + mycatpkg=portage.dep_getkey(x[2]) + if use_desc_level=="all": + my_global_desc_dict=use_desc.get_pkg_flags_desc(iuse_split,mycatpkg,level="global") + my_local_desc_dict=use_desc.get_pkg_flags_desc(iuse_split,mycatpkg,level="local") + else: # "local" or "special" levels + my_local_desc_dict=use_desc.get_pkg_flags_desc(iuse_split,mycatpkg,level=use_desc_level) + for myflag in my_global_desc_dict: + global_desc_dict[myflag]=my_global_desc_dict[myflag] + if my_local_desc_dict and mycatpkg not in local_desc_dict: + local_desc_dict[mycatpkg]={} + for myflag in my_local_desc_dict: + local_desc_dict[mycatpkg][myflag]=my_local_desc_dict[myflag] + xs=portage.pkgsplit(x[2]) if xs[2]=="r0": xs[2]="" @@ -1647,6 +1697,28 @@ for x in overlays: y=y+1 print " "+teal("["+str(y)+"]"),x + if global_desc_dict: + print + print "Global USE flags descriptions:" + myflagkeys = global_desc_dict.keys() + myflagkeys.sort() + for myflag in myflagkeys: + print teal(myflag),teal("-"),global_desc_dict[myflag] + if local_desc_dict: + print + if use_desc_level=="special": + print "These USE flags have a package-specific description:" + else: + print "Local USE flags descriptions:" + mycatpkgkeys = local_desc_dict.keys() + mycatpkgkeys.sort() + for mycatpkg in mycatpkgkeys: + if local_desc_dict[mycatpkg]: + print darkgreen(mycatpkg) + myflagkeys = local_desc_dict[mycatpkg].keys() + myflagkeys.sort() + for myflag in myflagkeys: + print " ",teal(myflag),teal("-"),local_desc_dict[mycatpkg][myflag] if "--changelog" in myopts: print