summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/egencache13
-rw-r--r--pym/repoman/utilities.py8
2 files changed, 16 insertions, 5 deletions
diff --git a/bin/egencache b/bin/egencache
index 4bfb5be8f..515c6566d 100755
--- a/bin/egencache
+++ b/bin/egencache
@@ -347,9 +347,16 @@ class GenUseLocalDesc(object):
level=logging.ERROR, noiselevel=-1)
self.returncode |= 1
else:
- usedict = parse_metadata_use(metadata)
- for flag in sorted(usedict.keys()):
- output.write('%s:%s - %s\n' % (cp, flag, usedict[flag]))
+ try:
+ usedict = parse_metadata_use(metadata)
+ except portage.exception.ParseError as e:
+ writemsg_level(
+ "ERROR: failed parsing %s/metadata.xml: %s\n" % (cp, e),
+ level=logging.ERROR, noiselevel=-1)
+ self.returncode |= 1
+ else:
+ for flag in sorted(usedict.keys()):
+ output.write('%s:%s - %s\n' % (cp, flag, usedict[flag]))
output.close()
diff --git a/pym/repoman/utilities.py b/pym/repoman/utilities.py
index ed0de4449..b2d17fc9a 100644
--- a/pym/repoman/utilities.py
+++ b/pym/repoman/utilities.py
@@ -131,11 +131,15 @@ def parse_metadata_use(xml_tree):
for flag in flags:
pkg_flag = flag.get("name")
- pkg_flag_value = whitespace_re.sub(' ', flag.text).strip()
if pkg_flag is None:
raise exception.ParseError("missing 'name' attribute for 'flag' tag")
+ if flag.text is None:
+ raise exception.ParseError("missing USE description with " + \
+ "the 'flag' tag (name=%s)" % pkg_flag)
+ pkg_flag_value = whitespace_re.sub(' ', flag.text).strip()
if not pkg_flag_value:
- raise exception.ParseError("missing USE description with the 'flag' tag")
+ raise exception.ParseError("missing USE description with " + \
+ "the 'flag' tag (name=%s)" % pkg_flag)
uselist[pkg_flag] = pkg_flag_value
return uselist