diff options
-rw-r--r-- | pym/_emerge/AbstractEbuildProcess.py | 18 | ||||
-rw-r--r-- | pym/portage/package/ebuild/doebuild.py | 12 |
2 files changed, 17 insertions, 13 deletions
diff --git a/pym/_emerge/AbstractEbuildProcess.py b/pym/_emerge/AbstractEbuildProcess.py index 39c8c5683..a74a39437 100644 --- a/pym/_emerge/AbstractEbuildProcess.py +++ b/pym/_emerge/AbstractEbuildProcess.py @@ -44,10 +44,12 @@ class AbstractEbuildProcess(SpawnProcess): def _start(self): + need_builddir = self.phase not in self._phases_without_builddir + # This can happen if the pre-clean phase triggers # die_hooks for some reason, and PORTAGE_BUILDDIR # doesn't exist yet. - if self.phase not in self._phases_without_builddir and \ + if need_builddir and \ not os.path.isdir(self.settings['PORTAGE_BUILDDIR']): msg = _("The ebuild phase '%s' has been aborted " "since PORTAGE_BUILDIR does not exist: '%s'") % \ @@ -57,6 +59,20 @@ class AbstractEbuildProcess(SpawnProcess): self.wait() return + if need_builddir: + phase_completed_file = os.path.join( + self.settings['PORTAGE_BUILDDIR'], + ".%sed" % self.phase.rstrip('e')) + if not os.path.exists(phase_completed_file): + # If the phase is really going to run then we want + # to eliminate any stale elog messages that may + # exist from a previous run. + try: + os.unlink(os.path.join(self.settings['T'], + 'logging', self.phase)) + except OSError: + pass + if self.background: # Automatically prevent color codes from showing up in logs, # since we're not displaying to a terminal anyway. diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package/ebuild/doebuild.py index 862939dc3..696b65eb7 100644 --- a/pym/portage/package/ebuild/doebuild.py +++ b/pym/portage/package/ebuild/doebuild.py @@ -92,18 +92,6 @@ def _doebuild_spawn(phase, settings, actionmap=None, **kwargs): os.path.basename(EBUILD_SH_BINARY))), ebuild_sh_arg) - if phase not in EbuildSpawnProcess._phases_without_builddir: - phase_completed_file = os.path.join(settings['PORTAGE_BUILDDIR'], - ".%sed" % phase.rstrip('e')) - if not os.path.exists(phase_completed_file): - # If the phase is really going to run then we want - # to eliminate any stale elog messages that may - # exist from a previous run. - try: - os.unlink(os.path.join(settings['T'], 'logging', phase)) - except OSError: - pass - settings['EBUILD_PHASE'] = phase try: return spawn(cmd, settings, **kwargs) |