Handle a potential FileNotFound exception in new_protect_filename() when
authorZac Medico <zmedico@gentoo.org>
Wed, 2 Apr 2008 18:03:08 +0000 (18:03 -0000)
committerZac Medico <zmedico@gentoo.org>
Wed, 2 Apr 2008 18:03:08 +0000 (18:03 -0000)
the last ._cfg* file happens to be a broken symlink. Thanks to bonsaikitten
for reporting.

svn path=/main/trunk/; revision=9677

pym/portage/util.py

index 155a787f5331c33d61b4737e72ee6633498ed2f4..fae0d63fc210a7883f1e5219944bfd8000430def 100644 (file)
@@ -1072,9 +1072,15 @@ def new_protect_filename(mydest, newmd5=None):
        old_pfile = normalize_path(os.path.join(real_dirname, last_pfile))
        if last_pfile and newmd5:
                import portage.checksum
-               if portage.checksum.perform_md5(
-                       os.path.join(real_dirname, last_pfile)) == newmd5:
-                       return old_pfile
+               try:
+                       last_pfile_md5 = portage.checksum.perform_md5(
+                               os.path.join(real_dirname, last_pfile))
+               except FileNotFound:
+                       # The file suddenly disappeared or it's a broken symlink.
+                       pass
+               else:
+                       if last_pfile_md5 == newmd5:
+                               return old_pfile
        return new_pfile
 
 def getlibpaths():