From 2e8788f4135a4622d32c7d0ffbb9bc6a2d9a8b3e Mon Sep 17 00:00:00 2001 From: Fabian Groffen Date: Wed, 26 Aug 2009 09:52:04 +0000 Subject: [PATCH] Merged from trunk -r14151:14155 | 14154 | Show log paths when displaying the list of failed packages | | zmedico | for --keep-going. | | 14155 | Inside depgraph._show_unsatisfied_dep(), show reasons for | | zmedico | packages masked due to backtracking. | svn path=/main/branches/prefix/; revision=14158 --- pym/_emerge/Scheduler.py | 25 ++++++++++++++----------- pym/_emerge/depgraph.py | 10 +++++++--- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py index bb2ed19d2..6a44d0e2f 100644 --- a/pym/_emerge/Scheduler.py +++ b/pym/_emerge/Scheduler.py @@ -857,6 +857,7 @@ class Scheduler(PollScheduler): self._failed_pkgs_all.extend(failed_pkgs) del failed_pkgs[:] + printer = portage.output.EOutput() background = self._background failure_log_shown = False if background and len(self._failed_pkgs_all) == 1: @@ -895,7 +896,6 @@ class Scheduler(PollScheduler): self._failed_pkgs_die_msgs and \ not mod_echo_output: - printer = portage.output.EOutput() for mysettings, key, logentries in self._failed_pkgs_die_msgs: root_msg = "" if mysettings["ROOT"] != "/": @@ -926,17 +926,20 @@ class Scheduler(PollScheduler): else: msg = "The following package has " + \ "failed to build or install:" - prefix = bad(" * ") - writemsg(prefix + "\n", noiselevel=-1) - from textwrap import wrap - for line in wrap(msg, 72): - writemsg("%s%s\n" % (prefix, line), noiselevel=-1) - writemsg(prefix + "\n", noiselevel=-1) + + printer.eerror("") + for line in textwrap.wrap(msg, 72): + printer.eerror(line) + printer.eerror("") for failed_pkg in self._failed_pkgs_all: - writemsg("%s\t%s\n" % (prefix, - colorize("INFORM", str(failed_pkg.pkg))), - noiselevel=-1) - writemsg(prefix + "\n", noiselevel=-1) + msg = " %s" % (colorize('INFORM', failed_pkg.pkg.__str__()),) + log_path = self._locate_failure_log(failed_pkg) + if log_path is not None: + msg += ", Log file:" + printer.eerror(msg) + if log_path is not None: + printer.eerror(" '%s'" % colorize('INFORM', log_path)) + printer.eerror("") if self._failed_pkgs_all: return 1 diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index eab8d5972..9b59e4157 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -1891,9 +1891,8 @@ class depgraph(object): metadata, mreasons = get_mask_info(root_config, cpv, pkgsettings, db, pkg_type, built, installed, db_keys) if metadata is not None: - pkg = Package(built=built, cpv=cpv, - installed=installed, metadata=metadata, - root_config=root_config) + pkg = self._pkg(cpv, pkg_type, root_config, + installed=installed) if pkg.cp != atom.cp: # A cpv can be returned from dbapi.match() as an # old-style virtual match even in cases when the @@ -1901,6 +1900,11 @@ class depgraph(object): # Filter out any such false matches here. if not atom_set.findAtomForPackage(pkg): continue + if pkg in self._dynamic_config._runtime_pkg_mask: + backtrack_reasons = \ + self._dynamic_config._runtime_pkg_mask[pkg] + mreasons.append('backtracking: %s' % \ + ', '.join(sorted(backtrack_reasons))) if mreasons: masked_pkg_instances.add(pkg) if atom.use: -- 2.26.2