diff options
author | Zac Medico <zmedico@gentoo.org> | 2008-07-03 09:05:38 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2008-07-03 09:05:38 +0000 |
commit | 1bb31021102532794b844dc6d288867ae3a421de (patch) | |
tree | c5c20e59ec32fe85fdbfce2e64955217357e42bc | |
parent | 025b9ac465f3fdc0c1a595889e6ff0950596a46a (diff) | |
download | portage-1bb31021102532794b844dc6d288867ae3a421de.tar.gz portage-1bb31021102532794b844dc6d288867ae3a421de.tar.bz2 portage-1bb31021102532794b844dc6d288867ae3a421de.zip |
Add a portage._disable_legacy_globals() function. This deletes the
ObjectProxy instances that are used for lazy initialization of legacy
global variables. The purpose of deleting them is to prevent new code
from referencing these deprecated variables. This allows the removal
of the PORTAGE_LEGACY_GLOBALS variable which used to serve the same
purpose.
svn path=/main/trunk/; revision=10909
-rwxr-xr-x | bin/repoman | 3 | ||||
-rw-r--r-- | pym/_emerge/__init__.py | 3 | ||||
-rw-r--r-- | pym/portage/__init__.py | 22 |
3 files changed, 19 insertions, 9 deletions
diff --git a/bin/repoman b/bin/repoman index 09042b1e2..3f185f5af 100755 --- a/bin/repoman +++ b/bin/repoman @@ -38,14 +38,13 @@ except ImportError: if not hasattr(__builtins__, "set"): from sets import Set as set -os.environ["PORTAGE_LEGACY_GLOBALS"] = "false" try: import portage except ImportError: from os import path as osp sys.path.insert(0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym")) import portage -del os.environ["PORTAGE_LEGACY_GLOBALS"] +portage._disable_legacy_globals() try: from repoman.checks import run_checks diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 78e70de71..8c30b4f01 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -31,14 +31,13 @@ import gc import os, stat import platform -os.environ["PORTAGE_LEGACY_GLOBALS"] = "false" try: import portage except ImportError: from os import path as osp sys.path.insert(0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "pym")) import portage -del os.environ["PORTAGE_LEGACY_GLOBALS"] +portage._disable_legacy_globals() from portage import digraph, portdbapi from portage.const import NEWS_LIB_PATH, CACHE_PATH, PRIVATE_PATH, USER_CONFIG_PATH, GLOBAL_CONFIG_PATH diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index 16760c8d4..9859e0f5e 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -7009,6 +7009,22 @@ class _MtimedbProxy(portage.util.ObjectProxy): name = object.__getattribute__(self, '_name') return globals()[name] +_legacy_global_var_names = ("archlist", "db", "features", + "groups", "mtimedb", "mtimedbfile", "pkglines", + "portdb", "profiledir", "root", "selinux_enabled", + "settings", "thirdpartymirrors", "usedefaults") + +def _disable_legacy_globals(): + """ + This deletes the ObjectProxy instances that are used + for lazy initialization of legacy global variables. + The purpose of deleting them is to prevent new code + from referencing these deprecated variables. + """ + global _legacy_global_var_names + for k in _legacy_global_var_names: + globals().pop(k, None) + # Initialization of legacy globals. No functions/classes below this point # please! When the above functions and classes become independent of the # below global variables, it will be possible to make the below code @@ -7072,11 +7088,7 @@ def init_legacy_globals(): # within Portage under any circumstances. # ======================================================================== -# WARNING! -# The PORTAGE_LEGACY_GLOBALS environment variable is reserved for internal -# use within Portage. External use of this variable is unsupported because -# it is experimental and it's behavior is likely to change. -if "PORTAGE_LEGACY_GLOBALS" not in os.environ: +if True: _mtimedb_initialized = False mtimedb = _MtimedbProxy("mtimedb") |