From 9d71fd0cc12d991cac13e0de6b0b7042a39a62a6 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Mon, 7 Dec 2009 02:30:33 +0000 Subject: 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 --- pym/portage/dbapi/vartree.py | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) 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) -- cgit v1.2.3-1-g7c22