Use EROOT instead of ROOT for keys everywhere.
[portage.git] / pym / portage / _legacy_globals.py
1 # Copyright 2010 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3
4 import portage
5 from portage import os
6 from portage.const import CACHE_PATH, PROFILE_PATH
7
8 def _get_legacy_global(name):
9         constructed = portage._legacy_globals_constructed
10         if name in constructed:
11                 return getattr(portage, name)
12
13         if name == 'portdb':
14                 portage.portdb = portage.db[portage.root]["porttree"].dbapi
15                 constructed.add(name)
16                 return getattr(portage, name)
17
18         elif name in ('mtimedb', 'mtimedbfile'):
19                 portage.mtimedbfile = os.path.join(portage.settings['EROOT'],
20                         CACHE_PATH, "mtimedb")
21                 constructed.add('mtimedbfile')
22                 portage.mtimedb = portage.MtimeDB(portage.mtimedbfile)
23                 constructed.add('mtimedb')
24                 return getattr(portage, name)
25
26         # Portage needs to ensure a sane umask for the files it creates.
27         os.umask(0o22)
28
29         kwargs = {}
30         for k, envvar in (("config_root", "PORTAGE_CONFIGROOT"), ("target_root", "ROOT")):
31                 kwargs[k] = os.environ.get(envvar)
32
33         portage._initializing_globals = True
34         portage.db = portage.create_trees(**kwargs)
35         constructed.add('db')
36         del portage._initializing_globals
37
38         settings = portage.db[portage.db._target_eroot]["vartree"].settings
39         portage.output._init(config_root=settings['PORTAGE_CONFIGROOT'])
40
41         portage.settings = settings
42         constructed.add('settings')
43
44         # Since portage.db now uses EROOT for keys instead of ROOT, we make
45         # portage.root refer to EROOT such that it continues works as a key.
46         portage.root = portage.db._target_eroot
47         constructed.add('root')
48
49         # COMPATIBILITY
50         # These attributes should not be used within
51         # Portage under any circumstances.
52
53         portage.archlist = settings.archlist()
54         constructed.add('archlist')
55
56         portage.features = settings.features
57         constructed.add('features')
58
59         portage.groups = settings["ACCEPT_KEYWORDS"].split()
60         constructed.add('groups')
61
62         portage.pkglines = settings.packages
63         constructed.add('pkglines')
64
65         portage.selinux_enabled = settings.selinux_enabled()
66         constructed.add('selinux_enabled')
67
68         portage.thirdpartymirrors = settings.thirdpartymirrors()
69         constructed.add('thirdpartymirrors')
70
71         profiledir = os.path.join(settings["PORTAGE_CONFIGROOT"], PROFILE_PATH)
72         if not os.path.isdir(profiledir):
73                 profiledir = None
74         portage.profiledir = profiledir
75         constructed.add('profiledir')
76
77         return getattr(portage, name)