slot_collision: fix AttributeError for bug 374423
authorZac Medico <zmedico@gentoo.org>
Sun, 10 Jul 2011 10:40:59 +0000 (03:40 -0700)
committerZac Medico <zmedico@gentoo.org>
Sun, 10 Jul 2011 10:40:59 +0000 (03:40 -0700)
pym/_emerge/resolver/slot_collision.py

index 00429976a4b1d4c39876795019e68361a3c66840..0069d179d9c16c633bcfc95ed117338bfd71f427 100644 (file)
@@ -349,6 +349,20 @@ class slot_conflict_handler(object):
                                                                                _pkg_use_enabled(other_pkg),
                                                                                other_pkg.iuse.is_valid_flag,
                                                                                parent_use=parent_use)
+                                                                       # It's possible for autounmask to change
+                                                                       # parent_use such that the unevaluated form
+                                                                       # of the atom now matches, even though the
+                                                                       # earlier evaluated form (from before
+                                                                       # autounmask changed parent_use) does not.
+                                                                       # In this case (see bug #374423), it's
+                                                                       # expected that violated_atom.use is None.
+                                                                       # Since the atom now matches, we don't want
+                                                                       # to display it in the slot conflict
+                                                                       # message, so we simply ignore it and rely
+                                                                       # on the autounmask display to communicate
+                                                                       # the necessary USE change to the user.
+                                                                       if violated_atom.use is None:
+                                                                               continue
                                                                        if use in violated_atom.use.enabled or \
                                                                                use in violated_atom.use.disabled:
                                                                                unconditional_use_deps.add((ppkg, atom))