Make config._init_dirs() preserver /tmp and /var/tmp permissions if
authorZac Medico <zmedico@gentoo.org>
Tue, 27 May 2008 07:48:19 +0000 (07:48 -0000)
committerZac Medico <zmedico@gentoo.org>
Tue, 27 May 2008 07:48:19 +0000 (07:48 -0000)
those directories already exist. This gives freedom to the user to
adjust permissions to suit their taste.

svn path=/main/trunk/; revision=10452

pym/portage/__init__.py

index 1ff6f25b8202dab5b6a7d9b5182424de50adecf0..df373630287f503de84a9e08ce25fd019ae9da90 100644 (file)
@@ -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,