Index: emerge =================================================================== RCS file: /var/cvsroot/gentoo-src/portage/bin/emerge,v retrieving revision 1.332 diff -u -b -B -w -p -r1.332 emerge --- emerge 27 Sep 2004 05:44:05 -0000 1.332 +++ emerge 6 Oct 2004 06:59:51 -0000 @@ -1,5 +1,5 @@ #!/usr/bin/python -O -# Copyright 1999-2003 Gentoo Technologies, Inc. +# Copyright 1999-2004 Gentoo Foundation. # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-src/portage/bin/emerge,v 1.332 2004/09/27 05:44:05 carpaski Exp $ @@ -16,6 +16,50 @@ import portage_util import portage_locks import portage_exception +import string +from xml.sax import saxutils, make_parser, handler +from xml.sax.handler import feature_namespaces + +class Metadata_XML(handler.ContentHandler): + _inside_herd="No" + _inside_maintainer="No" + _inside_email="No" + _inside_longdescription="No" + + _herd = "" + _maintainers = [] + _longdescription = "" + + def startElement(self, tag, attr): + if tag == "herd": + self._inside_herd="Yes" + if tag == "longdescription": + self._inside_longdescription="Yes" + if tag == "maintainer": + self._inside_maintainer="Yes" + if tag == "email": + self._inside_email="Yes" + + def endElement(self, tag): + if tag == "herd": + self._inside_herd="No" + if tag == "longdescription": + self._inside_longdescription="No" + if tag == "maintainer": + self._inside_maintainer="No" + if tag == "email": + self._inside_email="No" + + def characters(self, contents): + if self._inside_herd == "Yes": + self._herd = contents + + if self._inside_longdescription == "Yes": + self._longdescription = contents + + if self._inside_maintainer=="Yes" and self._inside_email=="Yes": + self._maintainers.append(contents) + spinner_msgs = ["Gentoo Rocks ("+os.uname()[0]+")", "Thank you for using Gentoo. :)", @@ -1480,6 +1524,23 @@ class depgraph: iuse=blue("-"+ebuild_iuse) verboseadd+=iuse+usechange+" " + metadata_file=portage.settings["PORTDIR"] + "/" + portage.pkgsplit(x[2])[0] + "/metadata.xml" + if not os.path.exists(metadata_file): + verboseadd += red("(Missing metadata.xml) ") + else: + parser = make_parser() + handler = Metadata_XML() + handler._maintainers = [] + parser.setContentHandler(handler) + parser.parse( metadata_file ) + + if len(handler._herd) > 0: + verboseadd += "("+ teal("H:" + handler._herd) + ")" + if len(handler._maintainers) < 1: + verboseadd += " (" + teal("M:" + handler._herd) + ") " + else: + verboseadd += " ("+ teal("M:" + ", ".join(handler._maintainers) )+") " + # size verbose mysize=0 if x[0] == "ebuild" and x[-1]!="nomerge":