From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1Rw2Q6-0007Xi-Qs for garchives@archives.gentoo.org; Sat, 11 Feb 2012 02:10:35 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 5E375E071E; Sat, 11 Feb 2012 02:10:27 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id 21D4BE071E for ; Sat, 11 Feb 2012 02:10:27 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 5FE6C1B400E for ; Sat, 11 Feb 2012 02:10:26 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 25399E53FF for ; Sat, 11 Feb 2012 02:10:25 +0000 (UTC) From: "Zac Medico" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Zac Medico" Message-ID: <613486a70464ca8c6bd2fdbf68514168e3014b47.zmedico@gentoo> Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/ X-VCS-Repository: proj/portage X-VCS-Files: pym/_emerge/MetadataRegen.py pym/_emerge/PollScheduler.py pym/_emerge/QueueScheduler.py pym/_emerge/Scheduler.py X-VCS-Directories: pym/_emerge/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: 613486a70464ca8c6bd2fdbf68514168e3014b47 Date: Sat, 11 Feb 2012 02:10:25 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: b4a6923c-6bf3-449f-ac40-8127f86b5ef3 X-Archives-Hash: 40f3661c7ed6d47be020cda14c175128 commit: 613486a70464ca8c6bd2fdbf68514168e3014b47 Author: Zac Medico gentoo org> AuthorDate: Sat Feb 11 02:10:07 2012 +0000 Commit: Zac Medico gentoo org> CommitDate: Sat Feb 11 02:10:07 2012 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/portage.git;a= =3Dcommit;h=3D613486a7 PollScheduler: add generic _main_loop() --- pym/_emerge/MetadataRegen.py | 10 ++++------ pym/_emerge/PollScheduler.py | 22 ++++++++++++++++++++++ pym/_emerge/QueueScheduler.py | 10 +--------- pym/_emerge/Scheduler.py | 15 +++------------ 4 files changed, 30 insertions(+), 27 deletions(-) diff --git a/pym/_emerge/MetadataRegen.py b/pym/_emerge/MetadataRegen.py index 1ebc532..3404001 100644 --- a/pym/_emerge/MetadataRegen.py +++ b/pym/_emerge/MetadataRegen.py @@ -82,18 +82,16 @@ class MetadataRegen(PollScheduler): portdb=3Dportdb, repo_path=3Drepo_path, settings=3Dportdb.doebuild_settings) =20 + def _keep_scheduling(self): + return self._remaining_tasks and not self._terminated_tasks + def run(self): =20 portdb =3D self._portdb from portage.cache.cache_errors import CacheError dead_nodes =3D {} =20 - self._schedule() - while self._remaining_tasks and not self._terminated_tasks: - self.sched_iface.iteration() - - while self._jobs: - self.sched_iface.iteration() + self._main_loop() =20 if self._terminated_tasks: self.returncode =3D 1 diff --git a/pym/_emerge/PollScheduler.py b/pym/_emerge/PollScheduler.py index eafb8a2..3b3ef67 100644 --- a/pym/_emerge/PollScheduler.py +++ b/pym/_emerge/PollScheduler.py @@ -109,6 +109,28 @@ class PollScheduler(object): finally: self._scheduling =3D False =20 + def _main_loop(self): + # Populate initial event sources. We only need to do + # this once here, since it can be called during the + # loop from within event handlers. + self._schedule() + + # Loop while there are jobs to be scheduled. + while self._keep_scheduling(): + self.sched_iface.iteration() + + # Clean shutdown of previously scheduled jobs. In the + # case of termination, this allows for basic cleanup + # such as flushing of buffered output to logs. + while self._is_work_scheduled(): + self.sched_iface.iteration() + + def _keep_scheduling(self): + return False + + def _is_work_scheduled(self): + return bool(self._running_job_count()) + def _running_job_count(self): return self._jobs =20 diff --git a/pym/_emerge/QueueScheduler.py b/pym/_emerge/QueueScheduler.p= y index e34758a..ba740c1 100644 --- a/pym/_emerge/QueueScheduler.py +++ b/pym/_emerge/QueueScheduler.py @@ -44,15 +44,7 @@ class QueueScheduler(PollScheduler): timeout, timeout_callback) =20 try: - - while not (timeout_callback is not None and - timeout_callback.timed_out) and self._schedule(): - self.sched_iface.iteration() - - while not (timeout_callback is not None and - timeout_callback.timed_out) and self._running_job_count(): - self.sched_iface.iteration() - + self._main_loop() except StopIteration: pass finally: diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py index 100d89d..66d76b1 100644 --- a/pym/_emerge/Scheduler.py +++ b/pym/_emerge/Scheduler.py @@ -1347,6 +1347,9 @@ class Scheduler(PollScheduler): =20 def _merge(self): =20 + if self._opts_no_background.intersection(self.myopts): + self._set_max_jobs(1) + self._add_prefetchers() self._add_packages() failed_pkgs =3D self._failed_pkgs @@ -1493,18 +1496,6 @@ class Scheduler(PollScheduler): def _deallocate_config(self, settings): self._config_pool[settings['EROOT']].append(settings) =20 - def _main_loop(self): - - if self._opts_no_background.intersection(self.myopts): - self._set_max_jobs(1) - - self._schedule() - while self._keep_scheduling(): - self.sched_iface.iteration() - - while self._is_work_scheduled(): - self.sched_iface.iteration() - def _keep_scheduling(self): return bool(not self._terminated_tasks and self._pkg_queue and \ not (self._failed_pkgs and not self._build_opts.fetchonly))