summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-02-11 20:34:40 +0000
committerZac Medico <zmedico@gentoo.org>2009-02-11 20:34:40 +0000
commit015b0fe3158f40fcb990a604ce82c62435452cd5 (patch)
tree4ba30a235d913c9a08dd98f060f1a648d90471e8 /pym
parenta9dba51d6cafe49348aff3e0c9dda705bd445eeb (diff)
downloadportage-015b0fe3158f40fcb990a604ce82c62435452cd5.tar.gz
portage-015b0fe3158f40fcb990a604ce82c62435452cd5.tar.bz2
portage-015b0fe3158f40fcb990a604ce82c62435452cd5.zip
Inside depgraph._select_atoms(), only trigger the circular dependency
avoidance code for buildtime dependencies. This solves a problem with virtual/mysql inappropriately pulling in mysql-community from PDEPEND when satisfying deps of plain mysql. Thanks to Krzysiek Pawlik <nelchael@g.o> for reporting this issue: http://archives.gentoo.org/gentoo-dev/msg_efce154d642fe6ede38d084a33c7f949.xml svn path=/main/trunk/; revision=12599
Diffstat (limited to 'pym')
-rw-r--r--pym/_emerge/__init__.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index cbd46b1d4..a6d9ec257 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -5118,7 +5118,8 @@ class depgraph(object):
vardb = self.roots[dep_root].trees["vartree"].dbapi
try:
selected_atoms = self._select_atoms(dep_root,
- dep_string, myuse=myuse, parent=pkg, strict=strict)
+ dep_string, myuse=myuse, parent=pkg, strict=strict,
+ priority=dep_priority)
except portage.exception.InvalidDependString, e:
show_invalid_depstring_notice(jbigkey, dep_string, str(e))
return 0
@@ -5751,12 +5752,20 @@ class depgraph(object):
return self._select_atoms_highest_available(*pargs, **kwargs)
def _select_atoms_highest_available(self, root, depstring,
- myuse=None, parent=None, strict=True, trees=None):
+ myuse=None, parent=None, strict=True, trees=None, priority=None):
"""This will raise InvalidDependString if necessary. If trees is
None then self._filtered_trees is used."""
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: