From: Zac Medico Date: Wed, 7 Apr 2010 03:54:11 +0000 (-0700) Subject: Make ensure_dirs() behave correctly for DragonFly when EPERM is raised for X-Git-Tag: v2.2_rc68~666 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=ee0b00baf07f18c23a180da5efd78fe01335364b;p=portage.git Make ensure_dirs() behave correctly for DragonFly when EPERM is raised for makedir('/'). Thanks to Naohiro Aota for the initial patch. --- diff --git a/pym/portage/util/__init__.py b/pym/portage/util/__init__.py index 541204334..ac191fb2a 100644 --- a/pym/portage/util/__init__.py +++ b/pym/portage/util/__init__.py @@ -1046,14 +1046,19 @@ def ensure_dirs(dir_path, *args, **kwargs): func_call = "makedirs('%s')" % dir_path if oe.errno in (errno.EEXIST, errno.EISDIR): pass - elif oe.errno == errno.EPERM: - raise OperationNotPermitted(func_call) - elif oe.errno == errno.EACCES: - raise PermissionDenied(func_call) - elif oe.errno == errno.EROFS: - raise ReadOnlyFileSystem(func_call) else: - raise + if os.path.isdir(dir_path): + # NOTE: DragonFly raises EPERM for makedir('/') + # and that is supposed to be ignored here. + pass + elif oe.errno == errno.EPERM: + raise OperationNotPermitted(func_call) + elif oe.errno == errno.EACCES: + raise PermissionDenied(func_call) + elif oe.errno == errno.EROFS: + raise ReadOnlyFileSystem(func_call) + else: + raise perms_modified = apply_permissions(dir_path, *args, **kwargs) return created_dir or perms_modified