In action_unmerge(), create a Schuduler instance for calls to unmerge(),
authorZac Medico <zmedico@gentoo.org>
Fri, 6 Aug 2010 08:21:47 +0000 (01:21 -0700)
committerZac Medico <zmedico@gentoo.org>
Fri, 6 Aug 2010 08:21:47 +0000 (01:21 -0700)
in order to cause redirection of ebuild phase output to logs as required
for options such as --quiet.

pym/_emerge/Scheduler.py
pym/_emerge/actions.py

index 94391fc8dbc53e85633dcfbcd666df5c880b452f..c6af547f8b03b74f986eb075ec216f1d00f252f7 100644 (file)
@@ -345,6 +345,7 @@ class Scheduler(PollScheduler):
 
        def _set_digraph(self, digraph):
                if "--nodeps" in self.myopts or \
+                       digraph is None or \
                        (self._max_jobs is not True and self._max_jobs < 2):
                        # save some memory
                        self._digraph = None
index e8c6e3ad16845441bea3b02012a1bfa3127347c6..9de45f44def8f4ca5a38fd70ab152a523135de50 100644 (file)
@@ -515,7 +515,7 @@ def action_config(settings, trees, myopts, myfiles):
        print()
 
 def action_depclean(settings, trees, ldpath_mtimes,
-       myopts, action, myfiles, spinner):
+       myopts, action, myfiles, spinner, scheduler=None):
        # Kill packages that aren't explicitly merged or are required as a
        # dependency of another package. World file is explicit.
 
@@ -576,7 +576,8 @@ def action_depclean(settings, trees, ldpath_mtimes,
 
        if cleanlist:
                unmerge(root_config, myopts, "unmerge",
-                       cleanlist, ldpath_mtimes, ordered=ordered)
+                       cleanlist, ldpath_mtimes, ordered=ordered,
+                       scheduler=scheduler)
 
        if action == "prune":
                return
@@ -2427,18 +2428,28 @@ def action_uninstall(settings, trees, ldpath_mtimes,
                for line in textwrap.wrap(msg, 72):
                        out.ewarn(line)
 
+       if action == 'deselect':
+               return action_deselect(settings, trees, opts, valid_atoms)
+
+       # Create a Schuduler for calls to unmerge(), in order to cause
+       # redirection of ebuild phase output to logs as required for
+       # options such as --quiet.
+       sched = Scheduler(settings, trees, None, opts,
+               spinner, [], [], None)
+       sched._background = sched._background_mode()
+       sched._status_display.quiet = True
+
        if action in ('clean', 'unmerge') or \
                (action == 'prune' and "--nodeps" in opts):
                # When given a list of atoms, unmerge them in the order given.
                ordered = action == 'unmerge'
                unmerge(trees[settings["ROOT"]]['root_config'], opts, action,
-                       valid_atoms, ldpath_mtimes, ordered=ordered)
+                       valid_atoms, ldpath_mtimes, ordered=ordered,
+                       scheduler=sched._sched_iface)
                rval = os.EX_OK
-       elif action == 'deselect':
-               rval = action_deselect(settings, trees, opts, valid_atoms)
        else:
                rval = action_depclean(settings, trees, ldpath_mtimes,
-                       opts, action, valid_atoms, spinner)
+                       opts, action, valid_atoms, spinner, scheduler=sched._sched_iface)
 
        return rval