summaryrefslogtreecommitdiffstats
path: root/pym/_emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-07-19 10:07:13 +0000
committerZac Medico <zmedico@gentoo.org>2008-07-19 10:07:13 +0000
commitd834a5341dcf3b53408265f75cecc640b6e4fc47 (patch)
treecd702339152ece27474955e7e11b1be2728e8954 /pym/_emerge
parent7f7756fd1e75d84d0ad52a8d5874673cfbc7222e (diff)
downloadportage-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
Diffstat (limited to 'pym/_emerge')
-rw-r--r--pym/_emerge/__init__.py30
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