From 9fd1b8775135485566749b78f24dfac2c26119ea Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Tue, 24 Apr 2007 06:58:16 +0000 Subject: For bug #175781, add a higher preference priority for choices where all matching slots are installed (not just any slot). (trunk r6431:6432) svn path=/main/branches/2.1.2/; revision=6433 --- pym/portage.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'pym') diff --git a/pym/portage.py b/pym/portage.py index 97a942f37..ab5e984c1 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -4156,6 +4156,7 @@ def dep_zapdeps(unreduced, reduced, myroot, use_binaries=0, trees=None): # d) is the first item preferred = [] + preferred_any_slot = [] possible_upgrades = [] other = [] @@ -4209,8 +4210,20 @@ def dep_zapdeps(unreduced, reduced, myroot, use_binaries=0, trees=None): if not vardb.match(atom) and not atom.startswith("virtual/"): all_installed = False break + all_installed_slots = False if all_installed: - preferred.append(this_choice) + all_installed_slots = True + for slot_atom in versions: + # New-style virtuals have zero cost to install. + if not vardb.match(slot_atom) and \ + not slot_atom.startswith("virtual/"): + all_installed_slots = False + break + if all_installed: + if all_installed_slots: + preferred.append(this_choice) + else: + preferred_any_slot.append(this_choice) else: possible_upgrades.append(this_choice) else: @@ -4222,6 +4235,7 @@ def dep_zapdeps(unreduced, reduced, myroot, use_binaries=0, trees=None): # into || ( highest version ... lowest version ). We want to prefer the # highest all_available version of the new-style virtual when there is a # lower all_installed version. + preferred.extend(preferred_any_slot) preferred.extend(possible_upgrades) possible_upgrades = preferred[1:] for possible_upgrade in possible_upgrades: -- cgit v1.2.3-1-g7c22