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: Mon, 16 May 2011 01:26:31
Message-Id: b2e26ba79e1ef41594d1ec1bb032acf7fb6a1403.zmedico@gentoo
1 commit: b2e26ba79e1ef41594d1ec1bb032acf7fb6a1403
2 Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
3 AuthorDate: Mon May 16 01:25:59 2011 +0000
4 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
5 CommitDate: Mon May 16 01:25:59 2011 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=b2e26ba7
7
8 preserve-libs: lock vardb for removeFromContents
9
10 ---
11 pym/portage/dbapi/vartree.py | 31 ++++++++++++++++++++-----------
12 1 files changed, 20 insertions(+), 11 deletions(-)
13
14 diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py
15 index 4d7e6b8..cae8cd0 100644
16 --- a/pym/portage/dbapi/vartree.py
17 +++ b/pym/portage/dbapi/vartree.py
18 @@ -1548,10 +1548,14 @@ class dblink(object):
19 unmerge_no_replacement)
20 if cpv_lib_map:
21 self._remove_preserved_libs(cpv_lib_map)
22 - for cpv, removed in cpv_lib_map.items():
23 - if not self.vartree.dbapi.cpv_exists(cpv):
24 - continue
25 - self.vartree.dbapi.removeFromContents(cpv, removed)
26 + self.vartree.dbapi.lock()
27 + try:
28 + for cpv, removed in cpv_lib_map.items():
29 + if not self.vartree.dbapi.cpv_exists(cpv):
30 + continue
31 + self.vartree.dbapi.removeFromContents(cpv, removed)
32 + finally:
33 + self.vartree.dbapi.unlock()
34
35 plib_registry.store()
36 finally:
37 @@ -3524,12 +3528,19 @@ class dblink(object):
38 # same cpv then the vdb entry no longer belongs
39 # to it, so we'll have to get the slot and counter
40 # from plib_registry._data instead.
41 + self.vartree.dbapi.lock()
42 try:
43 - slot, counter = self.vartree.dbapi.aux_get(
44 - cpv, ["SLOT", "COUNTER"])
45 - has_vdb_entry = True
46 - except KeyError:
47 - pass
48 + try:
49 + slot, counter = self.vartree.dbapi.aux_get(
50 + cpv, ["SLOT", "COUNTER"])
51 + except KeyError:
52 + pass
53 + else:
54 + has_vdb_entry = True
55 + self.vartree.dbapi.removeFromContents(
56 + cpv, paths)
57 + finally:
58 + self.vartree.dbapi.unlock()
59
60 if not has_vdb_entry:
61 # It's possible for previously unmerged packages
62 @@ -3553,8 +3564,6 @@ class dblink(object):
63
64 remaining = [f for f in plib_dict[cpv] if f not in paths]
65 plib_registry.register(cpv, slot, counter, remaining)
66 - if has_vdb_entry:
67 - self.vartree.dbapi.removeFromContents(cpv, paths)
68
69 plib_registry.store()
70 finally: