From e6be6590e99522f9be69e2af8eff87919d9bf31f Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sun, 14 Feb 2010 00:37:02 +0000 Subject: Evaluate conditional USE deps for *DEPEND atoms saved in vdb entries. svn path=/main/trunk/; revision=15351 --- pym/portage/__init__.py | 11 +++++++++++ pym/portage/dbapi/bintree.py | 10 ++++++++++ 2 files changed, 21 insertions(+) (limited to 'pym') diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index 2e688fa0e..d7f3a7fb3 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -5872,6 +5872,7 @@ def _post_src_install_chost_fix(settings): _vdb_use_conditional_keys = ('DEPEND', 'LICENSE', 'PDEPEND', 'PROPERTIES', 'PROVIDE', 'RDEPEND', 'RESTRICT',) +_vdb_use_conditional_atoms = frozenset(['DEPEND', 'PDEPEND', 'RDEPEND']) def _post_src_install_uid_fix(mysettings, out=None): """ @@ -5994,6 +5995,16 @@ def _post_src_install_uid_fix(mysettings, out=None): v = dep.paren_enclose(v) if not v: continue + if v in _vdb_use_conditional_atoms: + v_split = [] + for x in v.split(): + try: + x = dep.Atom(x) + except exception.InvalidAtom: + v_split.append(x) + else: + v_split.append(str(x.evaluate_conditionals(use))) + v = ' '.join(v_split) codecs.open(_unicode_encode(os.path.join(build_info_dir, k), encoding=_encodings['fs'], errors='strict'), mode='w', encoding=_encodings['repo.content'], diff --git a/pym/portage/dbapi/bintree.py b/pym/portage/dbapi/bintree.py index e07f58a47..ecc8424c0 100644 --- a/pym/portage/dbapi/bintree.py +++ b/pym/portage/dbapi/bintree.py @@ -1049,6 +1049,16 @@ class binarytree(object): writemsg("%s: %s\n" % (k, str(e)), noiselevel=-1) raise + if k in portage._vdb_use_conditional_atoms: + v_split = [] + for x in deps.split(): + try: + x = portage.dep.Atom(x) + except portage.exception.InvalidAtom: + v_split.append(x) + else: + v_split.append(str(x.evaluate_conditionals(raw_use))) + deps = ' '.join(v_split) metadata[k] = deps def exists_specific(self, cpv): -- cgit v1.2.3-1-g7c22