summaryrefslogtreecommitdiffstats
path: root/pym/portage/util/env_update.py
diff options
context:
space:
mode:
authorBrian Harring <ferringb@chromium.org>2011-09-15 15:06:44 -0700
committerZac Medico <zmedico@gentoo.org>2011-09-15 15:32:31 -0700
commit9623d8bfdeee4e2ab728529a86322a26f1b6258e (patch)
tree0c64d70c7b96ef41272c430a314556b9508254bb /pym/portage/util/env_update.py
parent64b83bcc9935cb3255ed96238db86fb27120abfa (diff)
downloadportage-9623d8bfdeee4e2ab728529a86322a26f1b6258e.tar.gz
portage-9623d8bfdeee4e2ab728529a86322a26f1b6258e.tar.bz2
portage-9623d8bfdeee4e2ab728529a86322a26f1b6258e.zip
move locking into env_update itself
Diffstat (limited to 'pym/portage/util/env_update.py')
-rw-r--r--pym/portage/util/env_update.py17
1 files changed, 16 insertions, 1 deletions
diff --git a/pym/portage/util/env_update.py b/pym/portage/util/env_update.py
index 19c7666b9..71dcf376a 100644
--- a/pym/portage/util/env_update.py
+++ b/pym/portage/util/env_update.py
@@ -19,12 +19,13 @@ from portage.process import find_binary
from portage.util import atomic_ofstream, ensure_dirs, getconfig, \
normalize_path, writemsg
from portage.util.listdir import listdir
+from portage.dbapi.vartree import vartree
if sys.hexversion >= 0x3000000:
long = int
def env_update(makelinks=1, target_root=None, prev_mtimes=None, contents=None,
- env=None, writemsg_level=None):
+ env=None, writemsg_level=None, vardbapi=None):
"""
Parse /etc/env.d and use it to generate /etc/profile.env, csh.env,
ld.so.conf, and prelink.conf. Finally, run ldconfig. When ldconfig is
@@ -39,6 +40,20 @@ def env_update(makelinks=1, target_root=None, prev_mtimes=None, contents=None,
defaults to portage.settings["ROOT"].
@type target_root: String (Path)
"""
+ if vardbapi is None:
+ vardbapi = vartree(settings=portage.settings).dbapi
+
+ # Lock the config memory file to prevent symlink creation
+ # in merge_contents from overlapping with env-update.
+ vardbapi._fs_lock()
+ try:
+ return _env_update(makelinks, target_root, prev_mtimes, contents,
+ env, writemsg_level)
+ finally:
+ vardbapi._fs_unlock()
+
+def _env_update(makelinks, target_root, prev_mtimes, contents, env,
+ writemsg_level):
if writemsg_level is None:
writemsg_level = portage.util.writemsg_level
if target_root is None: