From 628ea99ae3cc83dac8cbe241fd17ca2cb82242cd Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Thu, 7 Oct 2010 08:57:23 -0700 Subject: [PATCH] Use PORTAGE_TMPDIR if necessary for usersync. Bug #340046 - Don't require PORTAGE_TMPDIR access for --sync unless it's really necessary. --- pym/_emerge/actions.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py index 1866cf9c0..c768edd13 100644 --- a/pym/_emerge/actions.py +++ b/pym/_emerge/actions.py @@ -1884,12 +1884,6 @@ def action_sync(settings, trees, mtimedb, myopts, myaction): os.makedirs(myportdir,0o755) st = os.stat(myportdir) - # PORTAGE_TMPDIR is used below, so validate it and - # bail out if necessary. - rval = _check_temp_dir(settings) - if rval != os.EX_OK: - return rval - usersync_uid = None spawn_kwargs = {} spawn_kwargs["env"] = settings.environ() @@ -1914,6 +1908,13 @@ def action_sync(settings, trees, mtimedb, myopts, myaction): umask = umask | 0o020 spawn_kwargs["umask"] = umask + if usersync_uid is not None: + # PORTAGE_TMPDIR is used below, so validate it and + # bail out if necessary. + rval = _check_temp_dir(settings) + if rval != os.EX_OK: + return rval + syncuri = settings.get("SYNC", "").strip() if not syncuri: writemsg_level("!!! SYNC is undefined. " + \ @@ -2173,8 +2174,13 @@ def action_sync(settings, trees, mtimedb, myopts, myaction): # user. We assume that PORTAGE_TMPDIR will satisfy this # requirement, since that's not necessarily true for the # default directory used by the tempfile module. + if usersync_uid is not None: + tmpdir = settings['PORTAGE_TMPDIR'] + else: + # use default dir from tempfile module + tmpdir = None fd, tmpservertimestampfile = \ - tempfile.mkstemp(dir=settings['PORTAGE_TMPDIR']) + tempfile.mkstemp(dir=tmpdir) os.close(fd) if usersync_uid is not None: portage.util.apply_permissions(tmpservertimestampfile, -- 2.26.2