diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-03-11 06:34:01 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-03-11 06:34:01 +0000 |
commit | b4b0b543c4fdbdd8fe8c1ece31e0145e7eb52d48 (patch) | |
tree | 8d76f195893826f2d968ae05e1e9e603cfa1862d /pym/_emerge | |
parent | ab74771b93fa6e47c39e4dcea57a06b47aea0f83 (diff) | |
download | portage-b4b0b543c4fdbdd8fe8c1ece31e0145e7eb52d48.tar.gz portage-b4b0b543c4fdbdd8fe8c1ece31e0145e7eb52d48.tar.bz2 portage-b4b0b543c4fdbdd8fe8c1ece31e0145e7eb52d48.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. (trunk r12741)
svn path=/main/branches/2.1.6/; revision=12990
Diffstat (limited to 'pym/_emerge')
-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 9173d58bb..94dc3f465 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -1368,8 +1368,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): @@ -1396,8 +1396,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"]) @@ -1417,6 +1417,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: @@ -5452,6 +5453,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)) @@ -6172,6 +6174,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 @@ -6505,6 +6509,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 @@ -8680,6 +8685,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] @@ -11423,6 +11429,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 |