1 |
Author: zmedico |
2 |
Date: 2010-03-01 08:14:33 +0000 (Mon, 01 Mar 2010) |
3 |
New Revision: 15511 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/portage/__init__.py |
7 |
main/trunk/pym/portage/_legacy_globals.py |
8 |
Log: |
9 |
Fix legacy globals proxies to reset state when the portage module is reloaded. |
10 |
This fixes ebuild(1) failing to generate manifests when the ebuild is not |
11 |
in PORTDIR_OVERLAY, as reported by Arfrever. |
12 |
|
13 |
|
14 |
Modified: main/trunk/pym/portage/__init__.py |
15 |
=================================================================== |
16 |
--- main/trunk/pym/portage/__init__.py 2010-03-01 07:03:49 UTC (rev 15510) |
17 |
+++ main/trunk/pym/portage/__init__.py 2010-03-01 08:14:33 UTC (rev 15511) |
18 |
@@ -576,6 +576,8 @@ |
19 |
globals()[k] = _LegacyGlobalProxy(k) |
20 |
del k |
21 |
|
22 |
+_legacy_globals_constructed = set() |
23 |
+ |
24 |
def _disable_legacy_globals(): |
25 |
""" |
26 |
This deletes the ObjectProxy instances that are used |
27 |
|
28 |
Modified: main/trunk/pym/portage/_legacy_globals.py |
29 |
=================================================================== |
30 |
--- main/trunk/pym/portage/_legacy_globals.py 2010-03-01 07:03:49 UTC (rev 15510) |
31 |
+++ main/trunk/pym/portage/_legacy_globals.py 2010-03-01 08:14:33 UTC (rev 15511) |
32 |
@@ -6,25 +6,23 @@ |
33 |
from portage import os |
34 |
from portage.const import CACHE_PATH, PROFILE_PATH |
35 |
|
36 |
-_legacy_globals = {} |
37 |
- |
38 |
def _get_legacy_global(name): |
39 |
- global _legacy_globals |
40 |
- target = _legacy_globals.get(name, _legacy_globals) |
41 |
- if target is not _legacy_globals: |
42 |
- return target |
43 |
+ constructed = portage._legacy_globals_constructed |
44 |
+ if name in constructed: |
45 |
+ return getattr(portage, name) |
46 |
|
47 |
if name == 'portdb': |
48 |
portage.portdb = portage.db[portage.root]["porttree"].dbapi |
49 |
- _legacy_globals[name] = portage.portdb |
50 |
- return _legacy_globals[name] |
51 |
+ constructed.add(name) |
52 |
+ return getattr(portage, name) |
53 |
+ |
54 |
elif name in ('mtimedb', 'mtimedbfile'): |
55 |
portage.mtimedbfile = os.path.join(portage.root, |
56 |
CACHE_PATH, "mtimedb") |
57 |
- _legacy_globals['mtimedbfile'] = portage.mtimedbfile |
58 |
+ constructed.add('mtimedbfile') |
59 |
portage.mtimedb = portage.MtimeDB(portage.mtimedbfile) |
60 |
- _legacy_globals['mtimedb'] = portage.mtimedb |
61 |
- return _legacy_globals[name] |
62 |
+ constructed.add('mtimedb') |
63 |
+ return getattr(portage, name) |
64 |
|
65 |
# Portage needs to ensure a sane umask for the files it creates. |
66 |
os.umask(0o22) |
67 |
@@ -35,7 +33,7 @@ |
68 |
|
69 |
portage._initializing_globals = True |
70 |
portage.db = portage.create_trees(**kwargs) |
71 |
- _legacy_globals['db'] = portage.db |
72 |
+ constructed.add('db') |
73 |
del portage._initializing_globals |
74 |
|
75 |
settings = portage.db["/"]["vartree"].settings |
76 |
@@ -48,40 +46,40 @@ |
77 |
portage.output._init(config_root=settings['PORTAGE_CONFIGROOT']) |
78 |
|
79 |
portage.settings = settings |
80 |
- _legacy_globals['settings'] = settings |
81 |
+ constructed.add('settings') |
82 |
|
83 |
portage.root = root |
84 |
- _legacy_globals['root'] = root |
85 |
+ constructed.add('root') |
86 |
|
87 |
# COMPATIBILITY |
88 |
# These attributes should not be used within |
89 |
# Portage under any circumstances. |
90 |
|
91 |
portage.archlist = settings.archlist() |
92 |
- _legacy_globals['archlist'] = portage.archlist |
93 |
+ constructed.add('archlist') |
94 |
|
95 |
portage.features = settings.features |
96 |
- _legacy_globals['features'] = portage.features |
97 |
+ constructed.add('features') |
98 |
|
99 |
portage.groups = settings["ACCEPT_KEYWORDS"].split() |
100 |
- _legacy_globals['groups'] = portage.groups |
101 |
+ constructed.add('groups') |
102 |
|
103 |
portage.pkglines = settings.packages |
104 |
- _legacy_globals['pkglines'] = portage.pkglines |
105 |
+ constructed.add('pkglines') |
106 |
|
107 |
portage.selinux_enabled = settings.selinux_enabled() |
108 |
- _legacy_globals['selinux_enabled'] = portage.selinux_enabled |
109 |
+ constructed.add('selinux_enabled') |
110 |
|
111 |
portage.thirdpartymirrors = settings.thirdpartymirrors() |
112 |
- _legacy_globals['thirdpartymirrors'] = portage.thirdpartymirrors |
113 |
+ constructed.add('thirdpartymirrors') |
114 |
|
115 |
portage.usedefaults = settings.use_defs |
116 |
- _legacy_globals['usedefaults'] = portage.usedefaults |
117 |
+ constructed.add('usedefaults') |
118 |
|
119 |
profiledir = os.path.join(settings["PORTAGE_CONFIGROOT"], PROFILE_PATH) |
120 |
if not os.path.isdir(profiledir): |
121 |
profiledir = None |
122 |
portage.profiledir = profiledir |
123 |
- _legacy_globals['profiledir'] = portage.profiledir |
124 |
+ constructed.add('profiledir') |
125 |
|
126 |
- return _legacy_globals[name] |
127 |
+ return getattr(portage, name) |