1 |
commit: 6d916753c07ccad4fcc596b155d776f297aeeb68 |
2 |
Author: Zac Medico <zmedico <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sun May 8 05:02:38 2011 +0000 |
4 |
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> |
5 |
CommitDate: Sun May 8 05:02:38 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=6d916753 |
7 |
|
8 |
linkmap: check for access before locking vardbapi |
9 |
|
10 |
--- |
11 |
pym/portage/util/_dyn_libs/LinkageMapELF.py | 7 +++++-- |
12 |
1 files changed, 5 insertions(+), 2 deletions(-) |
13 |
|
14 |
diff --git a/pym/portage/util/_dyn_libs/LinkageMapELF.py b/pym/portage/util/_dyn_libs/LinkageMapELF.py |
15 |
index 31aacbb..11e32b6 100644 |
16 |
--- a/pym/portage/util/_dyn_libs/LinkageMapELF.py |
17 |
+++ b/pym/portage/util/_dyn_libs/LinkageMapELF.py |
18 |
@@ -183,7 +183,9 @@ class LinkageMapELF(object): |
19 |
lines.append((include_file, line)) |
20 |
|
21 |
aux_keys = [self._needed_aux_key] |
22 |
- self._dbapi.lock() |
23 |
+ can_lock = os.access(os.path.dirname(self._dbapi._dbroot), os.W_OK) |
24 |
+ if can_lock: |
25 |
+ self._dbapi.lock() |
26 |
try: |
27 |
for cpv in self._dbapi.cpv_all(): |
28 |
if exclude_pkgs is not None and cpv in exclude_pkgs: |
29 |
@@ -193,7 +195,8 @@ class LinkageMapELF(object): |
30 |
for line in self._dbapi.aux_get(cpv, aux_keys)[0].splitlines(): |
31 |
lines.append((needed_file, line)) |
32 |
finally: |
33 |
- self._dbapi.unlock() |
34 |
+ if can_lock: |
35 |
+ self._dbapi.unlock() |
36 |
|
37 |
# have to call scanelf for preserved libs here as they aren't |
38 |
# registered in NEEDED.ELF.2 files |