summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pym/portage/__init__.py19
1 files changed, 13 insertions, 6 deletions
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py
index 1ff6f25b8..df3736302 100644
--- a/pym/portage/__init__.py
+++ b/pym/portage/__init__.py
@@ -1663,16 +1663,23 @@ class config(object):
if not os.access(self["ROOT"], os.W_OK):
return
+ # gid, mode, mask, preserve_perms
dir_mode_map = {
- "tmp" : (-1, 01777, 0),
- "var/tmp" : (-1, 01777, 0),
- PRIVATE_PATH : (portage_gid, 02750, 02),
- CACHE_PATH.lstrip(os.path.sep) : (portage_gid, 0755, 02)
+ "tmp" : ( -1, 01777, 0, True),
+ "var/tmp" : ( -1, 01777, 0, True),
+ PRIVATE_PATH : ( portage_gid, 02750, 02, False),
+ CACHE_PATH.lstrip(os.path.sep) : (portage_gid, 0755, 02, False)
}
- for mypath, (gid, mode, modemask) in dir_mode_map.iteritems():
+ for mypath, (gid, mode, modemask, preserve_perms) \
+ in dir_mode_map.iteritems():
+ mydir = os.path.join(self["ROOT"], mypath)
+ if preserve_perms and os.path.isdir(mypath):
+ # Only adjust permissions on some directories if
+ # they don't exist yet. This gives freedom to the
+ # user to adjust permissions to suit their taste.
+ continue
try:
- mydir = os.path.join(self["ROOT"], mypath)
portage.util.ensure_dirs(mydir, gid=gid, mode=mode, mask=modemask)
except portage.exception.PortageException, e:
writemsg("!!! Directory initialization failed: '%s'\n" % mydir,