diff options
author | Zac Medico <zmedico@gentoo.org> | 2006-03-30 09:41:19 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2006-03-30 09:41:19 +0000 |
commit | 71cfafbd5fb34d125cdfba7b68a5401e30218c9b (patch) | |
tree | ac69334f5e97ba76fe5f1b2004087a56dc18fc00 /pym/portage_util.py | |
parent | fddfcec8f370e37cd1518ad0b975a886dc5a28a2 (diff) | |
download | portage-71cfafbd5fb34d125cdfba7b68a5401e30218c9b.tar.gz portage-71cfafbd5fb34d125cdfba7b68a5401e30218c9b.tar.bz2 portage-71cfafbd5fb34d125cdfba7b68a5401e30218c9b.zip |
Add a reusable ensure_dirs() function and use it for DISTDIR initialization.
svn path=/main/trunk/; revision=3040
Diffstat (limited to 'pym/portage_util.py')
-rw-r--r-- | pym/portage_util.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/pym/portage_util.py b/pym/portage_util.py index bd8aefeff..ae7525186 100644 --- a/pym/portage_util.py +++ b/pym/portage_util.py @@ -686,3 +686,23 @@ def write_atomic(file_path, content): except IOError, ioe: f.abort() raise ioe + +def ensure_dirs(dir_path, *args, **kwargs): + """Create a directory and call apply_permissions. + Returns True if a directory is created or the permissions needed to be + modified, and False otherwise.""" + + created_dir = False + + try: + os.makedirs(dir_path) + created_dir = True + except OSError, oe: + if errno.EEXIST == oe.errno: + pass + elif oe.errno in (errno.EPERM, errno.EROFS): + raise portage_exception.OperationNotPermitted(str(oe)) + else: + raise + perms_modified = apply_permissions(dir_path, *args, **kwargs) + return created_dir or perms_modified |