summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/isolated-functions.sh14
-rw-r--r--pym/_emerge/__init__.py6
-rw-r--r--pym/portage/__init__.py17
3 files changed, 21 insertions, 16 deletions
diff --git a/bin/isolated-functions.sh b/bin/isolated-functions.sh
index 9ed933c02..e418bdde6 100755
--- a/bin/isolated-functions.sh
+++ b/bin/isolated-functions.sh
@@ -123,7 +123,19 @@ die() {
local overlay=${EBUILD%/*}
overlay=${overlay%/*}
overlay=${overlay%/*}
- eerror "This ebuild is from an overlay: '${overlay}/'"
+ if [[ -n $PORTAGE_REPO_NAME ]] ; then
+ eerror "This ebuild is from an overlay named" \
+ "'$PORTAGE_REPO_NAME': '${overlay}/'"
+ else
+ eerror "This ebuild is from an overlay: '${overlay}/'"
+ fi
+ elif [[ -n $PORTAGE_REPO_NAME && -f "$PORTDIR"/profiles/repo_name ]] ; then
+ local portdir_repo_name=$(<"$PORTDIR"/profiles/repo_name)
+ if [[ -n $portdir_repo_name && \
+ $portdir_repo_name != $PORTAGE_REPO_NAME ]] ; then
+ eerror "This ebuild is from a repository" \
+ "named '$PORTAGE_REPO_NAME'"
+ fi
fi
eerror
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index 373979b23..dbdd64600 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -2502,9 +2502,8 @@ class EbuildBuild(CompositeTask):
tree = "porttree"
self._tree = tree
portdb = root_config.trees[tree].dbapi
- settings["EMERGE_FROM"] = pkg.type_name
- settings.backup_changes("EMERGE_FROM")
- settings.reset()
+ settings.setcpv(pkg)
+ settings.configdict["pkg"]["EMERGE_FROM"] = pkg.type_name
ebuild_path = portdb.findname(self.pkg.cpv)
self._ebuild_path = ebuild_path
@@ -3187,6 +3186,7 @@ class Binpkg(CompositeTask):
debug = settings.get("PORTAGE_DEBUG") == "1"
portage.doebuild_environment(self._ebuild_path, "setup",
settings["ROOT"], settings, debug, 1, self._bintree.dbapi)
+ settings.configdict["pkg"]["EMERGE_FROM"] = pkg.type_name
# The prefetcher has already completed or it
# could be running now. If it's running now,
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py
index db6ce822f..e3bc6105f 100644
--- a/pym/portage/__init__.py
+++ b/pym/portage/__init__.py
@@ -917,7 +917,7 @@ class config(object):
_env_blacklist = [
"A", "AA", "CATEGORY", "EBUILD_PHASE", "EMERGE_FROM",
"PF", "PKGUSE", "PORTAGE_CONFIGROOT", "PORTAGE_IUSE",
- "PORTAGE_USE", "ROOT"
+ "PORTAGE_REPO_NAME", "PORTAGE_USE", "ROOT"
]
_environ_whitelist = []
@@ -1911,8 +1911,12 @@ class config(object):
else:
aux_keys = [k for k in auxdbkeys \
if not k.startswith("UNUSED_")]
+ aux_keys.append("repository")
for k, v in izip(aux_keys, mydb.aux_get(self.mycpv, aux_keys)):
pkg_configdict[k] = v
+ repository = pkg_configdict.pop("repository", None)
+ if repository is not None:
+ pkg_configdict["PORTAGE_REPO_NAME"] = repository
for k in pkg_configdict:
if k != "USE":
env_configdict.pop(k, None)
@@ -4751,17 +4755,6 @@ def doebuild_environment(myebuild, mydo, myroot, mysettings, debug, use_cache, m
mysettings["ROOT"] = myroot
mysettings["STARTDIR"] = getcwd()
-
- mysettings["PORTAGE_REPO_NAME"] = ""
- # bindbapi has no getRepositories() method
- if mydbapi and hasattr(mydbapi, "getRepositories"):
- # do we have a origin repository name for the current package
- repopath = os.sep.join(pkg_dir.split(os.path.sep)[:-2])
- for reponame in mydbapi.getRepositories():
- if mydbapi.getRepositoryPath(reponame) == repopath:
- mysettings["PORTAGE_REPO_NAME"] = reponame
- break
-
mysettings["EBUILD"] = ebuild_path
mysettings["O"] = pkg_dir
mysettings.configdict["pkg"]["CATEGORY"] = cat