summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-04-30 07:12:41 +0000
committerZac Medico <zmedico@gentoo.org>2009-04-30 07:12:41 +0000
commita57e6c5b87b00435a20fbcd74f09689482913d26 (patch)
tree7ee2e5cc0d11ec204d56dfa9016e5a6221bbe3b1
parentAdd support in action_uninstall() for file -> package lookup. (trunk r13345) (diff)
downloadportage-multirepo-a57e6c5b87b00435a20fbcd74f09689482913d26.tar.gz
portage-multirepo-a57e6c5b87b00435a20fbcd74f09689482913d26.tar.bz2
portage-multirepo-a57e6c5b87b00435a20fbcd74f09689482913d26.zip
Bug #266211 - Handle ESTALE like ENOENT in fetch and locking code. Thanks to
Krzysztof Olędzki <ole+gentoo@ans.pl> for the initial patch. (trunk r13347) svn path=/main/branches/2.1.6/; revision=13503
-rw-r--r--pym/portage/__init__.py17
-rw-r--r--pym/portage/locks.py4
2 files changed, 11 insertions, 10 deletions
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py
index 3dada679..fba07547 100644
--- a/pym/portage/__init__.py
+++ b/pym/portage/__init__.py
@@ -3914,7 +3914,7 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, locks_in_subdir=".locks",
try:
mysize = os.stat(myfile_path).st_size
except OSError, e:
- if e.errno != errno.ENOENT:
+ if e.errno not in (errno.ENOENT, errno.ESTALE):
raise
del e
mysize = 0
@@ -4026,7 +4026,7 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, locks_in_subdir=".locks",
try:
os.unlink(myfile_path)
except OSError, e:
- if e.errno != errno.ENOENT:
+ if e.errno not in (errno.ENOENT, errno.ESTALE):
raise
del e
os.symlink(readonly_file, myfile_path)
@@ -4041,14 +4041,14 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, locks_in_subdir=".locks",
" %(file)s\n" % {"file":myfile}))
break
except (IOError, OSError), e:
- if e.errno != errno.ENOENT:
+ if e.errno not in (errno.ENOENT, errno.ESTALE):
raise
del e
try:
mystat = os.stat(myfile_path)
except OSError, e:
- if e.errno != errno.ENOENT:
+ if e.errno not in (errno.ENOENT, errno.ESTALE):
raise
del e
else:
@@ -4192,7 +4192,7 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, locks_in_subdir=".locks",
try:
mysize = os.stat(myfile_path).st_size
except OSError, e:
- if e.errno != errno.ENOENT:
+ if e.errno not in (errno.ENOENT, errno.ESTALE):
raise
del e
mysize = 0
@@ -4216,7 +4216,7 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, locks_in_subdir=".locks",
try:
mystat = os.stat(myfile_path)
except OSError, e:
- if e.errno != errno.ENOENT:
+ if e.errno not in (errno.ENOENT, errno.ESTALE):
raise
del e
fetched = 0
@@ -4228,7 +4228,8 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, locks_in_subdir=".locks",
try:
os.unlink(myfile_path)
except OSError, e:
- if e.errno != errno.ENOENT:
+ if e.errno not in \
+ (errno.ENOENT, errno.ESTALE):
raise
del e
fetched = 0
@@ -4282,7 +4283,7 @@ def fetch(myuris, mysettings, listonly=0, fetchonly=0, locks_in_subdir=".locks",
try:
mystat = os.stat(myfile_path)
except OSError, e:
- if e.errno != errno.ENOENT:
+ if e.errno not in (errno.ENOENT, errno.ESTALE):
raise
del e
fetched = 0
diff --git a/pym/portage/locks.py b/pym/portage/locks.py
index 36bc085b..05a65644 100644
--- a/pym/portage/locks.py
+++ b/pym/portage/locks.py
@@ -74,7 +74,7 @@ def lockfile(mypath, wantnewlockfile=0, unlinkfile=0,
if os.stat(lockfilename).st_gid != portage_gid:
os.chown(lockfilename, -1, portage_gid)
except OSError, e:
- if e.errno == errno.ENOENT: # No such file or directory
+ if e.errno in (errno.ENOENT, errno.ESTALE):
return lockfile(mypath,
wantnewlockfile=wantnewlockfile,
unlinkfile=unlinkfile, waiting_msg=waiting_msg,
@@ -164,7 +164,7 @@ def _fstat_nlink(fd):
try:
return os.fstat(fd).st_nlink
except EnvironmentError, e:
- if e.errno == errno.ENOENT:
+ if e.errno in (errno.ENOENT, errno.ESTALE):
# Some filesystems such as CIFS return
# ENOENT which means st_nlink == 0.
return 0