diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-10-25 01:59:39 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-10-25 01:59:39 -0700 |
commit | a715b65f7bd36409c1283e6911265d1f4405ab7a (patch) | |
tree | f3ad709ca1495be750163ced02fe11562566f910 /pym/portage | |
parent | 25aaf3e69b8ef0e9a21d0d74a9b7b690b76675cd (diff) | |
download | portage-a715b65f7bd36409c1283e6911265d1f4405ab7a.tar.gz portage-a715b65f7bd36409c1283e6911265d1f4405ab7a.tar.bz2 portage-a715b65f7bd36409c1283e6911265d1f4405ab7a.zip |
Use EROOT instead of ROOT for keys everywhere.
It makes more sense to use EROOT instead of ROOT for keys in mappings
like portage.db, since it allows for multiple prefixes to exist
simultaneously within the same map without having a key collision.
This affects all portageq commands which take a <root> parameter, since
that parameter now corresponds to EROOT instead of ROOT. None of this
makes any difference for non-prefix users, since EROOT and ROOT are
identical when EPREFIX is empty.
Diffstat (limited to 'pym/portage')
-rw-r--r-- | pym/portage/__init__.py | 20 | ||||
-rw-r--r-- | pym/portage/_global_updates.py | 2 | ||||
-rw-r--r-- | pym/portage/_legacy_globals.py | 6 | ||||
-rw-r--r-- | pym/portage/dbapi/vartree.py | 14 | ||||
-rw-r--r-- | pym/portage/news.py | 1 | ||||
-rw-r--r-- | pym/portage/package/ebuild/doebuild.py | 6 | ||||
-rw-r--r-- | pym/portage/tests/ebuild/test_config.py | 2 | ||||
-rw-r--r-- | pym/portage/tests/ebuild/test_doebuild_spawn.py | 2 | ||||
-rw-r--r-- | pym/portage/tests/emerge/test_simple.py | 18 | ||||
-rw-r--r-- | pym/portage/tests/repoman/test_simple.py | 2 | ||||
-rw-r--r-- | pym/portage/tests/resolver/ResolverPlayground.py | 4 | ||||
-rw-r--r-- | pym/portage/util/env_update.py | 12 |
12 files changed, 46 insertions, 43 deletions
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index 3dc9ae53c..03ec28665 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -482,8 +482,8 @@ def portageexit(): class _trees_dict(dict): def __init__(self): super(dict, self).__init__() - self._running_root = None - self._target_root = None + self._running_eroot = None + self._target_eroot = None def create_trees(config_root=None, target_root=None, trees=None, env=None): if trees is None: @@ -503,10 +503,10 @@ def create_trees(config_root=None, target_root=None, trees=None, env=None): env=env, _eprefix=eprefix) settings.lock() - trees._target_root = settings['ROOT'] - myroots = [(settings["ROOT"], settings)] + trees._target_eroot = settings['EROOT'] + myroots = [(settings['EROOT'], settings)] if settings["ROOT"] == "/": - trees._running_root = trees._target_root + trees._running_eroot = trees._target_eroot else: # When ROOT != "/" we only want overrides from the calling @@ -522,19 +522,19 @@ def create_trees(config_root=None, target_root=None, trees=None, env=None): settings = config(config_root=None, target_root="/", env=clean_env, _eprefix=eprefix) settings.lock() - trees._running_root = settings['ROOT'] - myroots.append((settings["ROOT"], settings)) + trees._running_eroot = settings['EROOT'] + myroots.append((settings['EROOT'], settings)) for myroot, mysettings in myroots: trees[myroot] = portage.util.LazyItemsDict(trees.get(myroot, {})) trees[myroot].addLazySingleton("virtuals", mysettings.getvirtuals) trees[myroot].addLazySingleton( - "vartree", vartree, myroot, categories=mysettings.categories, + "vartree", vartree, categories=mysettings.categories, settings=mysettings) trees[myroot].addLazySingleton("porttree", - portagetree, myroot, settings=mysettings) + portagetree, settings=mysettings) trees[myroot].addLazySingleton("bintree", - binarytree, myroot, mysettings["PKGDIR"], settings=mysettings) + binarytree, pkgdir=mysettings["PKGDIR"], settings=mysettings) return trees if VERSION == 'HEAD': diff --git a/pym/portage/_global_updates.py b/pym/portage/_global_updates.py index 72fd5c4fd..51750431d 100644 --- a/pym/portage/_global_updates.py +++ b/pym/portage/_global_updates.py @@ -37,7 +37,7 @@ def _global_updates(trees, prev_mtimes, quiet=False, if_mtime_changed=True): "SANDBOX_ACTIVE" in os.environ or \ len(trees) != 1: return retupd - root = "/" + root = trees._running_eroot mysettings = trees[root]["vartree"].settings portdb = trees[root]["porttree"].dbapi vardb = trees[root]["vartree"].dbapi diff --git a/pym/portage/_legacy_globals.py b/pym/portage/_legacy_globals.py index beba78563..072b3f751 100644 --- a/pym/portage/_legacy_globals.py +++ b/pym/portage/_legacy_globals.py @@ -35,13 +35,15 @@ def _get_legacy_global(name): constructed.add('db') del portage._initializing_globals - settings = portage.db[portage.db._target_root]["vartree"].settings + settings = portage.db[portage.db._target_eroot]["vartree"].settings portage.output._init(config_root=settings['PORTAGE_CONFIGROOT']) portage.settings = settings constructed.add('settings') - portage.root = portage.db._target_root + # Since portage.db now uses EROOT for keys instead of ROOT, we make + # portage.root refer to EROOT such that it continues works as a key. + portage.root = portage.db._target_eroot constructed.add('root') # COMPATIBILITY diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index b69b363bb..f76645355 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -147,7 +147,7 @@ class vardbapi(dbapi): self._fs_lock_count = 0 if vartree is None: - vartree = portage.db[settings["ROOT"]]["vartree"] + vartree = portage.db[settings['EROOT']]['vartree'] self.vartree = vartree self._aux_cache_keys = set( ["BUILD_TIME", "CHOST", "COUNTER", "DEPEND", "DESCRIPTION", @@ -1319,7 +1319,7 @@ class dblink(object): raise TypeError("settings argument is required") mysettings = settings - myroot = settings['ROOT'] + self._eroot = mysettings['EROOT'] self.cat = cat self.pkg = pkg self.mycpv = self.cat + "/" + self.pkg @@ -1327,14 +1327,10 @@ class dblink(object): self.mysplit[0] = "%s/%s" % (self.cat, self.mysplit[0]) self.treetype = treetype if vartree is None: - vartree = portage.db[myroot]["vartree"] + vartree = portage.db[self._eroot]["vartree"] self.vartree = vartree self._blockers = blockers self._scheduler = scheduler - - # WARNING: EROOT support is experimental and may be incomplete - # for cases in which EPREFIX is non-empty. - self._eroot = mysettings['EROOT'] self.dbroot = normalize_path(os.path.join(self._eroot, VDB_PATH)) self.dbcatdir = self.dbroot+"/"+cat self.dbpkgdir = self.dbcatdir+"/"+pkg @@ -1343,14 +1339,14 @@ class dblink(object): self.settings = mysettings self._verbose = self.settings.get("PORTAGE_VERBOSE") == "1" - self.myroot=myroot + self.myroot = self.settings['ROOT'] self._installed_instance = None self.contentscache = None self._contents_inodes = None self._contents_basenames = None self._linkmap_broken = False self._md5_merge_map = {} - self._hash_key = (self.myroot, self.mycpv) + self._hash_key = (self._eroot, self.mycpv) self._protect_obj = None self._pipe = pipe diff --git a/pym/portage/news.py b/pym/portage/news.py index 1bf0522a7..13d68324d 100644 --- a/pym/portage/news.py +++ b/pym/portage/news.py @@ -39,7 +39,6 @@ class NewsManager(object): def __init__(self, portdb, vardb, news_path, unread_path, language_id='en'): self.news_path = news_path self.unread_path = unread_path - self.target_root = vardb.settings["ROOT"] self.language_id = language_id self.config = vardb.settings self.vdb = vardb diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package/ebuild/doebuild.py index a2d2c8c12..ccea574c5 100644 --- a/pym/portage/package/ebuild/doebuild.py +++ b/pym/portage/package/ebuild/doebuild.py @@ -420,9 +420,9 @@ def doebuild(myebuild, mydo, _unused=None, settings=None, debug=0, listonly=0, if settings is None: raise TypeError("settings parameter is required") mysettings = settings - myroot = settings["ROOT"] + myroot = settings['EROOT'] - if _unused is not None and _unused != mysettings["ROOT"]: + if _unused is not None and _unused != mysettings['EROOT']: warnings.warn("The third parameter of the " "portage.doebuild() is now unused. Use " "settings['ROOT'] instead.", @@ -936,7 +936,7 @@ def doebuild(myebuild, mydo, _unused=None, settings=None, debug=0, listonly=0, # this phase. This can raise PermissionDenied if # the current user doesn't have write access to $PKGDIR. if hasattr(portage, 'db'): - bintree = portage.db[mysettings["ROOT"]]["bintree"] + bintree = portage.db[mysettings['EROOT']]['bintree'] mysettings["PORTAGE_BINPKG_TMPFILE"] = \ bintree.getname(mysettings.mycpv) + \ ".%s" % (os.getpid(),) diff --git a/pym/portage/tests/ebuild/test_config.py b/pym/portage/tests/ebuild/test_config.py index fe9b64829..6eb13610f 100644 --- a/pym/portage/tests/ebuild/test_config.py +++ b/pym/portage/tests/ebuild/test_config.py @@ -24,7 +24,7 @@ class ConfigTestCase(TestCase): settings = config(clone=playground.settings) result = playground.run(["=dev-libs/A-1"]) pkg, existing_node = result.depgraph._select_package( - playground.root, "=dev-libs/A-1") + playground.eroot, "=dev-libs/A-1") settings.setcpv(pkg) # clone after setcpv tests deepcopy of LazyItemsDict diff --git a/pym/portage/tests/ebuild/test_doebuild_spawn.py b/pym/portage/tests/ebuild/test_doebuild_spawn.py index cafb16d96..daa6e7528 100644 --- a/pym/portage/tests/ebuild/test_doebuild_spawn.py +++ b/pym/portage/tests/ebuild/test_doebuild_spawn.py @@ -36,7 +36,7 @@ class DoebuildSpawnTestCase(TestCase): 'RDEPEND' : '>=app-shells/bash-3.2_p17 >=dev-lang/python-2.6', 'SLOT' : '0', } - root_config = playground.trees[playground.root]['root_config'] + root_config = playground.trees[playground.eroot]['root_config'] pkg = Package(built=False, cpv=cpv, installed=False, metadata=metadata, root_config=root_config, type_name='ebuild') diff --git a/pym/portage/tests/emerge/test_simple.py b/pym/portage/tests/emerge/test_simple.py index c2c57a389..aaa54d0a7 100644 --- a/pym/portage/tests/emerge/test_simple.py +++ b/pym/portage/tests/emerge/test_simple.py @@ -134,7 +134,7 @@ pkg_info() { eroot = settings["EROOT"] trees = playground.trees root = playground.root - portdb = trees[root]["porttree"].dbapi + portdb = trees[eroot]["porttree"].dbapi portdir = settings["PORTDIR"] var_cache_edb = os.path.join(eprefix, "var", "cache", "edb") cachedir = os.path.join(var_cache_edb, "dep") @@ -214,14 +214,14 @@ pkg_info() { emaint_cmd + ("--fix", "all"), fixpackages_cmd, regenworld_cmd, - portageq_cmd + ("match", "/", "dev-libs/A"), - portageq_cmd + ("best_visible", "/", "dev-libs/A"), - portageq_cmd + ("best_visible", "/", "binary", "dev-libs/A"), - portageq_cmd + ("contents", "/", "dev-libs/A-1"), - portageq_cmd + ("metadata", "/", "ebuild", "dev-libs/A-1", "EAPI", "IUSE", "RDEPEND"), - portageq_cmd + ("metadata", "/", "binary", "dev-libs/A-1", "EAPI", "USE", "RDEPEND"), - portageq_cmd + ("metadata", "/", "installed", "dev-libs/A-1", "EAPI", "USE", "RDEPEND"), - portageq_cmd + ("owners", "/", eroot + "usr"), + portageq_cmd + ("match", eroot, "dev-libs/A"), + portageq_cmd + ("best_visible", eroot, "dev-libs/A"), + portageq_cmd + ("best_visible", eroot, "binary", "dev-libs/A"), + portageq_cmd + ("contents", eroot, "dev-libs/A-1"), + portageq_cmd + ("metadata", eroot, "ebuild", "dev-libs/A-1", "EAPI", "IUSE", "RDEPEND"), + portageq_cmd + ("metadata", eroot, "binary", "dev-libs/A-1", "EAPI", "USE", "RDEPEND"), + portageq_cmd + ("metadata", eroot, "installed", "dev-libs/A-1", "EAPI", "USE", "RDEPEND"), + portageq_cmd + ("owners", eroot, eroot + "usr"), emerge_cmd + ("-p", eroot + "usr"), emerge_cmd + ("-p", "--unmerge", "-q", eroot + "usr"), emerge_cmd + ("--unmerge", "--quiet", "dev-libs/A"), diff --git a/pym/portage/tests/repoman/test_simple.py b/pym/portage/tests/repoman/test_simple.py index 9dae0efda..6c8a61c5b 100644 --- a/pym/portage/tests/repoman/test_simple.py +++ b/pym/portage/tests/repoman/test_simple.py @@ -128,7 +128,7 @@ class SimpleRepomanTestCase(TestCase): settings = playground.settings eprefix = settings["EPREFIX"] eroot = settings["EROOT"] - portdb = playground.trees[playground.root]["porttree"].dbapi + portdb = playground.trees[playground.eroot]["porttree"].dbapi homedir = os.path.join(eroot, "home") distdir = os.path.join(eprefix, "distdir") portdir = settings["PORTDIR"] diff --git a/pym/portage/tests/resolver/ResolverPlayground.py b/pym/portage/tests/resolver/ResolverPlayground.py index 4bbd03318..57cdebece 100644 --- a/pym/portage/tests/resolver/ResolverPlayground.py +++ b/pym/portage/tests/resolver/ResolverPlayground.py @@ -201,7 +201,7 @@ class ResolverPlayground(object): ebuild_dir = os.path.join(repo_dir, a.cp) ebuild_path = os.path.join(ebuild_dir, a.cpv.split("/")[1] + ".ebuild") - portdb = self.trees[self.root]["porttree"].dbapi + portdb = self.trees[self.eroot]["porttree"].dbapi tmpsettings['O'] = ebuild_dir if not digestgen(mysettings=tmpsettings, myportdb=portdb): raise AssertionError('digest creation failed for %s' % ebuild_path) @@ -549,7 +549,7 @@ class ResolverPlayground(object): return def cleanup(self): - portdb = self.trees[self.root]["porttree"].dbapi + portdb = self.trees[self.eroot]["porttree"].dbapi portdb.close_caches() portage.dbapi.porttree.portdbapi.portdbapi_instances.remove(portdb) if self.debug: diff --git a/pym/portage/util/env_update.py b/pym/portage/util/env_update.py index 65ed2dbe1..143593264 100644 --- a/pym/portage/util/env_update.py +++ b/pym/portage/util/env_update.py @@ -46,12 +46,18 @@ def env_update(makelinks=1, target_root=None, prev_mtimes=None, contents=None, vardbapi = vartree(settings=env).dbapi else: if target_root is None: + eprefix = portage.settings["EPREFIX"] target_root = portage.settings["ROOT"] - if hasattr(portage, "db") and target_root in portage.db: - vardbapi = portage.db[target_root]["vartree"].dbapi + target_eroot = portage.settings['EROOT'] + else: + eprefix = os.environ.get("__PORTAGE_TEST_EPREFIX", "") + target_eroot = os.path.join(target_root, eprefix) + target_eroot = target_eroot.rstrip(os.sep) + os.sep + if hasattr(portage, "db") and target_eroot in portage.db: + vardbapi = portage.db[target_eroot]["vartree"].dbapi else: settings = config(config_root=target_root, - target_root=target_root) + target_root=target_root, eprefix=eprefix) target_root = settings["ROOT"] if env is None: env = settings |