From bb85dfca12bec291d8a982aca48ea144469ff1cc Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sun, 30 Mar 2008 02:13:19 +0000 Subject: For bugs #197810 and #215308, pass the depgraph's "selective" parameter down into dep_check() for better atom preference selection when handling virtuals and other disjunctive || dependencies. (branches/2.1.2 r9610) svn path=/main/trunk/; revision=9611 --- pym/_emerge/__init__.py | 2 ++ pym/portage/__init__.py | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index d03a2eacb..328b7f1e9 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -2484,12 +2484,14 @@ class depgraph(object): myuse=myuse, strict=strict) if True: try: + self.trees[root]["selective"] = "selective" in self.myparams if not strict: portage.dep._dep_check_strict = False mycheck = portage.dep_check(depstring, None, pkgsettings, myuse=myuse, myroot=root, trees=trees) finally: + self.trees[root]["selective"] = False portage.dep._dep_check_strict = True if not mycheck[0]: raise portage.exception.InvalidDependString(mycheck[1]) diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index 745ecb38c..9407d2a90 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -5315,6 +5315,7 @@ def dep_zapdeps(unreduced, reduced, myroot, use_binaries=0, trees=None): if trees is None: global db trees = db + selective = trees[myroot].get("selective", False) writemsg("ZapDeps -- %s\n" % (use_binaries), 2) if not reduced or unreduced == ["||"] or dep_eval(reduced): return [] @@ -5378,7 +5379,7 @@ def dep_zapdeps(unreduced, reduced, myroot, use_binaries=0, trees=None): has_mask = False if hasattr(mydbapi, "xmatch"): has_mask = bool(mydbapi.xmatch("match-all", atom)) - if (use_binaries or not has_mask): + if (selective or use_binaries or not has_mask): avail_pkg = best(vardb.match(atom)) if avail_pkg: avail_slot = "%s:%s" % (dep_getkey(atom), -- cgit v1.2.3-1-g7c22