For bug #180399, raise an appropriate InvalidDependString exception if there is no...
authorZac Medico <zmedico@gentoo.org>
Wed, 30 May 2007 23:23:07 +0000 (23:23 -0000)
committerZac Medico <zmedico@gentoo.org>
Wed, 30 May 2007 23:23:07 +0000 (23:23 -0000)
svn path=/main/branches/2.1.2/; revision=6679

pym/portage_dep.py

index 45ff2bcfeb87a63f126aff7c2db126291e492d88..a992992bfab086cb3bd22439a68698884c974012 100644 (file)
@@ -185,10 +185,17 @@ def use_reduce(deparray, uselist=[], masklist=[], matchall=0, excludeall=[]):
 
                                # Check that each flag matches
                                ismatch = True
+                               missing_flag = False
                                for head in newdeparray[:-1]:
                                        head = head[:-1]
-                                       if head[0] == "!":
+                                       if not head:
+                                               missing_flag = True
+                                               break
+                                       if head.startswith("!"):
                                                head_key = head[1:]
+                                               if not head_key:
+                                                       missing_flag = True
+                                                       break
                                                if not matchall and head_key in uselist or \
                                                        head_key in excludeall:
                                                        ismatch = False
@@ -199,6 +206,10 @@ def use_reduce(deparray, uselist=[], masklist=[], matchall=0, excludeall=[]):
                                                        break
                                        else:
                                                ismatch = False
+                               if missing_flag:
+                                       raise portage_exception.InvalidDependString(
+                                               "Conditional without flag: \"" + \
+                                               paren_enclose([head+"?", newdeparray[-1]])+"\"")
 
                                # If they all match, process the target
                                if ismatch: