diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-02-11 20:34:40 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-02-11 20:34:40 +0000 |
commit | 015b0fe3158f40fcb990a604ce82c62435452cd5 (patch) | |
tree | 4ba30a235d913c9a08dd98f060f1a648d90471e8 | |
parent | a9dba51d6cafe49348aff3e0c9dda705bd445eeb (diff) | |
download | portage-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
-rw-r--r-- | pym/_emerge/__init__.py | 13 |
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: |