Detect and filter ebuilds that have invalid versions in portdbapi.cp_list().
authorZac Medico <zmedico@gentoo.org>
Fri, 16 May 2008 21:41:01 +0000 (21:41 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 16 May 2008 21:41:01 +0000 (21:41 -0000)
svn path=/main/trunk/; revision=10346

pym/portage/dbapi/porttree.py

index 3c287a7d6f5918fe24de3baca9dc6e4c9c598b04..70135be348c0d07c6a587813e29e6154985e9d44 100644 (file)
@@ -14,7 +14,7 @@ from portage.exception import OperationNotPermitted, PortageException, \
 from portage.manifest import Manifest
 from portage.output import red
 from portage.util import ensure_dirs, writemsg, apply_recursive_permissions
-from portage.versions import pkgcmp, pkgsplit, catpkgsplit, best
+from portage.versions import pkgcmp, pkgsplit, catpkgsplit, best, ver_regexp
 
 import portage.gpg, portage.checksum
 
@@ -556,6 +556,11 @@ class portdbapi(dbapi):
                                                writemsg("\nInvalid ebuild name: %s\n" % \
                                                        os.path.join(oroot, mycp, x), noiselevel=-1)
                                                continue
+                                       ver_match = ver_regexp.match("-".join(ps[1:]))
+                                       if ver_match is None or not ver_match.groups():
+                                               writemsg("\nInvalid ebuild version: %s\n" % \
+                                                       os.path.join(oroot, mycp, x), noiselevel=-1)
+                                               continue
                                        d[mysplit[0]+"/"+pf] = None
                if invalid_category and d:
                        writemsg(("\n!!! '%s' has a category that is not listed in " + \