summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-03-04 04:14:18 +0000
committerZac Medico <zmedico@gentoo.org>2009-03-04 04:14:18 +0000
commiteb9fa5ef6e15cc77836d298db737e51ef603230c (patch)
treef30be654223ff6a60c1505770e427c6c93569123
parent5b160087c86917d3f93f4b568392f77c99273dd4 (diff)
downloadportage-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__.py32
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: