Bug #213629 - Create an EAPI.incompatible category and use it in cases
authorZac Medico <zmedico@gentoo.org>
Fri, 28 Mar 2008 13:05:40 +0000 (13:05 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 28 Mar 2008 13:05:40 +0000 (13:05 -0000)
where EAPI=0 and a slot atom is encountered. (trunk r9524)

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

bin/repoman
man/repoman.1

index cb6c7efc957d9ab7047ec7e80180a8cea618ef00..cc558d6915fb6de776d9d51b48eef6713d8dc1f6 100755 (executable)
@@ -173,6 +173,7 @@ qahelp={
        "LICENSE.missing":"Ebuilds that have a missing or empty LICENSE variable",
        "DESCRIPTION.missing":"Ebuilds that have a missing or empty DESCRIPTION variable",
        "DESCRIPTION.toolong":"DESCRIPTION is over %d characters" % max_desc_len,
+       "EAPI.incompatible":"Ebuilds that use features that are only available with a different EAPI",
        "EAPI.unsupported":"Ebuilds that have an unsupported EAPI version (you must upgrade portage)",
        "SLOT.missing":"Ebuilds that have a missing or empty SLOT variable",
        "HOMEPAGE.missing":"Ebuilds that have a missing or empty HOMEPAGE variable",
@@ -1461,6 +1462,7 @@ for x in scanlist:
                        continue
 
                myaux = ebuild_metadata[y]
+               eapi = myaux["EAPI"]
 
                # Test for negative logic and bad words in the RESTRICT var.
                #for x in myaux[allvars.index("RESTRICT")].split():
@@ -1632,15 +1634,22 @@ for x in scanlist:
                                if myteststr.find(token) != -1:
                                        badsyntax.append("'%s' not separated by space" % (token))
 
-
                        if mytype in ("DEPEND", "RDEPEND", "PDEPEND"):
                                for token in mydepstr.split():
                                        if token in operator_tokens or \
                                                token.endswith("?"):
                                                continue
-                                       if not portage.isvalidatom(token, allow_blockers=True) or \
-                                               ":" in token and myaux["EAPI"] == "0":
+                                       if not portage.isvalidatom(token, allow_blockers=True):
                                                badsyntax.append("'%s' not a valid atom" % token)
+                                       else:
+                                               atom = token.lstrip("!")
+                                               if eapi == "0":
+                                                       if portage_dep.dep_getslot(atom):
+                                                               stats['EAPI.incompatible'] += 1
+                                                               fails['EAPI.incompatible'].append(
+                                                                       (relative_path + ": %s slot dependency" + \
+                                                                       " not supported with EAPI='%s':" + \
+                                                                       " '%s'") % (mytype, eapi, atom))
 
                        type_list.extend([mytype] * (len(badsyntax) - len(type_list)))
 
index e10f2fd48650e86265060d8c3d08b7c5d0bff20d..835d2e6255d4cd32d6ab68b5359a9c3b351f36f8 100644 (file)
@@ -102,6 +102,9 @@ Syntax error in DEPEND (usually an extra/missing space/parenthesis)
 .B DESCRIPTION.missing
 Ebuilds that have a missing or empty DESCRIPTION variable
 .TP
+.B EAPI.incompatible
+Ebuilds that use features that are only available with a different EAPI
+.TP
 .B EAPI.unsupported
 Ebuilds that have an unsupported EAPI version (you must upgrade portage)
 .TP