summaryrefslogtreecommitdiffstats
path: root/pym/portage_util.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2006-03-30 09:41:19 +0000
committerZac Medico <zmedico@gentoo.org>2006-03-30 09:41:19 +0000
commit71cfafbd5fb34d125cdfba7b68a5401e30218c9b (patch)
treeac69334f5e97ba76fe5f1b2004087a56dc18fc00 /pym/portage_util.py
parentfddfcec8f370e37cd1518ad0b975a886dc5a28a2 (diff)
downloadportage-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.py20
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