aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2010-08-16 08:16:08 -0700
committerZac Medico <zmedico@gentoo.org>2010-08-16 08:16:08 -0700
commit51483738aeebe26a120ad30d2c9c662f01e26ff4 (patch)
treee4aa8455d895fde0035b7ac66918e798d7b1ec00 /pym/_emerge/EbuildProcess.py
parentRevert back to using portdbapi.getFetchMap() since the Package class (diff)
downloadportage-51483738aeebe26a120ad30d2c9c662f01e26ff4.tar.gz
portage-51483738aeebe26a120ad30d2c9c662f01e26ff4.tar.bz2
portage-51483738aeebe26a120ad30d2c9c662f01e26ff4.zip
Split out parts of doebuild() so that EbuildProcess can bypass it
and call the spawn() function directly.
Diffstat (limited to 'pym/_emerge/EbuildProcess.py')
-rw-r--r--pym/_emerge/EbuildProcess.py37
1 files changed, 19 insertions, 18 deletions
diff --git a/pym/_emerge/EbuildProcess.py b/pym/_emerge/EbuildProcess.py
index c643c3bd2..bd0e0d6fc 100644
--- a/pym/_emerge/EbuildProcess.py
+++ b/pym/_emerge/EbuildProcess.py
@@ -1,10 +1,13 @@
-# Copyright 1999-2009 Gentoo Foundation
+# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
from _emerge.AbstractEbuildProcess import AbstractEbuildProcess
+from portage import _shell_quote
from portage import os
-from portage.package.ebuild.doebuild import doebuild, \
- _post_phase_userpriv_perms
+from portage.const import EBUILD_SH_BINARY
+from portage.package.ebuild.doebuild import _post_phase_userpriv_perms
+from portage.package.ebuild.doebuild import spawn as doebuild_spawn
+from portage.package.ebuild.doebuild import _spawn_actionmap
class EbuildProcess(AbstractEbuildProcess):
@@ -19,21 +22,19 @@ class EbuildProcess(AbstractEbuildProcess):
AbstractEbuildProcess._start(self)
def _spawn(self, args, **kwargs):
-
- root_config = self.pkg.root_config
- tree = self.tree
- mydbapi = root_config.trees[tree].dbapi
- vartree = root_config.trees["vartree"]
- settings = self.settings
- ebuild_path = settings["EBUILD"]
- debug = settings.get("PORTAGE_DEBUG") == "1"
-
-
- rval = doebuild(ebuild_path, self.phase,
- root_config.root, settings, debug,
- mydbapi=mydbapi, tree=tree, vartree=vartree, **kwargs)
-
- return rval
+ self.settings["EBUILD_PHASE"] = self.phase
+ actionmap = _spawn_actionmap(self.settings)
+ if self.phase in actionmap:
+ kwargs.update(actionmap[self.phase]["args"])
+ cmd = actionmap[self.phase]["cmd"] % self.phase
+ else:
+ cmd = "%s %s" % (_shell_quote(os.path.join(
+ self.settings["PORTAGE_BIN_PATH"],
+ os.path.basename(EBUILD_SH_BINARY))), self.phase)
+ try:
+ return doebuild_spawn(cmd, self.settings, **kwargs)
+ finally:
+ self.settings.pop("EBUILD_PHASE", None)
def _set_returncode(self, wait_retval):
AbstractEbuildProcess._set_returncode(self, wait_retval)