diff options
author | Zac Medico <zmedico@gentoo.org> | 2010-02-28 06:01:47 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2010-02-28 06:01:47 +0000 |
commit | 884091fcb01ef1734d9ef1eecd1c02980e3d1d81 (patch) | |
tree | 27e527f3ddb75fcd26d82ba6e8bee3d042ce714e /pym/portage/_legacy_globals.py | |
parent | 3c44d8752ddb2aa4ae194de185a94aac131acba4 (diff) | |
download | portage-884091fcb01ef1734d9ef1eecd1c02980e3d1d81.tar.gz portage-884091fcb01ef1734d9ef1eecd1c02980e3d1d81.tar.bz2 portage-884091fcb01ef1734d9ef1eecd1c02980e3d1d81.zip |
Move legacy globals code into a _legacy_globals module that's imported on
demand.
svn path=/main/trunk/; revision=15492
Diffstat (limited to 'pym/portage/_legacy_globals.py')
-rw-r--r-- | pym/portage/_legacy_globals.py | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/pym/portage/_legacy_globals.py b/pym/portage/_legacy_globals.py new file mode 100644 index 000000000..432d8d84f --- /dev/null +++ b/pym/portage/_legacy_globals.py @@ -0,0 +1,87 @@ +# Copyright 2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +import portage +from portage import os +from portage.const import CACHE_PATH, PROFILE_PATH + +_legacy_globals = {} + +def _get_legacy_global(name): + global _legacy_globals + target = _legacy_globals.get(name, _legacy_globals) + if target is not _legacy_globals: + return target + + if name == 'portdb': + portage.portdb = portage.db[portage.root]["porttree"].dbapi + _legacy_globals[name] = portage.portdb + return _legacy_globals[name] + elif name in ('mtimedb', 'mtimedbfile'): + portage.mtimedbfile = os.path.join(portage.root, + CACHE_PATH, "mtimedb") + _legacy_globals['mtimedbfile'] = portage.mtimedbfile + portage.mtimedb = portage.MtimeDB(portage.mtimedbfile) + _legacy_globals['mtimedb'] = portage.mtimedb + return _legacy_globals[name] + + # Portage needs to ensure a sane umask for the files it creates. + os.umask(0o22) + + kwargs = {} + for k, envvar in (("config_root", "PORTAGE_CONFIGROOT"), ("target_root", "ROOT")): + kwargs[k] = os.environ.get(envvar, "/") + + portage._initializing_globals = True + portage.db = portage.create_trees(**kwargs) + _legacy_globals['db'] = portage.db + del portage._initializing_globals + + settings = portage.db["/"]["vartree"].settings + + for root in portage.db: + if root != "/": + settings = portage.db[root]["vartree"].settings + break + + portage.output._init(config_root=settings['PORTAGE_CONFIGROOT']) + + portage.settings = settings + _legacy_globals['settings'] = settings + + portage.root = root + _legacy_globals['root'] = root + + # COMPATIBILITY + # These attributes should not be used within + # Portage under any circumstances. + + portage.archlist = settings.archlist() + _legacy_globals['archlist'] = portage.archlist + + portage.features = settings.features + _legacy_globals['features'] = portage.features + + portage.groups = settings["ACCEPT_KEYWORDS"].split() + _legacy_globals['groups'] = portage.groups + + portage.pkglines = settings.packages + _legacy_globals['pkglines'] = portage.pkglines + + portage.selinux_enabled = settings.selinux_enabled() + _legacy_globals['selinux_enabled'] = portage.selinux_enabled + + portage.thirdpartymirrors = settings.thirdpartymirrors() + _legacy_globals['thirdpartymirrors'] = portage.thirdpartymirrors + + portage.usedefaults = settings.use_defs + _legacy_globals['usedefaults'] = portage.usedefaults + + profiledir = os.path.join(settings["PORTAGE_CONFIGROOT"], PROFILE_PATH) + if not os.path.isdir(profiledir): + profiledir = None + portage.profiledir = profiledir + _legacy_globals['profiledir'] = portage.profiledir + + return _legacy_globals[name] |