From 1bf54859b2be37e57543a303b99c2fdf9d79c90f Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Mon, 29 Jun 2009 22:41:55 +0000 Subject: Move code from bug #258773 to dep_zapdeps, since the parent always needs to be passed in for atom validation in order to solve bug #275821. svn path=/main/trunk/; revision=13735 --- pym/_emerge/depgraph.py | 12 ++++-------- pym/portage/__init__.py | 9 ++++++--- 2 files changed, 10 insertions(+), 11 deletions(-) (limited to 'pym') diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index bb0f4da3b..25e385521 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -1593,18 +1593,12 @@ class depgraph(object): pkgsettings = self.pkgsettings[root] if trees is None: trees = self._filtered_trees - if not getattr(priority, "buildtime", False): - # The parent should only be passed to dep_check() for buildtime - # dependencies since that's the only case when it's appropriate - # to trigger the circular dependency avoidance code which uses it. - # It's important not to trigger the same circular dependency - # avoidance code for runtime dependencies since it's not needed - # and it can promote an incorrect package choice. - parent = None if True: try: if parent is not None: trees[root]["parent"] = parent + if priority is not None: + trees[root]["priority"] = priority if not strict: portage.dep._dep_check_strict = False mycheck = portage.dep_check(depstring, None, @@ -1613,6 +1607,8 @@ class depgraph(object): finally: if parent is not None: trees[root].pop("parent") + if priority is not None: + trees[root].pop("priority") 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 6a8b401f4..d14456565 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -7058,6 +7058,7 @@ def dep_zapdeps(unreduced, reduced, myroot, use_binaries=0, trees=None): # Alias the trees we'll be checking availability against parent = trees[myroot].get("parent") + priority = trees[myroot].get("priority") graph_db = trees[myroot].get("graph_db") vardb = None if "vartree" in trees[myroot]: @@ -7134,12 +7135,14 @@ def dep_zapdeps(unreduced, reduced, myroot, use_binaries=0, trees=None): all_in_graph = False break if all_in_graph: - if parent is None: + if parent is None or priority is None: preferred_not_installed.append(this_choice) - else: + elif priority.buildtime: # Check if the atom would result in a direct circular # dependency and try to avoid that if it seems likely - # to be unresolvable. + # to be unresolvable. This is only relevant for + # buildtime deps that aren't already satisfied by an + # installed package. cpv_slot_list = [parent] circular_atom = None for atom in atoms: -- cgit v1.2.3-1-g7c22