summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-06-29 22:41:55 +0000
committerZac Medico <zmedico@gentoo.org>2009-06-29 22:41:55 +0000
commit1bf54859b2be37e57543a303b99c2fdf9d79c90f (patch)
tree61c4bd0c5ee60663eeb3ae23dbd74cf1ca95bce7
parent58b226174843d6a39f9312427aa2d1aae322e9a1 (diff)
downloadportage-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.py12
-rw-r--r--pym/portage/__init__.py9
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: