pkgsettings.backup_changes("EMERGE_FROM")
pkgsettings.reset()
- # because portage modifies ROOT (adds EPREFIX) we have to
- # reset ROOT to what it was after each invocation of portage
- # code
- origroot = pkgsettings["ROOT"]
-
#buildsyspkg: Check if we need to _force_ binary package creation
issyspkg = ("buildsyspkg" in myfeat) \
and x[0] != "blocks" \
pkgsettings, self.edebug,
"--pretend" in self.myopts, fetchonly=1,
fetchall=1, mydbapi=portdb, tree="porttree")
- pkgsettings["ROOT"] = origroot
else:
retval = portage.doebuild(y, "fetch", myroot,
pkgsettings, self.edebug,
"--pretend" in self.myopts, fetchonly=1,
mydbapi=portdb, tree="porttree")
- pkgsettings["ROOT"] = origroot
if (retval is None) or retval:
print
print "!!! Fetch for",y,"failed, continuing..."
portage.doebuild_environment(y, "setup", myroot,
pkgsettings, self.edebug, 1, portdb)
- pkgsettings["ROOT"] = origroot
catdir = os.path.dirname(pkgsettings["PORTAGE_BUILDDIR"])
portage_util.ensure_dirs(os.path.dirname(catdir),
uid=portage.portage_uid, gid=portage.portage_gid,
retval = portage.doebuild(y, "package", myroot,
pkgsettings, self.edebug, mydbapi=portdb,
tree="porttree")
- pkgsettings["ROOT"] = origroot
if retval != os.EX_OK:
return retval
if "--buildpkgonly" not in self.myopts:
myebuild=pkgsettings["EBUILD"],
mytree="porttree", mydbapi=portdb,
vartree=vartree, prev_mtimes=ldpath_mtimes)
- pkgsettings["ROOT"] = origroot
if retval != os.EX_OK:
return retval
elif "noclean" not in pkgsettings.features:
portage.doebuild(y, "clean", myroot,
pkgsettings, self.edebug, mydbapi=portdb,
tree="porttree")
- pkgsettings["ROOT"] = origroot
else:
msg = " === (%s of %s) Compiling/Merging (%s::%s)" % \
(mergecount, len(mymergelist), pkg_key, y)
pkgsettings, self.edebug, vartree=vartree,
mydbapi=portdb, tree="porttree",
prev_mtimes=ldpath_mtimes)
- pkgsettings["ROOT"] = origroot
if retval != os.EX_OK:
return retval
finally:
mydbapi=bindb,
vartree=self.trees[myroot]["vartree"],
prev_mtimes=ldpath_mtimes)
- pkgsettings["ROOT"] = origroot
if retval is None:
sys.exit(1)
#need to check for errors
emergelog(xterm_titles, " >>> AUTOCLEAN: " + xsplit[0])
retval = unmerge(pkgsettings, self.myopts, vartree,
"clean", [xsplit[0]], ldpath_mtimes)
- pkgsettings["ROOT"] = origroot
if not retval:
emergelog(xterm_titles,
" --- AUTOCLEAN: Nothing unmerged.")
# an older package installed ON TOP of a newer version will cause ldconfig
# to overwrite the symlinks we just made. -X means no links. After 'clean'
# we can safely create links.
- writemsg(">>> Regenerating %s/etc/ld.so.cache...\n" %
- target_root+portage_const.EPREFIX)
+ writemsg(">>> Regenerating %s/etc/ld.so.cache...\n" % target_root+portage_const.EPREFIX)
if makelinks:
commands.getstatusoutput("cd / ; "+portage_const.EPREFIX+"/sbin/ldconfig -r '%s'" % target_root)
else:
commands.getstatusoutput("cd / ; "+portage_const.EPREFIX+"/sbin/ldconfig -X -r '%s'" % target_root)
elif ostype in ("FreeBSD","DragonFly"):
- writemsg(">>> Regenerating %s/var/run/ld-elf.so.hints...\n" %
- target_root+portage_const.EPREFIX)
+ writemsg(">>> Regenerating %svar/run/ld-elf.so.hints...\n" % target_root+portage_const.EPREFIX+os.sep)
commands.getstatusoutput(
"cd / ; "+portage_const.EPREFIX+"/sbin/ldconfig -elf -i -f '%s/var/run/ld-elf.so.hints' '%s/etc/ld.so.conf'" % \
(target_root+portage_const.EPREFIX, target_root+portage_const.EPREFIX))
mysettings["PORTAGE_DEBUG"] = "1"
mysettings["EPREFIX"] = portage_const.EPREFIX.rstrip(os.sep)
- # In prefix we add prefix to root, such that many eclasses and
- # ebuilds "just work" in a prefixed manner. Beware of this. At the
- # bottom of this file we compensate the ROOT variable when portage
- # is being called from ebuilds or eclasses (e.g. portageq) to avoid
- # a double prefix. In other words, inside portage ROOT should be
- # ROOT, outside portage (in ebuilds and eclasses) ROOT is ROOT +
- # EPREFIX.
- mysettings["ROOT"] = normalize_path(myroot + portage_const.EPREFIX + os.sep)
+ mysettings["ROOT"] = myroot
+ mysettings["PROOT"] = normalize_path(myroot + mysettings["EPREFIX"]) + os.sep
mysettings["STARTDIR"] = getcwd()
mysettings["EBUILD"] = ebuild_path
mysettings["PN"] = mysplit[0]
mysettings["PV"] = mysplit[1]
mysettings["PR"] = mysplit[2]
+
if portage_util.noiselimit < 0:
mysettings["PORTAGE_QUIET"] = "1"
mysettings["HOME"] = os.path.join(mysettings["PORTAGE_BUILDDIR"], "homedir")
mysettings["WORKDIR"] = os.path.join(mysettings["PORTAGE_BUILDDIR"], "work")
- mysettings["EDEST"] = normalize_path(
- os.path.join(mysettings["PORTAGE_BUILDDIR"], "image") + os.sep)
- mysettings["D"] = normalize_path(
- os.path.join(mysettings["PORTAGE_BUILDDIR"], "image" + mysettings["EPREFIX"]) + os.sep)
+ mysettings["EDEST"] = os.path.join(mysettings["PORTAGE_BUILDDIR"], "image") + os.sep
+ mysettings["D"] = os.path.join(mysettings["PORTAGE_BUILDDIR"], "image" + mysettings["EPREFIX"]) + os.sep
mysettings["T"] = os.path.join(mysettings["PORTAGE_BUILDDIR"], "temp")
mysettings["PORTAGE_BASHRC"] = os.path.join(
# secondhand = list of symlinks that have been skipped due to
# their target not existing (will merge later),
- origroot = destroot
destroot = normalize_path(destroot + portage_const.EPREFIX)
if not os.path.isdir(srcroot):
for v in otherversions:
# only allow versions with same slot to overwrite files
if myslot == self.vartree.dbapi.aux_get("/".join((self.cat, v)), ["SLOT"])[0]:
- # dblink needs the original destroot, as it prefixes
- # the entries from CONTENTS in vdb with root. So to
- # avoid a double prefix there, we don't need a
- # prefixed root.
mypkglist.append(
- dblink(self.cat, v, origroot, self.settings,
+ dblink(self.cat, v, destroot, self.settings,
vartree=self.vartree))
print green("*")+" checking "+str(len(myfilelist))+" files for package collisions"
def mergeme(self,srcroot,destroot,outfile,secondhand,stufftomerge,cfgfiledict,thismtime):
from os.path import sep, join
- prefix = normalize_path(portage_const.EPREFIX)
+ prefix = normalize_path(portage_const.EPREFIX) + sep
srcroot = normalize_path(srcroot).rstrip(sep) + sep
destroot = normalize_path(destroot).rstrip(sep) + sep
# this is supposed to merge a list of files. There will be 2 forms of argument passing.
kwargs = {}
for k, envvar in (("config_root", "PORTAGE_CONFIGROOT"), ("target_root", "ROOT")):
- kwargs[k] = os.path.join(
- os.environ.get(envvar, "/"))
+ kwargs[k] = os.environ.get(envvar, "/")
db = create_trees(**kwargs)
# ============================================================================
# ============================================================================
-if os.environ.has_key("ROOT"):
- root = normalize_path(os.environ["ROOT"]).rstrip(os.sep) + os.sep
- # strip off prefix from the tail of the string, this happens when
- # portage is called from within ebuilds or eclasses
- prefix = portage_const.EPREFIX.rstrip(os.sep) + os.sep
- if root.endswith(prefix):
- root = root[0:-len(prefix)] + os.sep
- os.environ["ROOT"] = root
-else:
- root = "/"