summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-07-06 01:51:50 +0000
committerZac Medico <zmedico@gentoo.org>2008-07-06 01:51:50 +0000
commit3b0dc8e06d9d8a736ec977d635cc9d3971e1f890 (patch)
tree02a714540fc03f5002b38a9ef650c42bb74c3700
parent0e0963c4576f505888f8d12a818a895e0988044e (diff)
downloadportage-3b0dc8e06d9d8a736ec977d635cc9d3971e1f890.tar.gz
portage-3b0dc8e06d9d8a736ec977d635cc9d3971e1f890.tar.bz2
portage-3b0dc8e06d9d8a736ec977d635cc9d3971e1f890.zip
Add CompositeTask._final_exit() method and use it to fix breakage from the
previous commit. svn path=/main/trunk/; revision=10951
-rw-r--r--pym/_emerge/__init__.py17
1 files changed, 16 insertions, 1 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index 56c909870..ab098297f 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -1552,6 +1552,19 @@ class CompositeTask(AsynchronousTask):
self._current_task = None
return task.returncode
+ def _final_exit(self, task):
+ """
+ Assumes that task is the final task of this composite task.
+ Calls _default_exit() and sets self.returncode to the task's
+ returncode and sets self._current_task to None.
+
+ Subclasses can use this as a generic final task exit callback.
+
+ """
+ self._default_exit(task)
+ self._current_task = None
+ self.returncode = task.returncode
+
class TaskSequence(CompositeTask):
"""
A collection of tasks that executes sequentially. Each task
@@ -1585,6 +1598,8 @@ class TaskSequence(CompositeTask):
if self._default_exit(task) == os.EX_OK and \
self._task_queue:
self._start_next_task()
+ else:
+ self._final_exit(task)
class SubProcess(AsynchronousTask):
__slots__ = ("pid",)
@@ -2022,7 +2037,7 @@ class EbuildExecuter(CompositeTask):
pkg=pkg, phase=phase, scheduler=scheduler,
settings=settings, tree=tree))
- ebuild_phases.addExitListener(self._default_exit)
+ ebuild_phases.addExitListener(self._final_exit)
self._current_task = ebuild_phases
ebuild_phases.start()