diff options
author | Zac Medico <zmedico@gentoo.org> | 2008-07-06 01:51:50 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2008-07-06 01:51:50 +0000 |
commit | 3b0dc8e06d9d8a736ec977d635cc9d3971e1f890 (patch) | |
tree | 02a714540fc03f5002b38a9ef650c42bb74c3700 | |
parent | 0e0963c4576f505888f8d12a818a895e0988044e (diff) | |
download | portage-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__.py | 17 |
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() |