_emerge.depgraph._show_unsatisfied_dep(): Do an ealier missing IUSE check and simplif...
authorSebastian Luther <SebastianLuther@gmx.de>
Tue, 25 May 2010 11:22:09 +0000 (13:22 +0200)
committerZac Medico <zmedico@gentoo.org>
Tue, 25 May 2010 11:43:46 +0000 (04:43 -0700)
pym/_emerge/depgraph.py

index d4f70d03b4f4a1edda894a66824e01bf2004a2f1..ec3da77d76f4c3aa404bc7e1a7c252fa7e67a1b7 100644 (file)
@@ -2224,10 +2224,12 @@ class depgraph(object):
                                                mreasons = ["exclude option"]
                                        if mreasons:
                                                masked_pkg_instances.add(pkg)
-                                       if atom.violated_conditionals(pkg.use.enabled).use:
-                                               missing_use.append(pkg)
-                                               if not mreasons:
-                                                       continue
+                                       if atom.unevaluated_atom.use:
+                                               if not pkg.iuse.is_valid_flag(atom.unevaluated_atom.use.required) \
+                                                       or atom.violated_conditionals(pkg.use.enabled).use:
+                                                       missing_use.append(pkg)
+                                                       if not mreasons:
+                                                               continue
                                        if pkg.built and not mreasons:
                                                mreasons = ["use flag configuration mismatch"]
                                masked_packages.append(
@@ -2243,12 +2245,7 @@ class depgraph(object):
                missing_iuse_reasons = []
                for pkg in missing_use:
                        use = pkg.use.enabled
-                       iuse = implicit_iuse.union(re.escape(x) for x in pkg.iuse.all)
-                       iuse_re = re.compile("^(%s)$" % "|".join(iuse))
-                       missing_iuse = []
-                       for x in atom.use.required:
-                               if iuse_re.match(x) is None:
-                                       missing_iuse.append(x)
+                       missing_iuse = pkg.iuse.is_valid_flag(atom.use.required)
                        mreasons = []
                        if missing_iuse:
                                mreasons.append("Missing IUSE: %s" % " ".join(missing_iuse))