From: Zac Medico Date: Wed, 11 Feb 2009 20:34:40 +0000 (-0000) Subject: Inside depgraph._select_atoms(), only trigger the circular dependency X-Git-Tag: v2.2_rc24~203 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=015b0fe3158f40fcb990a604ce82c62435452cd5;p=portage.git 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 for reporting this issue: http://archives.gentoo.org/gentoo-dev/msg_efce154d642fe6ede38d084a33c7f949.xml svn path=/main/trunk/; revision=12599 --- 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: