From fa9e85bbe7c513193756a2d13ce63a609138753d Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Wed, 29 Jun 2011 21:13:20 -0700 Subject: ebuild(1): pass Package instance to setcpv This should improve repo-level support, for bug #370693. --- bin/ebuild | 22 +++++++++++++++++++--- 1 file 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 \ -- cgit v1.2.3-1-g7c22