summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-03-19 10:00:38 -0700
committerZac Medico <zmedico@gentoo.org>2012-03-19 10:00:38 -0700
commit3ca5f0cc08d233a3e229e78b573c7aab7d46cb9c (patch)
tree0b9c26bc5e5caa4aae73f22758323debef0bfc0a
parent884993c7f4b9e7e9ede690f5fab81742915fc942 (diff)
downloadportage-3ca5f0cc08d233a3e229e78b573c7aab7d46cb9c.tar.gz
portage-3ca5f0cc08d233a3e229e78b573c7aab7d46cb9c.tar.bz2
portage-3ca5f0cc08d233a3e229e78b573c7aab7d46cb9c.zip
doebuild_environment: sanity check for bug 408817
Ensure that CATEGORY is determined correctly, and raise AssertionError if it can't be determined.
-rw-r--r--pym/portage/package/ebuild/doebuild.py20
1 files changed, 12 insertions, 8 deletions
diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package/ebuild/doebuild.py
index 31ecf8cdd..56de55441 100644
--- a/pym/portage/package/ebuild/doebuild.py
+++ b/pym/portage/package/ebuild/doebuild.py
@@ -174,20 +174,24 @@ def doebuild_environment(myebuild, mydo, myroot=None, settings=None,
ebuild_path = os.path.abspath(myebuild)
pkg_dir = os.path.dirname(ebuild_path)
mytree = os.path.dirname(os.path.dirname(pkg_dir))
-
- if "CATEGORY" in mysettings.configdict["pkg"]:
- cat = mysettings.configdict["pkg"]["CATEGORY"]
- else:
- cat = os.path.basename(normalize_path(os.path.join(pkg_dir, "..")))
-
mypv = os.path.basename(ebuild_path)[:-7]
-
- mycpv = cat+"/"+mypv
mysplit = _pkgsplit(mypv)
if mysplit is None:
raise IncorrectParameter(
_("Invalid ebuild path: '%s'") % myebuild)
+ if mysettings.mycpv is not None and \
+ mysettings.configdict["pkg"].get("PF") == mypv and \
+ "CATEGORY" in mysettings.configdict["pkg"]:
+ cat = mysettings.configdict["pkg"]["CATEGORY"]
+ mycpv = mysettings.mycpv
+ elif os.path.basename(pkg_dir) in (mysplit[0], mypv):
+ # portdbapi or vardbapi
+ cat = os.path.basename(os.path.dirname(pkg_dir))
+ mycpv = cat + "/" + mypv
+ else:
+ raise AssertionError("unable to determine CATEGORY")
+
# Make a backup of PORTAGE_TMPDIR prior to calling config.reset()
# so that the caller can override it.
tmpdir = mysettings["PORTAGE_TMPDIR"]