Gentoo Archives: gentoo-commits

From: Zac Medico <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:master commit in: pym/portage/dbapi/
Date: Sun, 15 May 2011 02:56:06
Message-Id: 03d2647d5c8d74088b29283598f8c4a0fef5db96.zmedico@gentoo
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()