summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/EbuildPhase.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-06-22 16:43:52 +0000
committerZac Medico <zmedico@gentoo.org>2009-06-22 16:43:52 +0000
commitd057d91f391981fb0564873c471d550f2f62edf5 (patch)
treed6cd416fc5e9389806ec98a02ae236c99e876e4b /pym/_emerge/EbuildPhase.py
parent28184c982a0688ed9bc4d82df407d4e400f6318c (diff)
downloadportage-d057d91f391981fb0564873c471d550f2f62edf5.tar.gz
portage-d057d91f391981fb0564873c471d550f2f62edf5.tar.bz2
portage-d057d91f391981fb0564873c471d550f2f62edf5.zip
Bug #275047 - Split _emerge/__init__.py into smaller pieces. Thanks to
Sebastian Mingramm (few) <s.mingramm@gmx.de> for this patch. svn path=/main/trunk/; revision=13663
Diffstat (limited to 'pym/_emerge/EbuildPhase.py')
-rw-r--r--pym/_emerge/EbuildPhase.py72
1 files changed, 72 insertions, 0 deletions
diff --git a/pym/_emerge/EbuildPhase.py b/pym/_emerge/EbuildPhase.py
new file mode 100644
index 000000000..4efa43721
--- /dev/null
+++ b/pym/_emerge/EbuildPhase.py
@@ -0,0 +1,72 @@
+from _emerge.MiscFunctionsProcess import MiscFunctionsProcess
+from _emerge.EbuildProcess import EbuildProcess
+from _emerge.CompositeTask import CompositeTask
+from portage.util import writemsg
+try:
+ import portage
+except ImportError:
+ from os import path as osp
+ import sys
+ sys.path.insert(0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym"))
+ import portage
+import os
+class EbuildPhase(CompositeTask):
+
+ __slots__ = ("background", "pkg", "phase",
+ "scheduler", "settings", "tree")
+
+ _post_phase_cmds = portage._post_phase_cmds
+
+ def _start(self):
+
+ ebuild_process = EbuildProcess(background=self.background,
+ pkg=self.pkg, phase=self.phase, scheduler=self.scheduler,
+ settings=self.settings, tree=self.tree)
+
+ self._start_task(ebuild_process, self._ebuild_exit)
+
+ def _ebuild_exit(self, ebuild_process):
+
+ if self.phase == "install":
+ out = None
+ log_path = self.settings.get("PORTAGE_LOG_FILE")
+ log_file = None
+ if self.background and log_path is not None:
+ log_file = open(log_path, 'a')
+ out = log_file
+ try:
+ portage._check_build_log(self.settings, out=out)
+ finally:
+ if log_file is not None:
+ log_file.close()
+
+ if self._default_exit(ebuild_process) != os.EX_OK:
+ self.wait()
+ return
+
+ settings = self.settings
+
+ if self.phase == "install":
+ portage._post_src_install_chost_fix(settings)
+ portage._post_src_install_uid_fix(settings)
+
+ post_phase_cmds = self._post_phase_cmds.get(self.phase)
+ if post_phase_cmds is not None:
+ post_phase = MiscFunctionsProcess(background=self.background,
+ commands=post_phase_cmds, phase=self.phase, pkg=self.pkg,
+ scheduler=self.scheduler, settings=settings)
+ self._start_task(post_phase, self._post_phase_exit)
+ return
+
+ self.returncode = ebuild_process.returncode
+ self._current_task = None
+ self.wait()
+
+ def _post_phase_exit(self, post_phase):
+ if self._final_exit(post_phase) != os.EX_OK:
+ writemsg("!!! post %s failed; exiting.\n" % self.phase,
+ noiselevel=-1)
+ self._current_task = None
+ self.wait()
+ return
+