Detect and filter ebuilds that have invalid versions in portdbapi.cp_list().
authorZac Medico <zmedico@gentoo.org>
Sat, 17 May 2008 23:25:57 +0000 (23:25 -0000)
committerZac Medico <zmedico@gentoo.org>
Sat, 17 May 2008 23:25:57 +0000 (23:25 -0000)
(trunk r10346)

svn path=/main/branches/2.1.2/; revision=10353

pym/portage.py

index 3947db8cdecc0b8685e2e950563b45a38f37bb57..5a6d33c8b397ab9645ea65b33dc16ab7b68d8498 100644 (file)
@@ -7703,6 +7703,7 @@ class portdbapi(dbapi):
                        mytrees = [mytree]
                else:
                        mytrees = self.porttrees
+               from portage_versions import ver_regexp
                for oroot in mytrees:
                        try:
                                file_list = os.listdir(os.path.join(oroot, mycp))
@@ -7720,6 +7721,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 " + \