1 |
commit: 03d2647d5c8d74088b29283598f8c4a0fef5db96 |
2 |
Author: Zac Medico <zmedico <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sun May 15 02:55:24 2011 +0000 |
4 |
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> |
5 |
CommitDate: Sun May 15 02:55:24 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=03d2647d |
7 |
|
8 |
preserve-libs: use vardbapi _fs_lock/unlock |
9 |
|
10 |
The preserve-libs code is too dependent on the filesystem state to |
11 |
allow merging/unmerge/env_update to execute concurrently. |
12 |
|
13 |
--- |
14 |
pym/portage/dbapi/vartree.py | 6 ++++++ |
15 |
1 files changed, 6 insertions(+), 0 deletions(-) |
16 |
|
17 |
diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py |
18 |
index a2e38f6..5db267d 100644 |
19 |
--- a/pym/portage/dbapi/vartree.py |
20 |
+++ b/pym/portage/dbapi/vartree.py |
21 |
@@ -1509,6 +1509,7 @@ class dblink(object): |
22 |
# remove preserved libraries that don't have any consumers left |
23 |
plib_registry = self.vartree.dbapi._plib_registry |
24 |
if plib_registry: |
25 |
+ self.vartree.dbapi._fs_lock() |
26 |
plib_registry.lock() |
27 |
try: |
28 |
plib_registry.load() |
29 |
@@ -1564,6 +1565,7 @@ class dblink(object): |
30 |
plib_registry.store() |
31 |
finally: |
32 |
plib_registry.unlock() |
33 |
+ self.vartree.dbapi._fs_unlock() |
34 |
|
35 |
def unmerge(self, pkgfiles=None, trimworld=None, cleanup=True, |
36 |
ldpath_mtimes=None, others_in_slot=None, needed=None, |
37 |
@@ -3409,6 +3411,7 @@ class dblink(object): |
38 |
preserve_paths = set() |
39 |
needed = None |
40 |
if not (linkmap is None or plib_registry is None): |
41 |
+ self.vartree.dbapi._fs_lock() |
42 |
plib_registry.lock() |
43 |
try: |
44 |
plib_registry.load() |
45 |
@@ -3423,6 +3426,7 @@ class dblink(object): |
46 |
preserve_paths = self._find_libs_to_preserve() |
47 |
finally: |
48 |
plib_registry.unlock() |
49 |
+ self.vartree.dbapi._fs_unlock() |
50 |
|
51 |
if preserve_paths: |
52 |
self._add_preserve_libs_to_contents(preserve_paths) |
53 |
@@ -3507,6 +3511,7 @@ class dblink(object): |
54 |
|
55 |
plib_registry = self.vartree.dbapi._plib_registry |
56 |
if plib_registry: |
57 |
+ self.vartree.dbapi._fs_lock() |
58 |
plib_registry.lock() |
59 |
try: |
60 |
plib_registry.load() |
61 |
@@ -3563,6 +3568,7 @@ class dblink(object): |
62 |
plib_registry.store() |
63 |
finally: |
64 |
plib_registry.unlock() |
65 |
+ self.vartree.dbapi._fs_unlock() |
66 |
|
67 |
self.vartree.dbapi._add(self) |
68 |
contents = self.getcontents() |