diff options
author | Zac Medico <zmedico@gentoo.org> | 2012-03-19 10:00:38 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2012-03-19 10:00:38 -0700 |
commit | 3ca5f0cc08d233a3e229e78b573c7aab7d46cb9c (patch) | |
tree | 0b9c26bc5e5caa4aae73f22758323debef0bfc0a | |
parent | 884993c7f4b9e7e9ede690f5fab81742915fc942 (diff) | |
download | portage-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.py | 20 |
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"] |