diff options
author | Zac Medico <zmedico@gentoo.org> | 2008-07-06 15:17:10 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2008-07-06 15:17:10 +0000 |
commit | 1f0452f69e03b728ae26f6e5800fe52dbd0cd649 (patch) | |
tree | f988b78502cbb09262235ae0f4d5375f61e9bcb8 | |
parent | edd7c68e04049dea96dff0e5aeb6e28fd620681b (diff) | |
download | portage-1f0452f69e03b728ae26f6e5800fe52dbd0cd649.tar.gz portage-1f0452f69e03b728ae26f6e5800fe52dbd0cd649.tar.bz2 portage-1f0452f69e03b728ae26f6e5800fe52dbd0cd649.zip |
Add a PackageMerge class to serve as an asynchronous interface to package
merges. For now it executes synchronously inside the start() method.
svn path=/main/trunk/; revision=10961
-rw-r--r-- | pym/_emerge/__init__.py | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index f1316e92b..ca69164b5 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -2893,6 +2893,18 @@ class MergeListItem(CompositeTask): retval = self._install_task.install() return retval +class PackageMerge(CompositeTask): + """ + TODO: Implement asynchronous merge so that the scheduler can + run while a merge is executing. + """ + + __slots__ = ("merge",) + + def start(self): + self.returncode = self.merge.merge() + self.wait() + class DependencyArg(object): def __init__(self, arg=None, root_config=None): self.arg = arg @@ -7850,7 +7862,9 @@ class Scheduler(object): retval = task.wait() if retval == os.EX_OK: - retval = task.merge() + task = PackageMerge(merge=task) + task.start() + retval = task.wait() if retval == os.EX_OK: self.curval += 1 |