Skip to content

Commit

Permalink
emerge: Show package USE in conflict messages
Browse files Browse the repository at this point in the history
Bug: https://bugs.gentoo.org/310009
Signed-off-by: Zac Medico <zmedico@gentoo.org>
  • Loading branch information
zmedico committed Dec 15, 2019
1 parent fa0f872 commit 0e2ca55
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 8 deletions.
21 changes: 17 additions & 4 deletions lib/_emerge/depgraph.py
Expand Up @@ -1302,8 +1302,15 @@ def _show_missed_update_slot_conflicts(self, missed_updates):
atom, marker = format_unmatched_atom(
pkg, atom, self._pkg_use_enabled)

if isinstance(parent, Package):
use_display = pkg_use_display(parent,
self._frozen_config.myopts,
modified_use=self._pkg_use_enabled(parent))
else:
use_display = ""

msg.append(2*indent)
msg.append("%s required by %s\n" % (atom, parent))
msg.append("%s required by %s %s\n" % (atom, parent, use_display))
msg.append(2*indent)
msg.append(marker)
msg.append("\n")
Expand Down Expand Up @@ -8472,14 +8479,20 @@ def _show_unsatisfied_blockers(self, blockers):
else:
# Display the specific atom from SetArg or
# Package types.
if isinstance(parent, Package):
use_display = pkg_use_display(parent,
self._frozen_config.myopts,
modified_use=self._pkg_use_enabled(parent))
else:
use_display = ""
if atom.package and atom != atom.unevaluated_atom:
# Show the unevaluated atom, since it can reveal
# issues with conditional use-flags missing
# from IUSE.
msg.append("%s (%s) required by %s" %
(atom.unevaluated_atom, atom, parent))
msg.append("%s (%s) required by %s %s" %
(atom.unevaluated_atom, atom, parent, use_display))
else:
msg.append("%s required by %s" % (atom, parent))
msg.append("%s required by %s %s" % (atom, parent, use_display))
msg.append("\n")

msg.append("\n")
Expand Down
17 changes: 13 additions & 4 deletions lib/_emerge/resolver/slot_collision.py
Expand Up @@ -9,6 +9,7 @@
from _emerge.AtomArg import AtomArg
from _emerge.Package import Package
from _emerge.PackageArg import PackageArg
from _emerge.UseFlagDisplay import pkg_use_display
from portage.dep import check_required_use
from portage.output import colorize
from portage._sets.base import InternalPackageSet
Expand Down Expand Up @@ -260,7 +261,9 @@ def _prepare_conflict_msg_and_check_for_specificity(self):

for pkg in pkgs:
msg.append(indent)
msg.append("%s" % (pkg,))
msg.append("%s %s" % (pkg, pkg_use_display(pkg,
self.depgraph._frozen_config.myopts,
modified_use=self.depgraph._pkg_use_enabled(pkg))))
parent_atoms = self.all_parents.get(pkg)
if parent_atoms:
#Create a list of collision reasons and map them to sets
Expand Down Expand Up @@ -569,9 +572,15 @@ def highlight_violations(atom, version, use, slot_violated):
ordered_list.append(parent_atom)
for parent_atom in ordered_list:
parent, atom = parent_atom
if isinstance(parent, Package):
use_display = pkg_use_display(parent,
self.depgraph._frozen_config.myopts,
modified_use=self.depgraph._pkg_use_enabled(parent))
else:
use_display = ""
if atom.soname:
msg.append("%s required by %s\n" %
(atom, parent))
msg.append("%s required by %s %s\n" %
(atom, parent, use_display))
elif isinstance(parent, PackageArg):
# For PackageArg it's
# redundant to display the atom attribute.
Expand Down Expand Up @@ -602,7 +611,7 @@ def highlight_violations(atom, version, use, slot_violated):
if version_violated or slot_violated:
self.is_a_version_conflict = True

cur_line = "%s required by %s\n" % (atom_str, parent)
cur_line = "%s required by %s %s\n" % (atom_str, parent, use_display)
marker_line = ""
for ii in range(len(cur_line)):
if ii in colored_idx:
Expand Down

0 comments on commit 0e2ca55

Please sign in to comment.