diff options
author | Brian Harring <ferringb@chromium.org> | 2011-09-15 15:06:44 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-09-15 15:32:31 -0700 |
commit | 9623d8bfdeee4e2ab728529a86322a26f1b6258e (patch) | |
tree | 0c64d70c7b96ef41272c430a314556b9508254bb | |
parent | 64b83bcc9935cb3255ed96238db86fb27120abfa (diff) | |
download | portage-9623d8bfdeee4e2ab728529a86322a26f1b6258e.tar.gz portage-9623d8bfdeee4e2ab728529a86322a26f1b6258e.tar.bz2 portage-9623d8bfdeee4e2ab728529a86322a26f1b6258e.zip |
move locking into env_update itself
-rw-r--r-- | pym/portage/dbapi/vartree.py | 30 | ||||
-rw-r--r-- | pym/portage/util/env_update.py | 17 |
2 files changed, 25 insertions, 22 deletions
diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index 4d0a6dd4c..f146adecd 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -1842,16 +1842,10 @@ class dblink(object): else: self.settings.pop("PORTAGE_LOG_FILE", None) - # Lock the config memory file to prevent symlink creation - # in merge_contents from overlapping with env-update. - self.vartree.dbapi._fs_lock() - try: - env_update(target_root=self.settings['ROOT'], - prev_mtimes=ldpath_mtimes, - contents=contents, env=self.settings, - writemsg_level=self._display_merge) - finally: - self.vartree.dbapi._fs_unlock() + env_update(target_root=self.settings['ROOT'], + prev_mtimes=ldpath_mtimes, + contents=contents, env=self.settings, + writemsg_level=self._display_merge, vardbapi=self.vartree.dbapi) return os.EX_OK @@ -3811,17 +3805,11 @@ class dblink(object): showMessage(_("!!! FAILED postinst: ")+str(a)+"\n", level=logging.ERROR, noiselevel=-1) - # Lock the config memory file to prevent symlink creation - # in merge_contents from overlapping with env-update. - self.vartree.dbapi._fs_lock() - try: - #update environment settings, library paths. DO NOT change symlinks. - env_update( - target_root=self.settings['ROOT'], prev_mtimes=prev_mtimes, - contents=contents, env=self.settings, - writemsg_level=self._display_merge) - finally: - self.vartree.dbapi._fs_unlock() + #update environment settings, library paths. DO NOT change symlinks. + env_update( + target_root=self.settings['ROOT'], prev_mtimes=prev_mtimes, + contents=contents, env=self.settings, + writemsg_level=self._display_merge, vardbapi=self.vartree.dbapi) # For gcc upgrades, preserved libs have to be removed after the # the library path has been updated. 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: |