aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorfuzzyray <fuzzyray@gentoo.org>2009-05-07 21:55:32 +0000
committerfuzzyray <fuzzyray@gentoo.org>2009-05-07 21:55:32 +0000
commit30f9eef363cd3e65a2a3c0f428b0ac107e8fc88c (patch)
tree31ac98c0fa721484f07cbb6044290d9f53ed6cc9 /src
parentAdd patch from Robert Buchholz: Reformat '2008-01-01' dates to 'January 01, 2... (diff)
downloadgentoolkit-30f9eef363cd3e65a2a3c0f428b0ac107e8fc88c.tar.gz
gentoolkit-30f9eef363cd3e65a2a3c0f428b0ac107e8fc88c.tar.bz2
gentoolkit-30f9eef363cd3e65a2a3c0f428b0ac107e8fc88c.zip
Add patch from Robert Buchholz:
Backport SLOT support from Portage 2.2 glsa.py In particular, this is a port of these commits: commit 856616597ee791efa42dd59760db8e50e72efffd Author: zmedico <zmedico@ac592a22-f3fe-0310-977e-98394eae9e84> Date: Wed Oct 8 22:35:31 2008 +0000 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=/branches/gentoolkit-0.2.4/; revision=624
Diffstat (limited to 'src')
-rw-r--r--src/glsa-check/glsa.py27
1 files changed, 24 insertions, 3 deletions
diff --git a/src/glsa-check/glsa.py b/src/glsa-check/glsa.py
index b1ff847..de6f48d 100644
--- a/src/glsa-check/glsa.py
+++ b/src/glsa-check/glsa.py
@@ -273,6 +273,13 @@ def makeAtom(pkgname, versionNode):
rValue = opMapping[versionNode.getAttribute("range")] \
+ pkgname \
+ "-" + getText(versionNode, format="strip")
+ try:
+ slot = versionNode.getAttribute("slot").strip()
+ except KeyError:
+ pass
+ else:
+ if slot and slot != "*":
+ rValue += ":" + slot
return str(rValue)
def makeVersion(versionNode):
@@ -286,8 +293,16 @@ def makeVersion(versionNode):
@rtype: String
@return: the version string
"""
- return opMapping[versionNode.getAttribute("range")] \
+ rValue = opMapping[versionNode.getAttribute("range")] \
+getText(versionNode, format="strip")
+ try:
+ slot = versionNode.getAttribute("slot").strip()
+ except KeyError:
+ pass
+ else:
+ if slot and slot != "*":
+ rValue += ":" + slot
+ return rValue
def match(atom, portdbname, match_type="default"):
"""
@@ -331,9 +346,15 @@ def revisionMatch(revisionAtom, portdb, match_type="default"):
@return: a list with the matching versions
"""
if match_type == "default" or not hasattr(portdb, "xmatch"):
- mylist = portdb.match(re.sub("-r[0-9]+$", "", revisionAtom[2:]))
+ if ":" in revisionAtom:
+ mylist = portdb.match(re.sub(r'-r[0-9]+(:[^ ]+)?$', r'\1', revisionAtom[2:]))
+ else:
+ mylist = portdb.match(re.sub("-r[0-9]+$", "", revisionAtom[2:]))
else:
- mylist = portdb.xmatch(match_type, re.sub("-r[0-9]+$", "", revisionAtom[2:]))
+ if ":" in revisionAtom:
+ mylist = portdb.xmatch(match_type, re.sub(r'-r[0-9]+(:[^ ]+)?$', r'\1', revisionAtom[2:]))
+ else:
+ mylist = portdb.xmatch(match_type, re.sub("-r[0-9]+$", "", revisionAtom[2:]))
rValue = []
for v in mylist:
r1 = portage.pkgsplit(v)[-1][1:]