Author: zmedico
Date: 2008-04-13 22:07:18 +0000 (Sun, 13 Apr 2008)
New Revision: 9875
Modified:
main/branches/2.1.2/pym/portage.py
Log:
Make movefile() tolerant to EPERM errors that can be raised from utime()
calls. Instead of failing, use stat() to return the mtime if possible.
(trunk r9863:9865)
Modified: main/branches/2.1.2/pym/portage.py
===================================================================
--- main/branches/2.1.2/pym/portage.py 2008-04-13 21:49:52 UTC (rev 9874)
+++ main/branches/2.1.2/pym/portage.py 2008-04-13 22:07:18 UTC (rev 9875)
@@ -5208,11 +5208,22 @@
print "!!!",e
return None
- if newmtime:
- os.utime(dest,(newmtime,newmtime))
- else:
- os.utime(dest, (sstat[stat.ST_ATIME], sstat[stat.ST_MTIME]))
- newmtime=sstat[stat.ST_MTIME]
+ try:
+ if newmtime is not None:
+ os.utime(dest, (newmtime, newmtime))
+ else:
+ os.utime(dest, (sstat.st_atime, sstat.st_mtime))
+ newmtime = long(sstat.st_mtime)
+ except OSError:
+ # The utime can fail here with EPERM even though the move succeeded.
+ # Instead of failing, use stat to return the mtime if possible.
+ try:
+ newmtime = long(os.stat(dest).st_mtime)
+ except OSError, e:
+ writemsg("!!! Failed to stat in movefile()\n", noiselevel=-1)
+ writemsg("!!! %s\n" % dest, noiselevel=-1)
+ writemsg("!!! %s\n" % str(e), noiselevel=-1)
+ return None
if bsd_chflags:
# Restore the flags we saved before moving
--
gentoo-commits@g.o mailing list
|