From: Zac Medico Date: Mon, 7 Dec 2009 02:30:33 +0000 (-0000) Subject: Inside dblink._merge(), make sure PORTAGE_BUILDDIR still exists before trying X-Git-Tag: v2.2_rc56~3 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=9d71fd0cc12d991cac13e0de6b0b7042a39a62a6;p=portage.git Inside dblink._merge(), make sure PORTAGE_BUILDDIR still exists before trying to call ebuild success/die hooks, since it might have already been removed by fail-clean (and the hooks would have already been called). svn path=/main/trunk/; revision=14953 --- diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index 3244fa4ee..a424dea0a 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -4403,17 +4403,23 @@ class dblink(object): retval = self.treewalk(mergeroot, myroot, inforoot, myebuild, cleanup=cleanup, mydbapi=mydbapi, prev_mtimes=prev_mtimes) - if retval == os.EX_OK: - phase = 'success_hooks' - else: - phase = 'die_hooks' + # If PORTAGE_BUILDDIR doesn't exist, then it probably means + # fail-clean is enabled, and the success/die hooks have + # already been called by _emerge.EbuildPhase (via + # self._scheduler.dblinkEbuildPhase) prior to cleaning. + if os.path.isdir(self.settings['PORTAGE_BUILDDIR']): + + if retval == os.EX_OK: + phase = 'success_hooks' + else: + phase = 'die_hooks' - if self._scheduler is None: - portage._spawn_misc_sh(self.settings, [phase], - phase=phase) - else: - self._scheduler.dblinkEbuildPhase( - self, mydbapi, myebuild, phase) + if self._scheduler is None: + portage._spawn_misc_sh(self.settings, [phase], + phase=phase) + else: + self._scheduler.dblinkEbuildPhase( + self, mydbapi, myebuild, phase) # Process ebuild logfiles elog_process(self.mycpv, self.settings, phasefilter=filter_mergephases)