summaryrefslogtreecommitdiffstats
path: root/pym/portage/package/ebuild/_config
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2010-08-30 20:55:11 -0700
committerZac Medico <zmedico@gentoo.org>2010-08-30 20:55:11 -0700
commit50daef1ab961c42a3352281e915da5a89297e3a9 (patch)
tree8396db45ae2ec7ba70067f9b20c2ffedf92a9939 /pym/portage/package/ebuild/_config
parent74c61b80af137fea93e5cbe7b59567812bb92d5c (diff)
downloadportage-50daef1ab961c42a3352281e915da5a89297e3a9.tar.gz
portage-50daef1ab961c42a3352281e915da5a89297e3a9.tar.bz2
portage-50daef1ab961c42a3352281e915da5a89297e3a9.zip
Bug #335340 - Add support for PORTAGE_BZIP2_COMMAND and
PORTAGE_BUNZIP2_COMMAND settings in make.conf. This only adds support for binary packages, since that's where pbzip2 can provide the most benefit in common cases.
Diffstat (limited to 'pym/portage/package/ebuild/_config')
-rw-r--r--pym/portage/package/ebuild/_config/env_var_validation.py23
-rw-r--r--pym/portage/package/ebuild/_config/special_env_vars.py14
2 files changed, 32 insertions, 5 deletions
diff --git a/pym/portage/package/ebuild/_config/env_var_validation.py b/pym/portage/package/ebuild/_config/env_var_validation.py
new file mode 100644
index 000000000..d3db545cb
--- /dev/null
+++ b/pym/portage/package/ebuild/_config/env_var_validation.py
@@ -0,0 +1,23 @@
+# Copyright 2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+from portage import os
+from portage.process import find_binary
+from portage.util import shlex_split
+
+def validate_cmd_var(v):
+ """
+ Validate an evironment variable value to see if it
+ contains an executable command as the first token.
+ returns (valid, token_list) where 'valid' is boolean and 'token_list'
+ is the (possibly empty) list of tokens split by shlex.
+ """
+ invalid = False
+ v_split = shlex_split(v)
+ if not v_split:
+ invalid = True
+ elif os.path.isabs(v_split[0]):
+ invalid = not os.access(v_split[0], os.EX_OK)
+ elif find_binary(v_split[0]) is None:
+ invalid = True
+ return (not invalid, v_split)
diff --git a/pym/portage/package/ebuild/_config/special_env_vars.py b/pym/portage/package/ebuild/_config/special_env_vars.py
index 2a515dd0d..4a29b1446 100644
--- a/pym/portage/package/ebuild/_config/special_env_vars.py
+++ b/pym/portage/package/ebuild/_config/special_env_vars.py
@@ -43,7 +43,8 @@ environ_whitelist += [
"PORTAGE_BINPKG_FILE", "PORTAGE_BINPKG_TAR_OPTS",
"PORTAGE_BINPKG_TMPFILE",
"PORTAGE_BIN_PATH",
- "PORTAGE_BUILDDIR", "PORTAGE_COLORMAP",
+ "PORTAGE_BUILDDIR", "PORTAGE_BUNZIP2_COMMAND", "PORTAGE_BZIP2_COMMAND",
+ "PORTAGE_COLORMAP",
"PORTAGE_CONFIGROOT", "PORTAGE_DEBUG", "PORTAGE_DEPCACHEDIR",
"PORTAGE_EBUILD_EXIT_FILE", "PORTAGE_FEATURES",
"PORTAGE_GID", "PORTAGE_GRPNAME",
@@ -152,10 +153,13 @@ environ_filter += [
environ_filter = frozenset(environ_filter)
-default_globals = (
- ('ACCEPT_LICENSE', '* -@EULA'),
- ('ACCEPT_PROPERTIES', '*'),
-)
+default_globals = {
+ 'ACCEPT_LICENSE': '* -@EULA',
+ 'ACCEPT_PROPERTIES': '*',
+ 'PORTAGE_BZIP2_COMMAND': 'bzip2',
+}
+
+validate_commands = ('PORTAGE_BZIP2_COMMAND', 'PORTAGE_BUNZIP2_COMMAND',)
# To enhance usability, make some vars case insensitive
# by forcing them to lower case.