From 61e5f233600bb082943eb095554771201d757bce Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Wed, 8 Oct 2008 22:35:31 +0000 Subject: Fix apparent breakage from r11593 (slot dep support): * Handle KeyError from element.getAttribute() in makeAtom() and makeVersion(). * Avoid 'sre_constants.error: unmatched group' exceptions in revisionMatch() when the atom does not have a slot. svn path=/main/trunk/; revision=11659 --- pym/portage/glsa.py | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'pym/portage/glsa.py') diff --git a/pym/portage/glsa.py b/pym/portage/glsa.py index 33d3cf027..a16b98c2c 100644 --- a/pym/portage/glsa.py +++ b/pym/portage/glsa.py @@ -226,8 +226,13 @@ def makeAtom(pkgname, versionNode): rValue = opMapping[versionNode.getAttribute("range")] \ + pkgname \ + "-" + getText(versionNode, format="strip") - if "slot" in versionNode.attributes and versionNode.getAttribute("slot") != "*": - rValue += ":"+versionNode.getAttribute("slot") + try: + slot = versionNode.getAttribute("slot").strip() + except KeyError: + pass + else: + if slot and slot != "*": + rValue += ":" + slot return str(rValue) def makeVersion(versionNode): @@ -243,8 +248,13 @@ def makeVersion(versionNode): """ rValue = opMapping[versionNode.getAttribute("range")] \ + getText(versionNode, format="strip") - if "slot" in versionNode.attributes and versionNode.getAttribute("slot") != "*": - rValue += ":"+versionNode.getAttribute("slot") + try: + slot = versionNode.getAttribute("slot").strip() + except KeyError: + pass + else: + if slot and slot != "*": + rValue += ":" + slot return rValue def match(atom, dbapi, match_type="default"): @@ -288,9 +298,15 @@ def revisionMatch(revisionAtom, dbapi, match_type="default"): @return: a list with the matching versions """ if match_type == "default" or not hasattr(dbapi, "xmatch"): - mylist = dbapi.match(re.sub(r'-r[0-9]+(:[^ ]+)?$', r'\1', revisionAtom[2:])) + if ":" in revisionAtom: + mylist = dbapi.match(re.sub(r'-r[0-9]+(:[^ ]+)?$', r'\1', revisionAtom[2:])) + else: + mylist = dbapi.match(re.sub("-r[0-9]+$", "", revisionAtom[2:])) else: - mylist = dbapi.xmatch(match_type, re.sub(r'-r[0-9]+(:[^ ]+)?$', r'\1', revisionAtom[2:])) + if ":" in revisionAtom: + mylist = dbapi.xmatch(match_type, re.sub(r'-r[0-9]+(:[^ ]+)?$', r'\1', revisionAtom[2:])) + else: + mylist = dbapi.xmatch(match_type, re.sub("-r[0-9]+$", "", revisionAtom[2:])) rValue = [] for v in mylist: r1 = pkgsplit(v)[-1][1:] -- cgit v1.2.3-1-g7c22