--- /usr/lib/portage/pym/repoman/utilities.py.old 2008-06-20 09:10:06.000000000 -0400 +++ /usr/lib/portage/pym/repoman/utilities.py 2008-07-11 17:34:09.000000000 -0400 @@ -12,6 +12,8 @@ import os import sys +from xml.dom import minidom +from xml.dom import NotFoundErr from portage import output from portage.output import red, green from portage import exception @@ -109,6 +111,33 @@ usedict[pkg].add(flag) return usedict +def parse_metadata_use(mylines, uselist=None): + """ + Records are wrapped in XML as per GLEP 56 + returns a dict of the form a list of flags""" + if uselist is None: + uselist = [] + metadatadom = minidom.parse(mylines) + + try: + usetag = metadatadom.getElementsByTagName("use") + if not usetag: + return uselist + except NotFoundErr: + return uselist + + try: + flags = usetag[0].getElementsByTagName("flag") + except NotFoundErr: + raise exception,ParseError("metadata.xml: Malformed input: missing 'flag' tag(s)") + for flag in flags: + pkg_flag = flag.getAttribute("name") + if pkg_flag is "": + raise exception,ParseError("metadata.xml: Malformed input: missing 'name' attribute for 'flag' tag") + uselist.append(pkg_flag) + metadatadom.unlink() + return uselist + def FindPackagesToScan(settings, startdir, reposplit): """ Try to find packages that need to be scanned