summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/__init__.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-01-12 08:11:17 +0000
committerZac Medico <zmedico@gentoo.org>2009-01-12 08:11:17 +0000
commit87f29037dc963de0cc380c8e5f8fbe970b016811 (patch)
tree1059e5d2343a08c6e19629f7307187a61bef6482 /pym/_emerge/__init__.py
parentcfbaca3bce92d516c3264752afaa6efda82f38ae (diff)
downloadportage-87f29037dc963de0cc380c8e5f8fbe970b016811.tar.gz
portage-87f29037dc963de0cc380c8e5f8fbe970b016811.tar.bz2
portage-87f29037dc963de0cc380c8e5f8fbe970b016811.zip
Bug #253210 - Fix logic inside EbuildBuild._buildpkg_exit() to avoid
triggering an AssertionError when the package phase has failed. This bug usually isn't noticeable since the package phase usually succeeds. (trunk r12371) svn path=/main/branches/2.1.6/; revision=12442
Diffstat (limited to 'pym/_emerge/__init__.py')
-rw-r--r--pym/_emerge/__init__.py15
1 files changed, 10 insertions, 5 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index 4b8887bc9..dffc05ea7 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -2658,8 +2658,12 @@ class EbuildBuild(CompositeTask):
be released when merge() is called.
"""
- if self._default_exit(packager) == os.EX_OK and \
- self.opts.buildpkgonly:
+ if self._default_exit(packager) != os.EX_OK:
+ self._unlock_builddir()
+ self.wait()
+ return
+
+ if self.opts.buildpkgonly:
# Need to call "clean" phase for buildpkgonly mode
portage.elog.elog_process(self.pkg.cpv, self.settings)
phase = "clean"
@@ -2670,9 +2674,10 @@ class EbuildBuild(CompositeTask):
self._start_task(clean_phase, self._clean_exit)
return
- if self._final_exit(packager) != os.EX_OK or \
- self.opts.buildpkgonly:
- self._unlock_builddir()
+ # Continue holding the builddir lock until
+ # after the package has been installed.
+ self._current_task = None
+ self.returncode = packager.returncode
self.wait()
def _clean_exit(self, clean_phase):