diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-06-29 21:13:20 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-06-29 21:13:20 -0700 |
commit | fa9e85bbe7c513193756a2d13ce63a609138753d (patch) | |
tree | bda5e7494853a8889c058987f3a5d468f3e0ffcd | |
parent | cad462a63a79438f1666b41a61631de2de4a6163 (diff) | |
download | portage-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.
-rwxr-xr-x | bin/ebuild | 22 |
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 \ |