diff options
author | Zac Medico <zmedico@gentoo.org> | 2010-12-19 09:57:18 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2010-12-19 10:04:06 -0800 |
commit | 86a0cceea7b7a320bc5131ba77f07d041259bfac (patch) | |
tree | 338b780bd8d1c2cf7d79d30d6daa709d41470440 | |
parent | 83dc26cd9043ef86d85c920ba6bf77d9652cc14c (diff) | |
download | portage-86a0cceea7b7a320bc5131ba77f07d041259bfac.tar.gz portage-86a0cceea7b7a320bc5131ba77f07d041259bfac.tar.bz2 portage-86a0cceea7b7a320bc5131ba77f07d041259bfac.zip |
paren_enclose: preserve atom USE conditionals
The depgraph sometimes uses paren_enclose to temporarily convert parts
of use_reduce output to a plain string. In these cases, we want to
preserve atom USE conditionals, since these sometimes make a difference
for IUSE checks during package matching (as in bug #348389).
-rw-r--r-- | pym/_emerge/depgraph.py | 6 | ||||
-rw-r--r-- | pym/portage/dep/__init__.py | 4 |
2 files changed, 7 insertions, 3 deletions
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index 8462c0d62..6f200649e 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -1206,7 +1206,8 @@ class depgraph(object): if not dep_string: continue - dep_string = portage.dep.paren_enclose(dep_string) + dep_string = portage.dep.paren_enclose(dep_string, + unevaluated_atom=True) if not self._add_pkg_dep_string( pkg, dep_root, dep_priority, dep_string, @@ -1482,7 +1483,8 @@ class depgraph(object): """ pkg, dep_root, dep_priority, dep_struct = \ self._dynamic_config._dep_disjunctive_stack.pop() - dep_string = portage.dep.paren_enclose(dep_struct) + dep_string = portage.dep.paren_enclose(dep_struct, + unevaluated_atom=True) if not self._add_pkg_dep_string( pkg, dep_root, dep_priority, dep_string, allow_unsatisfied): return 0 diff --git a/pym/portage/dep/__init__.py b/pym/portage/dep/__init__.py index 52009fea3..10f6d8234 100644 --- a/pym/portage/dep/__init__.py +++ b/pym/portage/dep/__init__.py @@ -232,7 +232,7 @@ class paren_normalize(list): self._zap_parens(x, dest) return dest -def paren_enclose(mylist): +def paren_enclose(mylist, unevaluated_atom=False): """ Convert a list to a string with sublists enclosed with parens. @@ -251,6 +251,8 @@ def paren_enclose(mylist): if isinstance(x, list): mystrparts.append("( "+paren_enclose(x)+" )") else: + if unevaluated_atom: + x = getattr(x, 'unevaluated_atom', x) mystrparts.append(x) return " ".join(mystrparts) |