From 5b8fdc7d3e4c64ce79d0218fd101f8292602d10b Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sun, 16 Oct 2011 14:13:45 -0700 Subject: hashed_path: convert stat OSError to FileNotFound This makes it consistent with perform_checksum call which also raises FileNotFound instead of OSError. --- pym/portage/dbapi/porttree.py | 2 +- pym/portage/eclass_cache.py | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/pym/portage/dbapi/porttree.py b/pym/portage/dbapi/porttree.py index 0ade59a19..a0b7d7e1f 100644 --- a/pym/portage/dbapi/porttree.py +++ b/pym/portage/dbapi/porttree.py @@ -424,7 +424,7 @@ class portdbapi(dbapi): # snag mtime since we use it later, and to trigger stat failure # if it doesn't exist ebuild_hash.mtime - except OSError: + except FileNotFound: writemsg(_("!!! aux_get(): ebuild for " \ "'%s' does not exist at:\n") % (cpv,), noiselevel=-1) writemsg("!!! %s\n" % ebuild_path, noiselevel=-1) diff --git a/pym/portage/eclass_cache.py b/pym/portage/eclass_cache.py index adfe69ae9..4a934f16f 100644 --- a/pym/portage/eclass_cache.py +++ b/pym/portage/eclass_cache.py @@ -9,7 +9,7 @@ import sys import operator from portage.util import normalize_path import errno -from portage.exception import PermissionDenied +from portage.exception import FileNotFound, PermissionDenied from portage import os from portage import checksum @@ -30,7 +30,12 @@ class hashed_path(object): # the straight c api. # thus use the defacto python compatibility work around; # access via index, which guarantees you get the raw long. - self.mtime = obj = os.stat(self.location)[stat.ST_MTIME] + try: + self.mtime = obj = os.stat(self.location)[stat.ST_MTIME] + except OSError as e: + if e.errno in (errno.ENOENT, errno.ESTALE): + raise FileNotFound(self.location) + raise return obj if not attr.islower(): # we don't care to allow .mD5 as an alias for .md5 @@ -113,7 +118,7 @@ class cache(object): obj.eclass_dir = x try: mtime = obj.mtime - except OSError: + except FileNotFound: continue ys=y[:-eclass_len] if x == self._master_eclass_root: -- cgit v1.2.3-1-g7c22