diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-03-04 04:14:18 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-03-04 04:14:18 +0000 |
commit | eb9fa5ef6e15cc77836d298db737e51ef603230c (patch) | |
tree | f30be654223ff6a60c1505770e427c6c93569123 | |
parent | 5b160087c86917d3f93f4b568392f77c99273dd4 (diff) | |
download | portage-eb9fa5ef6e15cc77836d298db737e51ef603230c.tar.gz portage-eb9fa5ef6e15cc77836d298db737e51ef603230c.tar.bz2 portage-eb9fa5ef6e15cc77836d298db737e51ef603230c.zip |
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).
svn path=/main/trunk/; revision=12746
-rw-r--r-- | pym/_emerge/__init__.py | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 0f15e416a..4c9225746 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -5934,6 +5934,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] @@ -5965,9 +5966,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)) @@ -5997,16 +6001,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: |