catch possible ENOENT error from portage_checksum.perform_md5 for bug 24374
authorZac Medico <zmedico@gentoo.org>
Sun, 12 Feb 2006 03:09:38 +0000 (03:09 -0000)
committerZac Medico <zmedico@gentoo.org>
Sun, 12 Feb 2006 03:09:38 +0000 (03:09 -0000)
svn path=/main/trunk/; revision=2695

pym/portage.py

index 143371a487ed109f9b7b65163fddddbcef37832c..0a9186b5a4ccbed450c815fc109a83c0201ccc86 100644 (file)
@@ -5777,8 +5777,16 @@ class dblink:
                                        if statobj is None or not stat.S_ISREG(statobj.st_mode):
                                                writemsg_stdout("--- !obj   %s %s\n" % ("obj", obj))
                                                continue
-                                       mymd5=portage_checksum.perform_md5(obj, calc_prelink=1)
-
+                                       mymd5 = None
+                                       try:
+                                               mymd5 = portage_checksum.perform_md5(obj, calc_prelink=1)
+                                       except (OSError,IOError), e:
+                                               if e.errno == errno.ENOENT:
+                                                       # the file has disappeared between now and our stat call
+                                                       writemsg_stdout("--- !obj   %s %s\n" % ("obj", obj))
+                                                       continue
+                                               else:
+                                                       raise e
                                        # string.lower is needed because db entries used to be in upper-case.  The
                                        # string.lower allows for backwards compatibility.
                                        if mymd5 != string.lower(pkgfiles[objkey][2]):