From c868422d525109dc2588c72c9b9b6d4c2020d412 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Tue, 27 May 2008 07:48:19 +0000 Subject: Make config._init_dirs() preserver /tmp and /var/tmp permissions if 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 | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'pym') 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, -- cgit v1.2.3-1-g7c22