use_reduce: less strict for installed
authorZac Medico <zmedico@gentoo.org>
Tue, 21 Jun 2011 08:14:47 +0000 (01:14 -0700)
committerZac Medico <zmedico@gentoo.org>
Tue, 21 Jun 2011 08:14:47 +0000 (01:14 -0700)
pym/_emerge/resolver/circular_dependency.py

index aabc174f27272a4fe28fba7ae58f3fe25179b654..17898012e7533fbd87c3b86fe868ba26653baec4 100644 (file)
@@ -174,10 +174,16 @@ class circular_dependency_handler(object):
                                                current_use.add(flag)
                                        else:
                                                current_use.discard(flag)
-                               reduced_dep = use_reduce(dep,
-                                       uselist=current_use, flat=True)
-
-                               if parent_atom not in reduced_dep:
+                               try:
+                                       reduced_dep = use_reduce(dep,
+                                               uselist=current_use, flat=True)
+                               except InvalidDependString:
+                                       if not parent.installed:
+                                               raise
+                                       reduced_dep = None
+
+                               if reduced_dep is not None and \
+                                       parent_atom not in reduced_dep:
                                        #We found an assignment that removes the atom from 'dep'.
                                        #Make sure it doesn't conflict with REQUIRED_USE.
                                        required_use = parent.metadata["REQUIRED_USE"]