summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-04-05 05:56:16 +0000
committerZac Medico <zmedico@gentoo.org>2009-04-05 05:56:16 +0000
commit1ad3342b49e9d488a9beba86ea7096c68c6b1f44 (patch)
treec29d18a9a326b839beeedd1437b51a0ede90986c
parentAdd an example for PORTAGE_IONICE_COMMAND. Thanks to Vlastimil Babka (diff)
downloadportage-multirepo-1ad3342b49e9d488a9beba86ea7096c68c6b1f44.tar.gz
portage-multirepo-1ad3342b49e9d488a9beba86ea7096c68c6b1f44.tar.bz2
portage-multirepo-1ad3342b49e9d488a9beba86ea7096c68c6b1f44.zip
Bug #262647 - Inside config.setcpv(), never add SRC_URI to the environment
since that can cause execve() calls to fail with E2BIG errors. svn path=/main/trunk/; revision=13290
-rw-r--r--pym/portage/__init__.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py
index 844fd643..f549ad5c 100644
--- a/pym/portage/__init__.py
+++ b/pym/portage/__init__.py
@@ -998,6 +998,13 @@ class config(object):
virtuals ...etc you look in here.
"""
+ # Don't include anything that could be extremely long here (like SRC_URI)
+ # since that could cause execve() calls to fail with E2BIG errors. For
+ # example, see bug #262647.
+ _setcpv_aux_keys = ('SLOT', 'RESTRICT', 'LICENSE',
+ 'KEYWORDS', 'INHERITED', 'IUSE', 'PROVIDE', 'EAPI',
+ 'PROPERTIES', 'DEFINED_PHASES', 'repository')
+
_env_blacklist = [
"A", "AA", "CATEGORY", "DEPEND", "DESCRIPTION", "EAPI",
"EBUILD_PHASE", "EMERGE_FROM", "HOMEPAGE", "INHERITED", "IUSE",
@@ -2110,9 +2117,7 @@ class config(object):
pkg_configdict = self.configdict["pkg"]
previous_iuse = pkg_configdict.get("IUSE")
- aux_keys = [k for k in auxdbkeys \
- if not k.startswith("UNUSED_")]
- aux_keys.append("repository")
+ aux_keys = self._setcpv_aux_keys
# Discard any existing metadata from the previous package, but
# preserve things like USE_EXPAND values and PORTAGE_USE which
@@ -2124,7 +2129,8 @@ class config(object):
pkg_configdict["PF"] = pf
if mydb:
if not hasattr(mydb, "aux_get"):
- pkg_configdict.update(mydb)
+ for k in aux_keys:
+ pkg_configdict[k] = mydb.get(k, '')
else:
for k, v in izip(aux_keys, mydb.aux_get(self.mycpv, aux_keys)):
pkg_configdict[k] = v