Index: pym/_emerge/EbuildMerge.py |
diff --git a/pym/_emerge/EbuildMerge.py b/pym/_emerge/EbuildMerge.py |
index d73a262b321cf7c8f3489bcca3b901c614f76380..6a586927023ab5fc30539b2c981fc989d4c23b93 100644 |
--- a/pym/_emerge/EbuildMerge.py |
+++ b/pym/_emerge/EbuildMerge.py |
@@ -4,6 +4,8 @@ |
from _emerge.SlotObject import SlotObject |
import portage |
from portage import os |
+from portage.dbapi._MergeProcess import MergeProcess |
+from portage.dbapi.vartree import dblink |
class EbuildMerge(SlotObject): |
@@ -11,28 +13,35 @@ class EbuildMerge(SlotObject): |
"pkg", "pkg_count", "pkg_path", "pretend", |
"scheduler", "settings", "tree", "world_atom") |
- def execute(self): |
+ def create_task(self): |
root_config = self.pkg.root_config |
settings = self.settings |
- retval = portage.merge(settings["CATEGORY"], |
- settings["PF"], settings["D"], |
- os.path.join(settings["PORTAGE_BUILDDIR"], |
- "build-info"), root_config.root, settings, |
- myebuild=settings["EBUILD"], |
- mytree=self.tree, mydbapi=root_config.trees[self.tree].dbapi, |
- vartree=root_config.trees["vartree"], |
- prev_mtimes=self.ldpath_mtimes, |
- scheduler=self.scheduler, |
- blockers=self.find_blockers) |
- |
- if retval == os.EX_OK: |
- self.world_atom(self.pkg) |
- self._log_success() |
- |
- return retval |
- |
- def _log_success(self): |
+ mycat = settings["CATEGORY"] |
+ mypkg = settings["PF"] |
+ pkgloc = settings["D"] |
+ infloc = os.path.join(settings["PORTAGE_BUILDDIR"], "build-info") |
+ myroot = root_config.root |
+ myebuild = settings["EBUILD"] |
+ mydbapi = root_config.trees[self.tree].dbapi |
+ vartree = root_config.trees["vartree"] |
+ background = (settings.get('PORTAGE_BACKGROUND') == '1') |
+ logfile = settings.get('PORTAGE_LOG_FILE') |
+ |
+ merge_task = MergeProcess( |
+ dblink=dblink, mycat=mycat, mypkg=mypkg, settings=settings, |
+ treetype=self.tree, vartree=vartree, scheduler=self.scheduler, |
+ background=background, blockers=self.find_blockers, pkgloc=pkgloc, |
+ infloc=infloc, myebuild=myebuild, mydbapi=mydbapi, |
+ prev_mtimes=self.ldpath_mtimes, logfile=logfile) |
+ merge_task.addExitListener(self._log_exit) |
+ return merge_task |
+ |
+ def _log_exit(self, task): |
+ if task.returncode != os.EX_OK: |
+ return |
+ |
pkg = self.pkg |
+ self.world_atom(pkg) |
pkg_count = self.pkg_count |
pkg_path = self.pkg_path |
logger = self.logger |