summaryrefslogtreecommitdiffstats
path: root/pym/portage/glsa.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-10-08 22:35:31 +0000
committerZac Medico <zmedico@gentoo.org>2008-10-08 22:35:31 +0000
commit61e5f233600bb082943eb095554771201d757bce (patch)
tree3ee651cdf12e08e758e537caa57f4f7ef581470d /pym/portage/glsa.py
parent2b9fc8209f26f4de740d72207cc15accf6766f63 (diff)
downloadportage-61e5f233600bb082943eb095554771201d757bce.tar.gz
portage-61e5f233600bb082943eb095554771201d757bce.tar.bz2
portage-61e5f233600bb082943eb095554771201d757bce.zip
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
Diffstat (limited to 'pym/portage/glsa.py')
-rw-r--r--pym/portage/glsa.py28
1 files changed, 22 insertions, 6 deletions
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:]