From 1ad3342b49e9d488a9beba86ea7096c68c6b1f44 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sun, 5 Apr 2009 05:56:16 +0000 Subject: 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 --- pym/portage/__init__.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'pym') diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index 844fd643f..f549ad5c1 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 -- cgit v1.2.3-1-g7c22