diff options
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 |