commit: cb7d234d24bcada5e486ab1975d3592ac5af7218 Author: Zac Medico <zmedico <AT> gentoo <DOT> org> AuthorDate: Fri Apr 18 19:50:15 2014 +0000 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> CommitDate: Fri Apr 18 19:50:15 2014 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=cb7d234d
EbuildBuild: handle empty PORTAGE_BINPKG_FORMAT Also, make TaskSequence._start_next_task() call exit hooks if the queue happens to be empty. X-Gentoo-Bug: 506186 X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=506186 --- pym/_emerge/EbuildBuild.py | 9 +++++++-- pym/_emerge/TaskSequence.py | 26 +++++++++++++++++++++----- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/pym/_emerge/EbuildBuild.py b/pym/_emerge/EbuildBuild.py index e13b1cf..86a5631 100644 --- a/pym/_emerge/EbuildBuild.py +++ b/pym/_emerge/EbuildBuild.py @@ -1,4 +1,4 @@ -# Copyright 1999-2013 Gentoo Foundation +# Copyright 1999-2014 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 from _emerge.EbuildExecuter import EbuildExecuter @@ -321,7 +321,12 @@ class EbuildBuild(CompositeTask): pkg=self.pkg, scheduler=self.scheduler, settings=self.settings)) - self._start_task(binpkg_tasks, self._buildpkg_exit) + if binpkg_tasks: + self._start_task(binpkg_tasks, self._buildpkg_exit) + return + + self._final_exit(build) + self.wait() def _buildpkg_exit(self, packager): """ diff --git a/pym/_emerge/TaskSequence.py b/pym/_emerge/TaskSequence.py index b4bfefe..1f2ba94 100644 --- a/pym/_emerge/TaskSequence.py +++ b/pym/_emerge/TaskSequence.py @@ -1,10 +1,12 @@ -# Copyright 1999-2011 Gentoo Foundation +# Copyright 1999-2014 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 +import sys +from collections import deque + from portage import os from _emerge.CompositeTask import CompositeTask from _emerge.AsynchronousTask import AsynchronousTask -from collections import deque class TaskSequence(CompositeTask): """ @@ -30,9 +32,15 @@ class TaskSequence(CompositeTask): CompositeTask._cancel(self) def _start_next_task(self): - if self._task_queue: - self._start_task(self._task_queue.popleft(), - self._task_exit_handler) + try: + task = self._task_queue.popleft() + except IndexError: + self._current_task = None + self.returncode = os.EX_OK + self.wait() + return + + self._start_task(task, self._task_exit_handler) def _task_exit_handler(self, task): if self._default_exit(task) != os.EX_OK: @@ -43,3 +51,11 @@ class TaskSequence(CompositeTask): self._final_exit(task) self.wait() + def __bool__(self): + return bool(self._task_queue) + + if sys.hexversion < 0x3000000: + __nonzero__ = __bool__ + + def __len__(self): + return len(self._task_queue)
