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

svn path=/main/branches/2.1.2/; revision=9679

pym/portage_util.py

index bad313bdc822cc9d26f00f0355bb8c3da1b93668..eb54076d432536d98f3bf656711999f2ed3bd4b8 100644 (file)
@@ -1058,7 +1058,12 @@ 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(old_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