In dblink.mergeme(), handle EISDIR which can be raised from mkdir calls
authorZac Medico <zmedico@gentoo.org>
Wed, 1 Sep 2010 06:00:53 +0000 (23:00 -0700)
committerZac Medico <zmedico@gentoo.org>
Wed, 1 Sep 2010 06:00:53 +0000 (23:00 -0700)
on FreeBSD (see bug #187518).

pym/portage/dbapi/vartree.py
pym/portage/util/__init__.py

index 4a95567b92ad54010cc1cfce79899c06d1ae9d50..45ed955ede95f44a6e88297ee97f8038403b21a6 100644 (file)
@@ -3619,7 +3619,8 @@ class dblink(object):
                                                        else:
                                                                os.mkdir(mydest)
                                                except OSError as e:
-                                                       if e.errno != errno.EEXIST:
+                                                       if e.errno not in (errno.EEXIST, errno.EISDIR):
+                                                               # Bug 187518 - sometimes mkdir raises EISDIR on FreeBSD
                                                                raise
                                                        del e
 
@@ -3636,7 +3637,8 @@ class dblink(object):
                                                else:
                                                        os.mkdir(mydest)
                                        except OSError as e:
-                                               if e.errno != errno.EEXIST:
+                                               if e.errno not in (errno.EEXIST, errno.EISDIR):
+                                                       # Bug 187518 - sometimes mkdir raises EISDIR on FreeBSD
                                                        raise
                                                del e
                                        os.chmod(mydest, mystat[0])
index 98ad7c205394787a73c96b00dea39b082c1022c7..2c22949a4000a27b3cdf5ddff25230e88d9210bc 100644 (file)
@@ -1055,6 +1055,7 @@ def ensure_dirs(dir_path, *args, **kwargs):
        except OSError as oe:
                func_call = "makedirs('%s')" % dir_path
                if oe.errno in (errno.EEXIST, errno.EISDIR):
+                       # Bug 187518 - sometimes mkdir raises EISDIR on FreeBSD
                        pass
                else:
                        if os.path.isdir(dir_path):