summaryrefslogtreecommitdiffstats
path: root/pym/portage
diff options
context:
space:
mode:
Diffstat (limited to 'pym/portage')
-rw-r--r--pym/portage/__init__.py20
-rw-r--r--pym/portage/_global_updates.py2
-rw-r--r--pym/portage/_legacy_globals.py6
-rw-r--r--pym/portage/dbapi/vartree.py14
-rw-r--r--pym/portage/news.py1
-rw-r--r--pym/portage/package/ebuild/doebuild.py6
-rw-r--r--pym/portage/tests/ebuild/test_config.py2
-rw-r--r--pym/portage/tests/ebuild/test_doebuild_spawn.py2
-rw-r--r--pym/portage/tests/emerge/test_simple.py18
-rw-r--r--pym/portage/tests/repoman/test_simple.py2
-rw-r--r--pym/portage/tests/resolver/ResolverPlayground.py4
-rw-r--r--pym/portage/util/env_update.py12
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