public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Zac Medico" <zmedico@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/resolver/
Date: Mon, 19 Dec 2016 05:15:45 +0000 (UTC)	[thread overview]
Message-ID: <1482123207.ddbe020d9385f8b70e4ec6f085d3afa7271949d7.zmedico@gentoo> (raw)

commit:     ddbe020d9385f8b70e4ec6f085d3afa7271949d7
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 18 12:39:59 2016 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Mon Dec 19 04:53:27 2016 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=ddbe020d

slot_conflict_handler: report packages that can't be rebuilt (bug 602964)

Report packages that need to be rebuilt in order to solve slot
conflicts, but cannot be rebuilt for some reason. The following
reasons will be detected:

* matched by --exclude argument
* matched by --useoldpkg-atoms argument
* ebuild is masked or unavailable

Example output:

!!! The slot conflict(s) shown above involve package(s) which may need to
!!! be rebuilt in order to solve the conflict(s). However, the following
!!! package(s) cannot be rebuilt for the reasons shown:

  (sys-apps/less-480:0/0::gentoo, installed): ebuild is masked or unavailable

X-Gentoo-bug: 602964
X-Gentoo-bug-url: https://bugs.gentoo.org/602964
Acked-by: Brian Dolbec <dolsen <AT> gentoo.org>

 pym/_emerge/resolver/slot_collision.py | 37 ++++++++++++++++++++++++++++++++--
 1 file changed, 35 insertions(+), 2 deletions(-)

diff --git a/pym/_emerge/resolver/slot_collision.py b/pym/_emerge/resolver/slot_collision.py
index cfb5885..f676b38 100644
--- a/pym/_emerge/resolver/slot_collision.py
+++ b/pym/_emerge/resolver/slot_collision.py
@@ -241,6 +241,8 @@ class slot_conflict_handler(object):
 		Print all slot conflicts in a human readable way.
 		"""
 		_pkg_use_enabled = self.depgraph._pkg_use_enabled
+		usepkgonly = "--usepkgonly" in self.myopts
+		need_rebuild = {}
 		verboseconflicts = "--verbose-conflicts" in self.myopts
 		any_omitted_parents = False
 		msg = self.conflict_msg
@@ -394,6 +396,29 @@ class slot_conflict_handler(object):
 								selected_for_display.update(
 										best_matches.values())
 						elif type in ("soname", "slot"):
+							# Check for packages that might need to
+							# be rebuilt, but cannot be rebuilt for
+							# some reason.
+							for ppkg, atom, other_pkg in parents:
+								if not (isinstance(ppkg, Package) and ppkg.installed):
+									continue
+								if not (atom.soname or atom.slot_operator_built):
+									continue
+								if self.depgraph._frozen_config.excluded_pkgs.findAtomForPackage(ppkg,
+									modified_use=self.depgraph._pkg_use_enabled(ppkg)):
+									selected_for_display.add((ppkg, atom))
+									need_rebuild[ppkg] = 'matched by --exclude argument'
+								elif self.depgraph._frozen_config.useoldpkg_atoms.findAtomForPackage(ppkg,
+									modified_use=self.depgraph._pkg_use_enabled(ppkg)):
+									selected_for_display.add((ppkg, atom))
+									need_rebuild[ppkg] = 'matched by --useoldpkg-atoms argument'
+								elif usepkgonly:
+									# This case is tricky, so keep quiet in order to avoid false-positives.
+									pass
+								elif not self.depgraph._equiv_ebuild_visible(ppkg):
+									selected_for_display.add((ppkg, atom))
+									need_rebuild[ppkg] = 'ebuild is masked or unavailable'
+
 							for ppkg, atom, other_pkg in parents:
 								selected_for_display.add((ppkg, atom))
 								if not verboseconflicts:
@@ -611,10 +636,18 @@ class slot_conflict_handler(object):
 			msg.append(colorize("INFORM",
 				"NOTE: Use the '--verbose-conflicts'"
 				" option to display parents omitted above"))
-			msg.append("\n\n")
-		else:
 			msg.append("\n")
 
+		if need_rebuild:
+			msg.append("\n!!! The slot conflict(s) shown above involve package(s) which may need to\n")
+			msg.append("!!! be rebuilt in order to solve the conflict(s). However, the following\n")
+			msg.append("!!! package(s) cannot be rebuilt for the reason(s) shown:\n\n")
+			for ppkg, reason in need_rebuild.items():
+				msg.append("%s%s: %s\n" % (indent, ppkg, reason))
+			msg.append("\n")
+
+		msg.append("\n")
+
 	def get_explanation(self):
 		msg = ""
 


             reply	other threads:[~2016-12-19  5:15 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-19  5:15 Zac Medico [this message]
  -- strict thread matches above, loose matches on Subject: below --
2017-10-04  0:30 [gentoo-commits] proj/portage:master commit in: pym/_emerge/resolver/ Zac Medico
2016-05-27  8:33 Alexander Berntsen
2015-08-03 18:36 Zac Medico
2015-07-29 18:44 Zac Medico
2014-12-13 14:51 Arfrever Frehtes Taifersar Arahesis
2014-08-23  7:21 Zac Medico
2014-02-23 21:38 Sebastian Luther
2014-02-05 19:42 Sebastian Luther
2014-02-05 19:42 Sebastian Luther
2013-03-20 20:32 Zac Medico
2013-03-20 19:23 Zac Medico
2013-03-18 21:28 Zac Medico
2013-03-18 21:12 Zac Medico
2013-03-18 20:58 Zac Medico
2013-02-28  0:25 Zac Medico
2013-02-28  0:12 Zac Medico
2013-02-27 23:39 Zac Medico
2013-01-24  1:18 Zac Medico
2012-10-15 17:17 Arfrever Frehtes Taifersar Arahesis
2012-10-15  4:06 Arfrever Frehtes Taifersar Arahesis
2012-10-14 20:02 Arfrever Frehtes Taifersar Arahesis
2012-10-14 19:54 Arfrever Frehtes Taifersar Arahesis
2012-10-14  2:53 Zac Medico
2012-10-14  2:44 Zac Medico
2012-09-25  2:00 Zac Medico
2012-09-24  3:12 Zac Medico
2012-09-14  2:08 Zac Medico
2012-09-14  1:04 Zac Medico
2012-06-27 21:56 Zac Medico
2012-06-23  6:00 Zac Medico
2012-06-21  4:43 Zac Medico
2012-06-20 21:24 Zac Medico
2012-04-05 19:37 Zac Medico
2012-03-22 19:00 Zac Medico
2012-03-22 18:10 Zac Medico
2012-03-22 17:38 Zac Medico
2012-03-22 17:15 Zac Medico
2012-03-13 17:22 Zac Medico
2012-01-28  2:23 Arfrever Frehtes Taifersar Arahesis
2012-01-28  1:51 Arfrever Frehtes Taifersar Arahesis
2012-01-23 17:13 Arfrever Frehtes Taifersar Arahesis
2012-01-22  3:57 Arfrever Frehtes Taifersar Arahesis
2012-01-22  3:47 Arfrever Frehtes Taifersar Arahesis
2011-11-18  5:58 Zac Medico
2011-11-18  1:43 Zac Medico
2011-11-07 18:34 Zac Medico
2011-11-07  7:37 Zac Medico
2011-10-19 21:32 Zac Medico
2011-10-19 21:25 Zac Medico
2011-10-02 20:11 Zac Medico
2011-09-17 17:51 Zac Medico
2011-07-27 10:34 Zac Medico
2011-07-10 13:35 Zac Medico
2011-07-10 12:23 Zac Medico
2011-07-10 10:41 Zac Medico
2011-07-10  1:58 Zac Medico
2011-07-10  1:31 Zac Medico
2011-07-09 22:24 Zac Medico
2011-06-21  8:15 Zac Medico
2011-06-11  1:31 Zac Medico
2011-03-15 22:59 Zac Medico

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1482123207.ddbe020d9385f8b70e4ec6f085d3afa7271949d7.zmedico@gentoo \
    --to=zmedico@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox