diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-06-29 22:41:55 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-06-29 22:41:55 +0000 |
commit | 1bf54859b2be37e57543a303b99c2fdf9d79c90f (patch) | |
tree | 61c4bd0c5ee60663eeb3ae23dbd74cf1ca95bce7 | |
parent | 58b226174843d6a39f9312427aa2d1aae322e9a1 (diff) | |
download | portage-1bf54859b2be37e57543a303b99c2fdf9d79c90f.tar.gz portage-1bf54859b2be37e57543a303b99c2fdf9d79c90f.tar.bz2 portage-1bf54859b2be37e57543a303b99c2fdf9d79c90f.zip |
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
-rw-r--r-- | pym/_emerge/depgraph.py | 12 | ||||
-rw-r--r-- | pym/portage/__init__.py | 9 |
2 files changed, 10 insertions, 11 deletions
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: |