From: Zac Medico Date: Mon, 12 Jan 2009 08:11:17 +0000 (-0000) Subject: Bug #253210 - Fix logic inside EbuildBuild._buildpkg_exit() to avoid X-Git-Tag: v2.1.6.5~45 X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=87f29037dc963de0cc380c8e5f8fbe970b016811;p=portage.git 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 --- 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):