summaryrefslogtreecommitdiffstats
path: root/pym/_emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-03-11 06:34:01 +0000
committerZac Medico <zmedico@gentoo.org>2009-03-11 06:34:01 +0000
commitb4b0b543c4fdbdd8fe8c1ece31e0145e7eb52d48 (patch)
tree8d76f195893826f2d968ae05e1e9e603cfa1862d /pym/_emerge
parentab74771b93fa6e47c39e4dcea57a06b47aea0f83 (diff)
downloadportage-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__.py15
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