diff options
author | Zac Medico <zmedico@gentoo.org> | 2010-10-07 08:57:23 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2010-10-07 09:09:58 -0700 |
commit | 628ea99ae3cc83dac8cbe241fd17ca2cb82242cd (patch) | |
tree | 22e82a6ec31652122ec3b6fbd1d33b81833e7f40 | |
parent | ad6fe50e557ad18aa9369fcb5bedb290539efe30 (diff) | |
download | portage-628ea99ae3cc83dac8cbe241fd17ca2cb82242cd.tar.gz portage-628ea99ae3cc83dac8cbe241fd17ca2cb82242cd.tar.bz2 portage-628ea99ae3cc83dac8cbe241fd17ca2cb82242cd.zip |
Use PORTAGE_TMPDIR if necessary for usersync.
Bug #340046 - Don't require PORTAGE_TMPDIR access for --sync unless
it's really necessary.
-rw-r--r-- | pym/_emerge/actions.py | 20 |
1 files 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, |