summaryrefslogtreecommitdiffstats
path: root/pym/eclass_cache.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-09-26 03:57:09 +0000
committerZac Medico <zmedico@gentoo.org>2007-09-26 03:57:09 +0000
commitc74469a267a904114dcef3e5bb91d216aa919e82 (patch)
treec8e854ca1845fa0820a8021b1a7e9034ac6f53ac /pym/eclass_cache.py
parent4d626832602466516068d0e0ea867890816b074c (diff)
downloadportage-c74469a267a904114dcef3e5bb91d216aa919e82.tar.gz
portage-c74469a267a904114dcef3e5bb91d216aa919e82.tar.bz2
portage-c74469a267a904114dcef3e5bb91d216aa919e82.zip
Bug #192298 - Handle PermissionDenied error in
cache.update_eclasses(). (trunk r7769) svn path=/main/branches/2.1.2/; revision=7809
Diffstat (limited to 'pym/eclass_cache.py')
-rw-r--r--pym/eclass_cache.py17
1 files changed, 15 insertions, 2 deletions
diff --git a/pym/eclass_cache.py b/pym/eclass_cache.py
index 91b98fec5..d2ff47f97 100644
--- a/pym/eclass_cache.py
+++ b/pym/eclass_cache.py
@@ -4,8 +4,9 @@
# $Id$
from portage_util import normalize_path, writemsg
-import os, sys
+import errno, os, sys
from portage_data import portage_gid
+from portage_exception import PermissionDenied
class cache:
"""
@@ -44,7 +45,19 @@ class cache:
for x in [normalize_path(os.path.join(y,"eclass")) for y in self.porttrees]:
if not os.path.isdir(x):
continue
- for y in [y for y in os.listdir(x) if y.endswith(".eclass")]:
+ eclass_filenames = []
+ try:
+ for y in os.listdir(x):
+ if y.endswith(".eclass"):
+ eclass_filenames.append(y)
+ except OSError, e:
+ if e.errno == errno.ENOENT:
+ del e
+ continue
+ elif e.errno == PermissionDenied.errno:
+ raise PermissionDenied(x)
+ raise
+ for y in eclass_filenames:
try:
mtime = long(os.stat(os.path.join(x, y)).st_mtime)
except OSError: