summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2013-01-23 17:18:10 -0800
committerZac Medico <zmedico@gentoo.org>2013-01-23 17:18:10 -0800
commitf75b03c8f14c484f5016696e48241f8932353c91 (patch)
treee3172c14d8347271c6e9ddd825a41a3053f29eab
parent7b51d8519556124f3fcd99195741ef437d02f432 (diff)
downloadportage-f75b03c8f14c484f5016696e48241f8932353c91.tar.gz
portage-f75b03c8f14c484f5016696e48241f8932353c91.tar.bz2
portage-f75b03c8f14c484f5016696e48241f8932353c91.zip
Add debug output for cases like bug #453400.
-rw-r--r--pym/_emerge/resolver/slot_collision.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/pym/_emerge/resolver/slot_collision.py b/pym/_emerge/resolver/slot_collision.py
index f07b01a44..f8e1e4ecd 100644
--- a/pym/_emerge/resolver/slot_collision.py
+++ b/pym/_emerge/resolver/slot_collision.py
@@ -317,6 +317,26 @@ class slot_conflict_handler(object):
#Use conditionals not met.
violated_atom = atom.violated_conditionals(_pkg_use_enabled(other_pkg), \
other_pkg.iuse.is_valid_flag)
+ if violated_atom.use is None:
+ # Something like bug #453400 caused the
+ # above findAtomForPackage call to
+ # to return None unexpectedly.
+ msg = ("\n\n!!! BUG: Detected "
+ "USE dep match inconsistency:\n"
+ "\tppkg: %s\n"
+ "\tviolated_atom: %s\n"
+ "\tatom: %s unevaluated: %s\n"
+ "\tother_pkg: %s IUSE: %s USE: %s\n" %
+ (ppkg,
+ violated_atom,
+ atom,
+ atom.unevaluated_atom,
+ other_pkg,
+ sorted(other_pkg.iuse.all),
+ sorted(_pkg_use_enabled(other_pkg))))
+ writemsg(msg, noiselevel=-2)
+ raise AssertionError(
+ 'BUG: USE dep match inconsistency')
for flag in violated_atom.use.enabled.union(violated_atom.use.disabled):
atoms = collision_reasons.get(("use", flag), set())
atoms.add((ppkg, atom, other_pkg))