From 65b72ec15089ccaa8225c379b9e65a5ee784113b Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Wed, 11 Mar 2009 06:36:07 +0000 Subject: [PATCH] Bug #256289 - When displaying an unsatisfied USE dep and all packages with the required IUSE are masked, show a normal "masked package" message for the package(s) that have the required IUSE (instead of showing the unmasked packages with missing IUSE). (trunk r12746) svn path=/main/branches/2.1.6/; revision=12995 --- pym/_emerge/__init__.py | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 94dc3f465..f3209c34e 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -5918,6 +5918,7 @@ class depgraph(object): xinfo = xinfo.replace("null/", "") masked_packages = [] missing_use = [] + masked_pkg_instances = set() missing_licenses = [] have_eapi_mask = False pkgsettings = self.pkgsettings[root] @@ -5949,9 +5950,12 @@ class depgraph(object): # Filter out any such false matches here. if not atom_set.findAtomForPackage(pkg): continue - if atom.use and not mreasons: + if mreasons: + masked_pkg_instances.add(pkg) + if atom.use: missing_use.append(pkg) - continue + if not mreasons: + continue masked_packages.append( (root_config, pkgsettings, cpv, metadata, mreasons)) @@ -5981,16 +5985,28 @@ class depgraph(object): mreasons.append("Change USE: %s" % " ".join(changes)) missing_use_reasons.append((pkg, mreasons)) - if missing_iuse_reasons and not missing_use_reasons: - missing_use_reasons = missing_iuse_reasons - elif missing_use_reasons: + unmasked_use_reasons = [(pkg, mreasons) for (pkg, mreasons) \ + in missing_use_reasons if pkg not in masked_pkg_instances] + + unmasked_iuse_reasons = [(pkg, mreasons) for (pkg, mreasons) \ + in missing_iuse_reasons if pkg not in masked_pkg_instances] + + show_missing_use = False + if unmasked_use_reasons: # Only show the latest version. - del missing_use_reasons[1:] + show_missing_use = unmasked_use_reasons[:1] + elif unmasked_iuse_reasons: + if missing_use_reasons: + # All packages with required IUSE are masked, + # so display a normal masking message. + pass + else: + show_missing_use = unmasked_iuse_reasons - if missing_use_reasons: + if show_missing_use: print "\nemerge: there are no ebuilds built with USE flags to satisfy "+green(xinfo)+"." print "!!! One of the following packages is required to complete your request:" - for pkg, mreasons in missing_use_reasons: + for pkg, mreasons in show_missing_use: print "- "+pkg.cpv+" ("+", ".join(mreasons)+")" elif masked_packages: -- 2.26.2