From 59b1c6e1d2f6010ffac296aae26955437a5b3b76 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Thu, 7 Oct 2010 08:57:23 -0700 Subject: 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(-) (limited to 'pym') diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py index f49f455b8..d064facd1 100644 --- a/pym/_emerge/actions.py +++ b/pym/_emerge/actions.py @@ -1894,12 +1894,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() @@ -1924,6 +1918,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. " + \ @@ -2183,8 +2184,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, -- cgit v1.2.3-1-g7c22