diff options
author | Zac Medico <zmedico@gentoo.org> | 2008-07-19 10:07:13 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2008-07-19 10:07:13 +0000 |
commit | d834a5341dcf3b53408265f75cecc640b6e4fc47 (patch) | |
tree | cd702339152ece27474955e7e11b1be2728e8954 | |
parent | 7f7756fd1e75d84d0ad52a8d5874673cfbc7222e (diff) | |
download | portage-d834a5341dcf3b53408265f75cecc640b6e4fc47.tar.gz portage-d834a5341dcf3b53408265f75cecc640b6e4fc47.tar.bz2 portage-d834a5341dcf3b53408265f75cecc640b6e4fc47.zip |
* Call self._schedule() from inside Scheduler._poll(). This ensures that
new jobs can scheduled as soon a the load average is low enough, and
one of the running jobs doesn't have to complete for _schedule() to
get called.
* Cache the result of _background_mode() so it doesn't have to be called
inside _schedule(), since this method is called a lot more often now.
* Move background related state adjustments into _background_mode().
* Call _status_display.display() unconditionally inside _schedule_tasks(),
since we want to update the display to show current load average even
if no new jobs are added.
svn path=/main/trunk/; revision=11135
-rw-r--r-- | pym/_emerge/__init__.py | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 7e11ab8ab..76a279711 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -8719,6 +8719,7 @@ class Scheduler(PollScheduler): max_jobs = 1 self._set_max_jobs(max_jobs) background = self._background_mode() + self._background = background self._max_load = myopts.get("--load-average") @@ -8757,7 +8758,7 @@ class Scheduler(PollScheduler): self._running_root, installed=True) def _poll(self, timeout=None): - self._status_display.display() + self._schedule() return PollScheduler._poll(self, timeout=timeout) def _set_max_jobs(self, max_jobs): @@ -8765,7 +8766,22 @@ class Scheduler(PollScheduler): self._task_queues.jobs.max_jobs = max_jobs def _background_mode(self): - return self._max_jobs > 1 or "--quiet" in self.myopts + """ + Check if background mode is enabled and adjust states as necessary. + + @rtype: bool + @returns: True if background mode is enabled, False otherwise. + """ + background = self._max_jobs > 1 or "--quiet" in self.myopts + + self._logger.parallel = background + + self._status_display.quiet = \ + not background or \ + ("--quiet" in self.myopts and \ + "--verbose" not in self.myopts) + + return background def _set_digraph(self, digraph): if self._max_jobs < 2: @@ -9405,8 +9421,7 @@ class Scheduler(PollScheduler): def _schedule_tasks(self): remaining, state_change = self._schedule_tasks_imp() - if state_change: - self._status_display.display() + self._status_display.display() return remaining def _schedule_tasks_imp(self): @@ -9416,12 +9431,7 @@ class Scheduler(PollScheduler): """ task_queues = self._task_queues - background = self._background_mode() - self._logger.parallel = background - self._status_display.quiet = \ - not background or \ - ("--quiet" in self.myopts and \ - "--verbose" not in self.myopts) + background = self._background state_change = 0 |