summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/EbuildBuild.py
diff options
context:
space:
mode:
authorDavid James <davidjames@google.com>2011-03-24 19:36:33 -0700
committerZac Medico <zmedico@gentoo.org>2011-03-24 19:36:33 -0700
commit7535cabdf2fab76fc55df83643157613dfd66be9 (patch)
tree535e51878faa5359a7c186ca0aadfbe6ebcc02b2 /pym/_emerge/EbuildBuild.py
parent99ec2a8f810ae7ea2c76d928665ed1d02c2d9cc7 (diff)
downloadportage-7535cabdf2fab76fc55df83643157613dfd66be9.tar.gz
portage-7535cabdf2fab76fc55df83643157613dfd66be9.tar.bz2
portage-7535cabdf2fab76fc55df83643157613dfd66be9.zip
Merge packages asynchronously in Portage.
This allows for the scheduler to continue to run while packages are being merged and installed, allowing for additional parallelism and making better use of the CPUs. Review URL: http://codereview.chromium.org/6713043
Diffstat (limited to 'pym/_emerge/EbuildBuild.py')
-rw-r--r--pym/_emerge/EbuildBuild.py13
1 files changed, 7 insertions, 6 deletions
diff --git a/pym/_emerge/EbuildBuild.py b/pym/_emerge/EbuildBuild.py
index 98ab24522..c7a5f5cdb 100644
--- a/pym/_emerge/EbuildBuild.py
+++ b/pym/_emerge/EbuildBuild.py
@@ -314,7 +314,7 @@ class EbuildBuild(CompositeTask):
self._unlock_builddir()
self.wait()
- def install(self):
+ def install(self, exit_handler):
"""
Install the package and then clean up and release locks.
Only call this after the build has completed successfully
@@ -343,10 +343,11 @@ class EbuildBuild(CompositeTask):
(pkg_count.curval, pkg_count.maxval, pkg.cpv)
logger.log(msg, short_msg=short_msg)
- try:
- rval = merge.execute()
- finally:
- self._unlock_builddir()
+ task = merge.create_task()
+ task.addExitListener(self._install_exit)
+ self._start_task(task, exit_handler)
- return rval
+ def _install_exit(self, task):
+ self._unlock_builddir()
+ self._default_final_exit(task)