summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2010-08-20 08:21:16 -0700
committerZac Medico <zmedico@gentoo.org>2010-08-20 08:21:16 -0700
commit7e9b615f92ef5af492b1147b92335dbdb844e343 (patch)
treeae090a3d552ab4f456b33c289e6c4a2e38d51905 /pym
parentfaf8c92db945ab3aa4c003bc5b0faf9b0d9f7692 (diff)
downloadportage-7e9b615f92ef5af492b1147b92335dbdb844e343.tar.gz
portage-7e9b615f92ef5af492b1147b92335dbdb844e343.tar.bz2
portage-7e9b615f92ef5af492b1147b92335dbdb844e343.zip
* Fix EROOT handling in various places in vartree.py. It should be
all fixed now, but needs testing. * Remove unused root parameter in calls to dblink.isowner() and _match_contents(). * Make doebuild_environment() and prepare_build_dirs() take keyword arguments, and ignore unused parameters. Especially don't use myroot parameters since they are confusing given EROOT support.
Diffstat (limited to 'pym')
-rw-r--r--pym/portage/dbapi/vartree.py95
-rw-r--r--pym/portage/package/ebuild/doebuild.py20
-rw-r--r--pym/portage/package/ebuild/prepare_build_dirs.py10
3 files changed, 81 insertions, 44 deletions
diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py
index a5cebb359..5d1a617c4 100644
--- a/pym/portage/dbapi/vartree.py
+++ b/pym/portage/dbapi/vartree.py
@@ -1375,6 +1375,9 @@ class vardbapi(dbapi):
self._bump_mtime(cpv)
def counter_tick(self, myroot=None, mycpv=None):
+ """
+ @param myroot: ignored, self._eroot is used instead
+ """
return self.counter_tick_core(incrementing=1, mycpv=mycpv)
def get_counter_tick_core(self, myroot=None, mycpv=None):
@@ -1395,7 +1398,10 @@ class vardbapi(dbapi):
it also corresponds to the total number of
installation actions that have occurred in
the history of this package database.
+
+ @param myroot: ignored, self._eroot is used instead
"""
+ myroot = None
cp_list = self.cp_list
max_counter = 0
for cp in self.cp_all():
@@ -1452,7 +1458,13 @@ class vardbapi(dbapi):
return max_counter + 1
def counter_tick_core(self, myroot=None, incrementing=1, mycpv=None):
- "This method will grab the next COUNTER value and record it back to the global file. Returns new counter value."
+ """
+ This method will grab the next COUNTER value and record it back
+ to the global file. Returns new counter value.
+
+ @param myroot: ignored, self._eroot is used instead
+ """
+ myroot = None
counter = self.get_counter_tick_core(mycpv=mycpv) - 1
if incrementing:
#increment counter
@@ -1478,7 +1490,7 @@ class vardbapi(dbapi):
"""
if not hasattr(pkg, "getcontents"):
pkg = self._dblink(pkg)
- root = self.root
+ root = self._eroot
root_len = len(root) - 1
new_contents = pkg.getcontents().copy()
removed = 0
@@ -1491,7 +1503,7 @@ class vardbapi(dbapi):
relative_filename = filename
else:
relative_filename = filename[root_len:]
- contents_key = pkg._match_contents(relative_filename, root)
+ contents_key = pkg._match_contents(relative_filename)
if contents_key:
del new_contents[contents_key]
removed += 1
@@ -1523,7 +1535,7 @@ class vardbapi(dbapi):
self._vardb = vardb
def add(self, cpv):
- root_len = len(self._vardb.root)
+ root_len = len(self._vardb._eroot)
contents = self._vardb._dblink(cpv).getcontents()
pkg_hash = self._hash_pkg(cpv)
if not contents:
@@ -1663,7 +1675,7 @@ class vardbapi(dbapi):
owners_cache = self._populate()
vardb = self._vardb
- root = vardb.root
+ root = vardb._eroot
hash_pkg = owners_cache._hash_pkg
hash_str = owners_cache._hash_str
base_names = self._vardb._aux_cache["owners"]["base_names"]
@@ -1717,7 +1729,7 @@ class vardbapi(dbapi):
if os.path.basename(p) == name:
owners.append((cpv, p[len(root):]))
else:
- if dblink(cpv).isowner(path, root):
+ if dblink(cpv).isowner(path):
owners.append((cpv, path))
except StopIteration:
path_iter.append(path)
@@ -1751,7 +1763,7 @@ class vardbapi(dbapi):
name = os.path.basename(path.rstrip(os.path.sep))
path_info_list.append((path, name, is_basename))
- root = self._vardb.root
+ root = self._vardb._eroot
for cpv in self._vardb.cpv_all():
dblnk = self._vardb._dblink(cpv)
@@ -1761,7 +1773,7 @@ class vardbapi(dbapi):
if os.path.basename(p) == name:
yield dblnk, p[len(root):]
else:
- if dblnk.isowner(path, root):
+ if dblnk.isowner(path):
yield dblnk, path
class vartree(object):
@@ -2168,8 +2180,8 @@ class dblink(object):
self.settings.setcpv(self.mycpv, mydb=self.vartree.dbapi)
if myebuildpath:
try:
- doebuild_environment(myebuildpath, "prerm", self.myroot,
- self.settings, 0, 0, self.vartree.dbapi)
+ doebuild_environment(myebuildpath, "prerm",
+ settings=self.settings, db=self.vartree.dbapi)
except UnsupportedAPIException as e:
# Sometimes this happens due to corruption of the EAPI file.
writemsg(_("!!! FAILED prerm: %s\n") % \
@@ -2199,7 +2211,7 @@ class dblink(object):
finally:
catdir_lock = None
- prepare_build_dirs(self.myroot, self.settings, 1)
+ prepare_build_dirs(settings=self.settings, cleanup=True)
log_path = self.settings.get("PORTAGE_LOG_FILE")
if scheduler is None:
@@ -2313,8 +2325,8 @@ class dblink(object):
# even though it won't really be sourced.
myebuildpath = os.path.join(self.dbdir,
self.pkg + ".ebuild")
- doebuild_environment(myebuildpath, "cleanrm", self.myroot,
- self.settings, 0, 0, self.vartree.dbapi)
+ doebuild_environment(myebuildpath, "cleanrm",
+ settings=self.settings, db=self.vartree.dbapi)
if scheduler is None:
_spawn_phase("cleanrm", self.settings)
else:
@@ -2415,8 +2427,7 @@ class dblink(object):
self.vartree.root, self.settings,
vartree=self.vartree, treetype="vartree"))
- dest_root = normalize_path(self.vartree.root).rstrip(os.path.sep) + \
- os.path.sep
+ dest_root = self._eroot
dest_root_len = len(dest_root) - 1
conf_mem_file = os.path.join(dest_root, CONFIG_MEMORY_FILE)
@@ -2440,7 +2451,7 @@ class dblink(object):
errno.EEXIST, errno.ENOTEMPTY,
errno.EBUSY, errno.ENOENT,
errno.ENOTDIR, errno.EISDIR)
- modprotect = os.path.join(self.vartree.root, "lib/modules/")
+ modprotect = os.path.join(self._eroot, "lib/modules/")
def unlink(file_name, lstatobj):
if bsd_chflags:
@@ -2535,7 +2546,7 @@ class dblink(object):
relative_path = obj[dest_root_len:]
is_owned = False
for dblnk in others_in_slot:
- if dblnk.isowner(relative_path, dest_root):
+ if dblnk.isowner(relative_path):
is_owned = True
break
if is_owned:
@@ -2874,7 +2885,7 @@ class dblink(object):
linkmap = self.vartree.dbapi.linkmap
installed_instance = self._installed_instance
old_contents = installed_instance.getcontents()
- root = self.myroot
+ root = self._eroot
root_len = len(root) - 1
lib_graph = digraph()
path_node_map = {}
@@ -2912,7 +2923,7 @@ class dblink(object):
os = portage.os
f = f_abs[root_len:]
- if self.isowner(f, root):
+ if self.isowner(f):
continue
try:
consumers = linkmap.findConsumers(f)
@@ -2929,10 +2940,10 @@ class dblink(object):
# Note that consumers can also be providers.
for provider_node, consumers in consumer_map.items():
for c in consumers:
- if self.isowner(c, root):
+ if self.isowner(c):
continue
consumer_node = path_to_node(c)
- if installed_instance.isowner(c, root) and \
+ if installed_instance.isowner(c) and \
consumer_node not in provider_nodes:
# This is not a provider, so it will be uninstalled.
continue
@@ -2985,7 +2996,7 @@ class dblink(object):
os = _os_merge
showMessage = self._display_merge
- root = self.myroot
+ root = self._eroot
# Copy contents entries from the old package to the new one.
new_contents = self.getcontents().copy()
@@ -3039,7 +3050,7 @@ class dblink(object):
preserved_paths = set()
path_cpv_map = {}
path_node_map = {}
- root = self.myroot
+ root = self._eroot
def path_to_node(path):
node = path_node_map.get(path)
@@ -3138,7 +3149,7 @@ class dblink(object):
files_to_remove.update(files)
files_to_remove = sorted(files_to_remove)
showMessage = self._display_merge
- root = self.myroot
+ root = self._eroot
parent_dirs = set()
for obj in files_to_remove:
@@ -3197,8 +3208,7 @@ class dblink(object):
scheduler = self._scheduler
stopmerge = False
collisions = []
- destroot = normalize_path(destroot).rstrip(os.path.sep) + \
- os.path.sep
+ destroot = self._eroot
showMessage(_(" %s checking %d files for package collisions\n") % \
(colorize("GOOD", "*"), len(mycontents)))
for i, f in enumerate(mycontents):
@@ -3262,7 +3272,7 @@ class dblink(object):
isowned = False
full_path = os.path.join(destroot, f.lstrip(os.path.sep))
for ver in mypkglist:
- if ver.isowner(f, destroot):
+ if ver.isowner(f):
isowned = True
break
if not isowned and self.isprotected(full_path):
@@ -3291,7 +3301,7 @@ class dblink(object):
os = _os_merge
- root = self.myroot
+ root = self._eroot
inode_map = {}
for f in path_iter:
path = os.path.join(root, f.lstrip(os.sep))
@@ -3423,7 +3433,7 @@ class dblink(object):
@param srcroot: Typically this is ${D}
@type srcroot: String (Path)
- @param destroot: Path to merge to (usually ${ROOT})
+ @param destroot: ignored, self._eroot is used instead
@type destroot: String (Path)
@param inforoot: root of the vardb entry ?
@type inforoot: String (Path)
@@ -3446,8 +3456,7 @@ class dblink(object):
srcroot = _unicode_decode(srcroot,
encoding=_encodings['content'], errors='strict')
- destroot = _unicode_decode(destroot,
- encoding=_encodings['content'], errors='strict')
+ destroot = self._eroot
inforoot = _unicode_decode(inforoot,
encoding=_encodings['content'], errors='strict')
myebuild = _unicode_decode(myebuild,
@@ -3457,7 +3466,6 @@ class dblink(object):
scheduler = self._scheduler
srcroot = normalize_path(srcroot).rstrip(os.path.sep) + os.path.sep
- destroot = normalize_path(destroot).rstrip(os.path.sep) + os.path.sep
if not os.path.isdir(srcroot):
showMessage(_("!!! Directory Not Found: D='%s'\n") % srcroot,
@@ -3692,9 +3700,9 @@ class dblink(object):
# exists for logging of collision-protect eerror messages.
if myebuild is None:
myebuild = os.path.join(inforoot, self.pkg + ".ebuild")
- doebuild_environment(myebuild, "preinst", destroot,
- self.settings, 0, 0, mydbapi)
- prepare_build_dirs(destroot, self.settings, cleanup)
+ doebuild_environment(myebuild, "preinst",
+ settings=self.settings, db=mydbapi)
+ prepare_build_dirs(settings=self.settings, cleanup=cleanup)
if collisions:
collision_protect = "collision-protect" in self.settings.features
@@ -4399,7 +4407,7 @@ class dblink(object):
outfile.write("dev %s\n" % myrealdest)
showMessage(zing + " " + mydest + "\n")
- def merge(self, mergeroot, inforoot, myroot, myebuild=None, cleanup=0,
+ def merge(self, mergeroot, inforoot, myroot=None, myebuild=None, cleanup=0,
mydbapi=None, prev_mtimes=None):
"""
If portage is reinstalling itself, create temporary
@@ -4409,7 +4417,10 @@ class dblink(object):
temporary directories. Pre-load elog modules here since
we won't be able to later if they get unmerged (happens
when namespace changes).
+
+ @param myroot: ignored, self._eroot is used instead
"""
+ myroot = None
if self.vartree.dbapi._categories is not None:
self.vartree.dbapi._categories = None
if self.myroot == "/" and \
@@ -4442,11 +4453,15 @@ class dblink(object):
elog_process(self.mycpv, self.settings)
return self._merge(mergeroot, inforoot,
- myroot, myebuild=myebuild, cleanup=cleanup,
+ myebuild=myebuild, cleanup=cleanup,
mydbapi=mydbapi, prev_mtimes=prev_mtimes)
- def _merge(self, mergeroot, inforoot, myroot, myebuild=None, cleanup=0,
+ def _merge(self, mergeroot, inforoot, myroot=None, myebuild=None, cleanup=0,
mydbapi=None, prev_mtimes=None):
+ """
+ @param myroot: ignored, self._eroot is used instead
+ """
+ myroot = None
retval = -1
self.lockdb()
self.vartree.dbapi._bump_mtime(self.mycpv)
@@ -4488,8 +4503,8 @@ class dblink(object):
if myebuild is None:
myebuild = os.path.join(inforoot, self.pkg + ".ebuild")
- doebuild_environment(myebuild, "clean", self.myroot,
- self.settings, 0, 0, mydbapi)
+ doebuild_environment(myebuild, "clean",
+ settings=self.settings, db=mydbapi)
if self._scheduler is None:
_spawn_phase("clean", self.settings)
else:
diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package/ebuild/doebuild.py
index e606ac302..699fbc5bd 100644
--- a/pym/portage/package/ebuild/doebuild.py
+++ b/pym/portage/package/ebuild/doebuild.py
@@ -108,9 +108,22 @@ def _spawn_phase(phase, settings, actionmap=None, **kwargs):
task_scheduler.run()
return ebuild_phase.returncode
-def doebuild_environment(myebuild, mydo, myroot, mysettings,
- debug, use_cache, mydbapi):
+def doebuild_environment(myebuild, mydo, myroot=None, settings=None,
+ debug=False, use_cache=None, db=None):
+ """
+ The myroot and use_cache parameters are unused.
+ """
+ myroot = None
+ use_cache = None
+
+ if settings is None:
+ raise TypeError("settings argument is required")
+
+ if db is None:
+ raise TypeError("db argument is required")
+ mysettings = settings
+ mydbapi = db
ebuild_path = os.path.abspath(myebuild)
pkg_dir = os.path.dirname(ebuild_path)
@@ -276,7 +289,8 @@ def doebuild_environment(myebuild, mydo, myroot, mysettings,
mydo in ('compile', 'config', 'configure', 'info',
'install', 'nofetch', 'postinst', 'postrm', 'preinst',
'prepare', 'prerm', 'setup', 'test', 'unpack'):
- mykv,err1=ExtractKernelVersion(os.path.join(myroot, "usr/src/linux"))
+ mykv, err1 = ExtractKernelVersion(
+ os.path.join(mysettings['EROOT'], "usr/src/linux"))
if mykv:
# Regular source tree
mysettings["KV"]=mykv
diff --git a/pym/portage/package/ebuild/prepare_build_dirs.py b/pym/portage/package/ebuild/prepare_build_dirs.py
index dc29eeeb8..3792800ac 100644
--- a/pym/portage/package/ebuild/prepare_build_dirs.py
+++ b/pym/portage/package/ebuild/prepare_build_dirs.py
@@ -18,8 +18,16 @@ from portage.output import colorize
from portage.util import apply_recursive_permissions, \
apply_secpass_permissions, ensure_dirs, writemsg
-def prepare_build_dirs(myroot, mysettings, cleanup):
+def prepare_build_dirs(myroot=None, settings=None, cleanup=False):
+ """
+ The myroot parameter is ignored.
+ """
+ myroot = None
+ if settings is None:
+ raise TypeError("settings argument is required")
+
+ mysettings = settings
clean_dirs = [mysettings["HOME"]]
# We enable cleanup when we want to make sure old cruft (such as the old