summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2010-03-02 20:13:56 +0000
committerZac Medico <zmedico@gentoo.org>2010-03-02 20:13:56 +0000
commit36905e4babe7d3587051e53579eadcbe0e2c4074 (patch)
tree856a30111c5b6ba935af6380ffc176245d2b1002 /pym
parenta2d1b29cd7e2c2b1167a9f6745c2765ffab128d8 (diff)
downloadportage-36905e4babe7d3587051e53579eadcbe0e2c4074.tar.gz
portage-36905e4babe7d3587051e53579eadcbe0e2c4074.tar.bz2
portage-36905e4babe7d3587051e53579eadcbe0e2c4074.zip
Evaluate USE conditionals when writing vdb entries after src_install.
(trunk r15348) svn path=/main/branches/2.1.7/; revision=15575
Diffstat (limited to 'pym')
-rw-r--r--pym/portage/__init__.py35
1 files changed, 30 insertions, 5 deletions
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py
index 9fc0963f1..5e52dac5c 100644
--- a/pym/portage/__init__.py
+++ b/pym/portage/__init__.py
@@ -1365,9 +1365,10 @@ class config(object):
virtuals ...etc you look in here.
"""
- _setcpv_aux_keys = ('SLOT', 'RESTRICT', 'LICENSE',
- 'KEYWORDS', 'INHERITED', 'IUSE', 'PROVIDE', 'EAPI',
- 'PROPERTIES', 'DEFINED_PHASES', 'repository')
+ _setcpv_aux_keys = ('DEFINED_PHASES', 'DEPEND', 'EAPI',
+ 'INHERITED', 'IUSE', 'KEYWORDS', 'LICENSE', 'PDEPEND',
+ 'PROPERTIES', 'PROVIDE', 'RDEPEND', 'SLOT', 'SRC_URI',
+ 'repository', 'RESTRICT', 'LICENSE',)
_env_blacklist = [
"A", "AA", "CATEGORY", "DEPEND", "DESCRIPTION", "EAPI",
@@ -5869,6 +5870,9 @@ def _post_src_install_chost_fix(settings):
write_atomic(os.path.join(settings['PORTAGE_BUILDDIR'],
'build-info', 'CHOST'), chost + '\n')
+_vdb_use_conditional_keys = ('DEPEND', 'LICENSE', 'PDEPEND',
+ 'PROPERTIES', 'PROVIDE', 'RDEPEND', 'RESTRICT', 'SRC_URI')
+
def _post_src_install_uid_fix(mysettings, out=None):
"""
Files in $D with user and group bits that match the "portage"
@@ -5971,8 +5975,29 @@ def _post_src_install_uid_fix(mysettings, out=None):
for l in _merge_unicode_error(unicode_errors):
eerror(l, phase='install', key=mysettings.mycpv, out=out)
- open(_unicode_encode(os.path.join(mysettings['PORTAGE_BUILDDIR'],
- 'build-info', 'SIZE')), 'w').write(str(size) + '\n')
+ build_info_dir = os.path.join(mysettings['PORTAGE_BUILDDIR'],
+ 'build-info')
+
+ codecs.open(_unicode_encode(os.path.join(build_info_dir,
+ 'SIZE'), encoding=_encodings['fs'], errors='strict'),
+ 'w', encoding=_encodings['repo.content'],
+ errors='strict').write(str(size) + '\n')
+
+ use = frozenset(mysettings['PORTAGE_USE'].split())
+ for k in _vdb_use_conditional_keys:
+ v = mysettings.configdict['pkg'].get(k)
+ if v is None:
+ continue
+ v = dep.paren_reduce(v)
+ v = dep.use_reduce(v, uselist=use)
+ v = dep.paren_normalize(v)
+ v = dep.paren_enclose(v)
+ if not v:
+ continue
+ codecs.open(_unicode_encode(os.path.join(build_info_dir,
+ k), encoding=_encodings['fs'], errors='strict'),
+ mode='w', encoding=_encodings['repo.content'],
+ errors='strict').write(v + '\n')
if bsd_chflags:
# Restore all of the flags saved above.