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)

Reply via email to