summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/EbuildPhase.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2010-08-18 17:08:59 -0700
committerZac Medico <zmedico@gentoo.org>2010-08-18 17:08:59 -0700
commit187df8a3beaffb09948799f5630f5cceeaeb95c5 (patch)
tree05aa334a559585ef7b3bfb24ffd7061d215a1d3f /pym/_emerge/EbuildPhase.py
parent31cca99d48004d74ccac68de478eadef0a3ce83e (diff)
downloadportage-187df8a3beaffb09948799f5630f5cceeaeb95c5.tar.gz
portage-187df8a3beaffb09948799f5630f5cceeaeb95c5.tar.bz2
portage-187df8a3beaffb09948799f5630f5cceeaeb95c5.zip
Move the code from _prepare_env_file() to a new BinpkgEnvExtractor
class.
Diffstat (limited to 'pym/_emerge/EbuildPhase.py')
-rw-r--r--pym/_emerge/EbuildPhase.py24
1 files changed, 23 insertions, 1 deletions
diff --git a/pym/_emerge/EbuildPhase.py b/pym/_emerge/EbuildPhase.py
index 5680925e4..5f52b4292 100644
--- a/pym/_emerge/EbuildPhase.py
+++ b/pym/_emerge/EbuildPhase.py
@@ -1,6 +1,7 @@
-# Copyright 1999-2009 Gentoo Foundation
+# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
+from _emerge.BinpkgEnvExtractor import BinpkgEnvExtractor
from _emerge.MiscFunctionsProcess import MiscFunctionsProcess
from _emerge.EbuildProcess import EbuildProcess
from _emerge.CompositeTask import CompositeTask
@@ -24,6 +25,27 @@ class EbuildPhase(CompositeTask):
def _start(self):
+ if self.phase == 'prerm':
+ env_extractor = BinpkgEnvExtractor(background=self.background,
+ scheduler=self.scheduler, settings=self.settings)
+ if env_extractor.saved_env_exists():
+ self._start_task(env_extractor, self._env_extractor_exit)
+ return
+ # If the environment.bz2 doesn't exist, then ebuild.sh will
+ # source the ebuild as a fallback.
+
+ self._start_ebuild()
+
+ def _env_extractor_exit(self, env_extractor):
+ if self._default_exit(env_extractor) != os.EX_OK:
+ self._unlock_builddir()
+ self.wait()
+ return
+
+ self._start_ebuild()
+
+ def _start_ebuild(self):
+
ebuild_process = EbuildProcess(actionmap=self.actionmap,
background=self.background,
phase=self.phase, scheduler=self.scheduler,