summaryrefslogtreecommitdiffstats
path: root/bin/ebuild
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-06-29 21:13:20 -0700
committerZac Medico <zmedico@gentoo.org>2011-06-29 21:13:20 -0700
commitfa9e85bbe7c513193756a2d13ce63a609138753d (patch)
treebda5e7494853a8889c058987f3a5d468f3e0ffcd /bin/ebuild
parentcad462a63a79438f1666b41a61631de2de4a6163 (diff)
downloadportage-fa9e85bbe7c513193756a2d13ce63a609138753d.tar.gz
portage-fa9e85bbe7c513193756a2d13ce63a609138753d.tar.bz2
portage-fa9e85bbe7c513193756a2d13ce63a609138753d.zip
ebuild(1): pass Package instance to setcpv
This should improve repo-level support, for bug #370693.
Diffstat (limited to 'bin/ebuild')
-rwxr-xr-xbin/ebuild22
1 files changed, 19 insertions, 3 deletions
diff --git a/bin/ebuild b/bin/ebuild
index 9ad17e83d..68e52e3ed 100755
--- a/bin/ebuild
+++ b/bin/ebuild
@@ -76,6 +76,8 @@ from portage import _shell_quote
from portage import _unicode_decode
from portage import _unicode_encode
from portage.const import VDB_PATH
+from _emerge.Package import Package
+from _emerge.RootConfig import RootConfig
if not opts.ignore_default_opts:
default_opts = portage.settings.get("EBUILD_DEFAULT_OPTS", "").split()
@@ -171,6 +173,7 @@ if not portage.catpkgsplit(cpv):
if ebuild.startswith(vdb_path):
mytree = "vartree"
+ pkg_type = "installed"
portage_ebuild = portage.db[portage.root][mytree].dbapi.findname(cpv, myrepo=myrepo)
@@ -180,6 +183,7 @@ if ebuild.startswith(vdb_path):
else:
mytree = "porttree"
+ pkg_type = "ebuild"
portage_ebuild = portage.portdb.findname(cpv, myrepo=myrepo)
@@ -253,14 +257,26 @@ if "test" in pargs:
tmpsettings.features.discard("fail-clean")
-# Apply package.env settings. This allows per-package FEATURES and other
-# variables (possibly PORTAGE_TMPDIR) to be available as soon as possible.
try:
- tmpsettings.setcpv(cpv, mydb=portage.db[portage.root][mytree].dbapi)
+ metadata = dict(zip(Package.metadata_keys,
+ portage.db[portage.settings["ROOT"]][mytree].dbapi.aux_get(
+ cpv, Package.metadata_keys)))
except KeyError:
# aux_get failure, message should have been shown on stderr.
sys.exit(1)
+root_config = RootConfig(portage.settings,
+ portage.db[portage.settings["ROOT"]], None)
+
+pkg = Package(built=(pkg_type != "ebuild"), cpv=cpv,
+ metadata=metadata, root_config=root_config,
+ type_name=pkg_type)
+
+# Apply package.env and repo-level settings. This allows per-package
+# FEATURES and other variables (possibly PORTAGE_TMPDIR) to be
+# available as soon as possible.
+tmpsettings.setcpv(pkg)
+
def stale_env_warning():
if "clean" not in pargs and \
"noauto" not in tmpsettings.features and \