Flatten restrict for the RESTRICT.invalid check. (trunk r7120)
authorZac Medico <zmedico@gentoo.org>
Mon, 2 Jul 2007 02:10:07 +0000 (02:10 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 2 Jul 2007 02:10:07 +0000 (02:10 -0000)
svn path=/main/branches/2.1.2/; revision=7121

bin/repoman

index dfc4778b2de11f3d0521bdd512911af9d6628b8c..6154e3c89b521a878019154803ff42e17061936c 100755 (executable)
@@ -172,6 +172,7 @@ qahelp={
        "PDEPEND.syntax":"Syntax error in PDEPEND (usually an extra/missing space/parenthesis)",
        "LICENSE.syntax":"Syntax error in LICENSE (usually an extra/missing space/parenthesis)",
        "PROVIDE.syntax":"Syntax error in PROVIDE (usually an extra/missing space/parenthesis)",
+       "RESTRICT.syntax":"Syntax error in RESTRICT (usually an extra/missing space/parenthesis)",
        "SRC_URI.syntax":"Syntax error in SRC_URI (usually an extra/missing space/parenthesis)",
        "ebuild.syntax":"Error generating cache entry for ebuild; typically caused by ebuild syntax error",
        "ebuild.output":"A simple sourcing of the ebuild produces output; this breaks ebuild policy.",
@@ -1351,12 +1352,21 @@ for x in scanlist:
                                        fails["KEYWORDS.invalid"].append(x+"/"+y+".ebuild: %s (profile invalid)" % mykey)
 
                #restrict checks
-               myrestrict = set(myaux["RESTRICT"].split())
-               mybadrestrict = myrestrict.difference(valid_restrict)
-               if mybadrestrict:
-                       stats["RESTRICT.invalid"] += len(mybadrestrict)
-                       for mybad in mybadrestrict:
-                               fails["RESTRICT.invalid"].append(x+"/"+y+".ebuild: %s" % mybad)
+               myrestrict = None
+               try:
+                       myrestrict = portage_dep.use_reduce(
+                               portage_dep.paren_reduce(myaux["RESTRICT"]), matchall=1)
+               except portage_exception.InvalidDependString, e:
+                       stats["RESTRICT.syntax"] = stats["RESTRICT.syntax"] + 1
+                       fails["RESTRICT.syntax"].append(mykey+".ebuild RESTRICT: "+str(e))
+                       del e
+               if myrestrict:
+                       myrestrict = set(portage.flatten(myrestrict))
+                       mybadrestrict = myrestrict.difference(valid_restrict)
+                       if mybadrestrict:
+                               stats["RESTRICT.invalid"] += len(mybadrestrict)
+                               for mybad in mybadrestrict:
+                                       fails["RESTRICT.invalid"].append(x+"/"+y+".ebuild: %s" % mybad)
 
                #syntax checks
                myear = time.gmtime(os.stat(checkdir+"/"+y+".ebuild")[ST_MTIME])[0]