Use a regular expression for cpv_getkey(), and fall back to legacy code if
authorZac Medico <zmedico@gentoo.org>
Mon, 14 Sep 2009 07:52:45 +0000 (07:52 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 14 Sep 2009 07:52:45 +0000 (07:52 -0000)
no match is found.

svn path=/main/trunk/; revision=14259

pym/portage/__init__.py
pym/portage/dep.py

index c842f27e3e3efbcb65a471a32ac75a5af864d689..adf30696356599de31a84bbc34646b1ce2e5ffbb 100644 (file)
@@ -7994,6 +7994,11 @@ def dep_wordreduce(mydeplist,mysettings,mydbapi,mode,use_cache=1):
        return deplist
 
 def cpv_getkey(mycpv):
+       m = dep._cpv_re.search(mycpv)
+       if m is not None and m.group(2) is not None:
+               return m.group(2)
+
+       # Fall back to legacy code for backward compatibility.
        myslash=mycpv.split("/")
        mysplit=pkgsplit(myslash[-1])
        if mysplit is None:
index 929e31dbe65f3d00c6891541e8bdba99379b2514..12e26ab87d4fd1cf4b932e5d3ab56cea8ee9bc66 100644 (file)
@@ -895,6 +895,7 @@ _use = r'(\[.*\])?'
 _op = r'([=~]|[><]=?)'
 _cp = '(' + _cat + '/' + _pkg + '(-' + _version + ')?)'
 _cpv = '(' + _cp + '-' + _version + ')'
+_cpv_re = re.compile(_cpv)
 
 _atom_re = re.compile('^(?:' +
        '(?P<op>' + _op + _cpv + ')|' +