For bug #181355, detect parenthesis mismatch in paren_reduce(), raise an InvalidDepen...
authorZac Medico <zmedico@gentoo.org>
Mon, 30 Jul 2007 03:45:08 +0000 (03:45 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 30 Jul 2007 03:45:08 +0000 (03:45 -0000)
svn path=/main/branches/2.1.2.9/; revision=7459

bin/repoman
pym/portage.py

index 3a939d9ace93dbbd3b61a418c6d255db5756e120..c033a0d44815718baba5df2e53582606dc89a136 100755 (executable)
@@ -1129,6 +1129,10 @@ for x in scanlist:
                        except ValueError:
                                badsyntax.append("parenthesis mismatch")
                                mydeplist = []
+                       except portage_exception.InvalidDependString, e:
+                               badsyntax.append(str(e))
+                               del e
+                               mydeplist = []
 
                        try:
                                portage_dep.use_reduce(mydeplist, excludeall=myiuse)
index 1e9d104af1e4d1b97f0873107187fa70071f7ed4..ebe2c96a66efa2ac6daf6c83906b11493e26398a 100644 (file)
@@ -3064,9 +3064,14 @@ def doebuild_environment(myebuild, mydo, myroot, mysettings, debug, use_cache, m
                if not eapi_is_supported(eapi):
                        # can't do anything with this.
                        raise portage_exception.UnsupportedAPIException(mycpv, eapi)
-               mysettings["PORTAGE_RESTRICT"] = " ".join(flatten(
-                       portage_dep.use_reduce(portage_dep.paren_reduce(
-                       mysettings["RESTRICT"]), uselist=mysettings["USE"].split())))
+               try:
+                       mysettings["PORTAGE_RESTRICT"] = " ".join(flatten(
+                               portage_dep.use_reduce(portage_dep.paren_reduce(
+                               mysettings.get("RESTRICT","")),
+                               uselist=mysettings.get("USE","").split())))
+               except portage_exception.InvalidDependString:
+                       # RESTRICT is validated again inside doebuild, so let this go
+                       mysettings["PORTAGE_RESTRICT"] = ""
 
        if mysplit[2] == "r0":
                mysettings["PVR"]=mysplit[1]
@@ -4368,7 +4373,10 @@ def dep_check(depstring, mydbapi, mysettings, use="yes", mode=None, myuse=None,
                myusesplit=[]
 
        #convert parenthesis to sublists
-       mysplit = portage_dep.paren_reduce(depstring)
+       try:
+               mysplit = portage_dep.paren_reduce(depstring)
+       except portage_exception.InvalidDependString, e:
+               return [0, str(e)]
 
        mymasks = set()
        useforce = set()