diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-03-02 22:59:59 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-03-02 22:59:59 +0000 |
commit | 8fd947cb95f0d9a7b517e5d2feb7bda5b9417c86 (patch) | |
tree | 4f95fb4fb4dd03391e72eda6a97e01dbd1137c3c /pym/_emerge/__init__.py | |
parent | 3b9d1a472ee364ebb5be3bf4383a37aef257a552 (diff) | |
download | portage-8fd947cb95f0d9a7b517e5d2feb7bda5b9417c86.tar.gz portage-8fd947cb95f0d9a7b517e5d2feb7bda5b9417c86.tar.bz2 portage-8fd947cb95f0d9a7b517e5d2feb7bda5b9417c86.zip |
When ACCEPT_CHOSTS is set, enable CHOST masking for unbuilt ebuilds. This
behaves as a sanity check to protect people who are cross-compiling from
accidentally merging an ebuild with CHOST set incorrectly. Thanks to Ned
Ludd <solar@g.o> for reporting the problem.
svn path=/main/trunk/; revision=12741
Diffstat (limited to 'pym/_emerge/__init__.py')
-rw-r--r-- | pym/_emerge/__init__.py | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index eb6ea9a35..0f15e416a 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -1387,8 +1387,8 @@ def visible(pkgsettings, pkg): """ if not pkg.metadata["SLOT"]: return False - if pkg.built and not pkg.installed and "CHOST" in pkg.metadata: - if not pkgsettings._accept_chost(pkg): + if not pkg.installed: + if not pkgsettings._accept_chost(pkg.cpv, pkg.metadata): return False eapi = pkg.metadata["EAPI"] if not portage.eapi_is_supported(eapi): @@ -1415,8 +1415,8 @@ def get_masking_status(pkg, pkgsettings, root_config): pkg, settings=pkgsettings, portdb=root_config.trees["porttree"].dbapi) - if pkg.built and not pkg.installed and "CHOST" in pkg.metadata: - if not pkgsettings._accept_chost(pkg): + if not pkg.installed: + if not pkgsettings._accept_chost(pkg.cpv, pkg.metadata): mreasons.append("CHOST: %s" % \ pkg.metadata["CHOST"]) @@ -1436,6 +1436,7 @@ def get_mask_info(root_config, cpv, pkgsettings, if metadata and not built: pkgsettings.setcpv(cpv, mydb=metadata) metadata["USE"] = pkgsettings["PORTAGE_USE"] + metadata['CHOST'] = pkgsettings.get('CHOST', '') if metadata is None: mreasons = ["corruption"] else: @@ -5468,6 +5469,7 @@ class depgraph(object): cpv=mykey, metadata=metadata, onlydeps=onlydeps) pkgsettings.setcpv(pkg) pkg.metadata["USE"] = pkgsettings["PORTAGE_USE"] + pkg.metadata['CHOST'] = pkgsettings.get('CHOST', '') self._pkg_cache[pkg] = pkg args.append(PackageArg(arg=x, package=pkg, root_config=root_config)) @@ -6188,6 +6190,8 @@ class depgraph(object): onlydeps=onlydeps, root_config=root_config, type_name=pkg_type) metadata = pkg.metadata + if not built: + metadata['CHOST'] = pkgsettings.get('CHOST', '') if not built and ("?" in metadata["LICENSE"] or \ "?" in metadata["PROVIDE"]): # This is avoided whenever possible because @@ -6521,6 +6525,7 @@ class depgraph(object): settings = self.pkgsettings[root_config.root] settings.setcpv(pkg) pkg.metadata["USE"] = settings["PORTAGE_USE"] + pkg.metadata['CHOST'] = settings.get('CHOST', '') self._pkg_cache[pkg] = pkg return pkg @@ -8696,6 +8701,7 @@ class depgraph(object): pkgsettings = self.pkgsettings[myroot] pkgsettings.setcpv(pkg) pkg.metadata["USE"] = pkgsettings["PORTAGE_USE"] + pkg.metadata['CHOST'] = pkgsettings.get('CHOST', '') self._pkg_cache[pkg] = pkg root_config = self.roots[pkg.root] @@ -11439,6 +11445,7 @@ class Scheduler(PollScheduler): settings = self.pkgsettings[root_config.root] settings.setcpv(pkg) pkg.metadata["USE"] = settings["PORTAGE_USE"] + pkg.metadata['CHOST'] = settings.get('CHOST', '') return pkg |