summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-01-09 11:19:07 +0000
committerZac Medico <zmedico@gentoo.org>2009-01-09 11:19:07 +0000
commit1a9726b31cc0326ede10a45b02294931d1db7473 (patch)
treea5367a5884f593c245e336f02d909411a2568ad1
parent6afefabfb5f442a6844cf60664bf0516f661106d (diff)
downloadportage-1a9726b31cc0326ede10a45b02294931d1db7473.tar.gz
portage-1a9726b31cc0326ede10a45b02294931d1db7473.tar.bz2
portage-1a9726b31cc0326ede10a45b02294931d1db7473.zip
Make die() to show a message indicating the repository that an ebuild came
from, and do it during any phase for both ebuilds and binary packages. Now PORTAGE_REPO_NAME is initialized inside config.setcpv() for both ebuilds and binary packages, so it's always available inside ebuild.sh. svn path=/main/trunk/; revision=12402
-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 8b7143c16..c2bc09acc 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -2521,9 +2521,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
@@ -3206,6 +3205,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 2c8072878..f5207b8b2 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 = []
@@ -1921,8 +1921,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)
@@ -4761,17 +4765,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