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

pym/portage/dep.py

index 5b39778f91cc4f22cf2a19b54dc9db893540719d..9717e69d1122b33e1445f76c9e63d552080e2749 100644 (file)
@@ -241,10 +241,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
@@ -255,6 +262,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: