1 |
Asynchronously lock the build directory, and use AsyncTaskFuture |
2 |
to fit the resulting future into the CompositeTask framework that |
3 |
PackageUninstall uses. |
4 |
|
5 |
Bug: https://bugs.gentoo.org/614112 |
6 |
--- |
7 |
pym/_emerge/PackageUninstall.py | 8 +++++++- |
8 |
1 file changed, 7 insertions(+), 1 deletion(-) |
9 |
|
10 |
diff --git a/pym/_emerge/PackageUninstall.py b/pym/_emerge/PackageUninstall.py |
11 |
index 8f19e38e4..3fe1fb0a6 100644 |
12 |
--- a/pym/_emerge/PackageUninstall.py |
13 |
+++ b/pym/_emerge/PackageUninstall.py |
14 |
@@ -55,8 +55,13 @@ class PackageUninstall(CompositeTask): |
15 |
|
16 |
self._builddir_lock = EbuildBuildDir( |
17 |
scheduler=self.scheduler, settings=self.settings) |
18 |
- self._builddir_lock.lock() |
19 |
+ self._start_task( |
20 |
+ AsyncTaskFuture(future=self._builddir_lock.async_lock()), |
21 |
+ self._start_unmerge) |
22 |
|
23 |
+ def _start_unmerge(self, lock_task): |
24 |
+ self._assert_current(lock_task) |
25 |
+ lock_task.future.result() |
26 |
portage.prepare_build_dirs( |
27 |
settings=self.settings, cleanup=True) |
28 |
|
29 |
@@ -74,6 +79,7 @@ class PackageUninstall(CompositeTask): |
30 |
noiselevel=-1) |
31 |
self._emergelog("=== Unmerging... (%s)" % (self.pkg.cpv,)) |
32 |
|
33 |
+ cat, pf = portage.catsplit(self.pkg.cpv) |
34 |
unmerge_task = MergeProcess( |
35 |
mycat=cat, mypkg=pf, settings=self.settings, |
36 |
treetype="vartree", vartree=self.pkg.root_config.trees["vartree"], |
37 |
-- |
38 |
2.13.6 |