summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'pym/_emerge/__init__.py')
-rw-r--r--pym/_emerge/__init__.py46
1 files changed, 25 insertions, 21 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index 491bee176..bfc5767e9 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -3328,7 +3328,7 @@ class MergeListItem(CompositeTask):
"binpkg_opts", "build_opts", "emerge_opts",
"failed_fetches", "find_blockers", "logger", "mtimedb", "pkg",
"pkg_count", "pkg_to_replace", "prefetcher",
- "settings", "world_atom") + \
+ "settings", "statusMessage", "world_atom") + \
("_install_task",)
def _start(self):
@@ -3358,16 +3358,13 @@ class MergeListItem(CompositeTask):
action_desc = "Extracting"
if not build_opts.pretend:
- extra_newline = "\n"
- if self.background:
- extra_newline = ""
- portage.writemsg_stdout(
- "%s>>> %s (%s of %s) %s %s %s\n" % \
- (extra_newline, action_desc,
+
+ self.statusMessage("%s (%s of %s) %s %s %s" % \
+ (action_desc,
colorize("MERGE_LIST_PROGRESS", str(pkg_count.curval)),
colorize("MERGE_LIST_PROGRESS", str(pkg_count.maxval)),
- colorize("GOOD", pkg.cpv), preposition, pkg.root),
- noiselevel=-1)
+ colorize("GOOD", pkg.cpv), preposition, pkg.root))
+
logger.log(" >>> emerge (%s of %s) %s to %s" % \
(pkg_count.curval, pkg_count.maxval, pkg.cpv, pkg.root))
@@ -3462,24 +3459,15 @@ class PackageMerge(AsynchronousTask):
pkg_count = self.merge.pkg_count
if pkg.installed:
-
action_desc = "Uninstalling"
preposition = "from"
-
- portage.writemsg_stdout(
- ">>> %s %s %s %s\n" % \
- (action_desc, colorize("GOOD", pkg.cpv),
- preposition, pkg.root), noiselevel=-1)
-
else:
-
action_desc = "Installing"
preposition = "to"
- portage.writemsg_stdout(
- ">>> %s %s %s %s\n" % \
- (action_desc, colorize("GOOD", pkg.cpv),
- preposition, pkg.root), noiselevel=-1)
+ self.merge.statusMessage("%s %s %s %s" % \
+ (action_desc, colorize("GOOD", pkg.cpv),
+ preposition, pkg.root))
self.returncode = self.merge.merge()
self.wait()
@@ -9369,10 +9357,26 @@ class Scheduler(PollScheduler):
prefetcher=self._prefetchers.get(pkg),
scheduler=self._sched_iface,
settings=self._allocate_config(pkg.root),
+ statusMessage=self._status_msg,
world_atom=self._world_atom)
return task
+ def _status_msg(self, msg):
+ """
+ Display a brief status message (no newlines) in the status display.
+ This is called by tasks to provide feedback to the user. This
+ delegates the resposibility of generating \r and \n control characters,
+ to guarantee that lines are created or erased when necessary and
+ appropriate.
+
+ @type msg: str
+ @param msg: a brief status message (no newlines allowed)
+ """
+
+ # TODO: Let self._status_display handle this.
+ portage.util.writemsg_level(">>> %s\n" % msg, noiselevel=-1)
+
def _save_resume_list(self):
"""
Do this before verifying the ebuild Manifests since it might