summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2010-10-07 08:57:23 -0700
committerZac Medico <zmedico@gentoo.org>2010-10-07 09:09:58 -0700
commit628ea99ae3cc83dac8cbe241fd17ca2cb82242cd (patch)
tree22e82a6ec31652122ec3b6fbd1d33b81833e7f40
parentad6fe50e557ad18aa9369fcb5bedb290539efe30 (diff)
downloadportage-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.py20
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,