summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-07-06 03:44:25 +0000
committerZac Medico <zmedico@gentoo.org>2008-07-06 03:44:25 +0000
commitf7484e2a422d48c13f511f0ba09d60cdc37081e4 (patch)
tree170b403b9e57e101f322b77998d973d570b066ba
parent3b0dc8e06d9d8a736ec977d635cc9d3971e1f890 (diff)
downloadportage-f7484e2a422d48c13f511f0ba09d60cdc37081e4.tar.gz
portage-f7484e2a422d48c13f511f0ba09d60cdc37081e4.tar.bz2
portage-f7484e2a422d48c13f511f0ba09d60cdc37081e4.zip
Split out a CompositeTask._start_task() for subclasses to use as a generic
way to start a task. svn path=/main/trunk/; revision=10952
-rw-r--r--pym/_emerge/__init__.py27
1 files changed, 17 insertions, 10 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index ab098297f..046a2c568 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -1565,6 +1565,19 @@ class CompositeTask(AsynchronousTask):
self._current_task = None
self.returncode = task.returncode
+ def _start_task(self, task, exit_handler):
+ """
+ Register exit handler for the given task, set it
+ as self._current_task, and call task.start().
+
+ Subclasses can use this as a generic way to start
+ a task.
+
+ """
+ task.addExitListener(exit_handler)
+ self._current_task = task
+ task.start()
+
class TaskSequence(CompositeTask):
"""
A collection of tasks that executes sequentially. Each task
@@ -1589,10 +1602,8 @@ class TaskSequence(CompositeTask):
CompositeTask.cancel(self)
def _start_next_task(self):
- self._current_task = self._task_queue.popleft()
- task = self._current_task
- task.addExitListener(self._task_exit_handler)
- task.start()
+ self._start_task(self._task_queue.popleft(),
+ self._task_exit_handler)
def _task_exit_handler(self, task):
if self._default_exit(task) == os.EX_OK and \
@@ -2006,9 +2017,7 @@ class EbuildExecuter(CompositeTask):
phase = "clean"
clean_phase = EbuildPhase(pkg=pkg, phase=phase,
scheduler=scheduler, settings=settings, tree=tree)
- clean_phase.addExitListener(self._clean_phase_exit)
- self._current_task = clean_phase
- clean_phase.start()
+ self._start_task(clean_phase, self._clean_phase_exit)
def _clean_phase_exit(self, clean_phase):
@@ -2037,9 +2046,7 @@ class EbuildExecuter(CompositeTask):
pkg=pkg, phase=phase, scheduler=scheduler,
settings=settings, tree=tree))
- ebuild_phases.addExitListener(self._final_exit)
- self._current_task = ebuild_phases
- ebuild_phases.start()
+ self._start_task(ebuild_phases, self._final_exit)
class EbuildPhase(SubProcess):