diff options
author | David James <davidjames@google.com> | 2011-03-24 19:36:33 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-03-24 19:36:33 -0700 |
commit | 7535cabdf2fab76fc55df83643157613dfd66be9 (patch) | |
tree | 535e51878faa5359a7c186ca0aadfbe6ebcc02b2 /pym/_emerge/MergeListItem.py | |
parent | 99ec2a8f810ae7ea2c76d928665ed1d02c2d9cc7 (diff) | |
download | portage-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/MergeListItem.py')
-rw-r--r-- | pym/_emerge/MergeListItem.py | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/pym/_emerge/MergeListItem.py b/pym/_emerge/MergeListItem.py index 1dcc1780a..768865e6b 100644 --- a/pym/_emerge/MergeListItem.py +++ b/pym/_emerge/MergeListItem.py @@ -111,7 +111,7 @@ class MergeListItem(CompositeTask): self._install_task.wait() return self.returncode - def merge(self): + def merge(self, exit_handler): pkg = self.pkg build_opts = self.build_opts @@ -135,15 +135,14 @@ class MergeListItem(CompositeTask): world_atom=world_atom) uninstall.start() - retval = uninstall.wait() - if retval != os.EX_OK: - return retval - return os.EX_OK - - if build_opts.fetchonly or \ + self.returncode = uninstall.wait() + else: + self.returncode = os.EX_OK + exit_handler(self) + elif build_opts.fetchonly or \ build_opts.buildpkgonly: - return self.returncode - - retval = self._install_task.install() - return retval + exit_handler(self) + else: + self._current_task = self._install_task + self._install_task.install(exit_handler) |