diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-03-23 01:25:55 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-03-23 01:25:55 +0000 |
commit | bc40f2ce0646f44577050ca11e2a21c6b1070520 (patch) | |
tree | 0d22f04efb170c0f5b3d7b0b54ced38138d58a2f | |
parent | 452632ca35a8c2c874f2e603e200ba39c5822ad7 (diff) | |
download | portage-bc40f2ce0646f44577050ca11e2a21c6b1070520.tar.gz portage-bc40f2ce0646f44577050ca11e2a21c6b1070520.tar.bz2 portage-bc40f2ce0646f44577050ca11e2a21c6b1070520.zip |
For bug #171840, consider all choices for slot intersection and promote those that have upgrades relative to other choices.
svn path=/main/trunk/; revision=6267
-rw-r--r-- | pym/portage/__init__.py | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/pym/portage/__init__.py b/pym/portage/__init__.py index 2d04df180..b2f9ad8fe 100644 --- a/pym/portage/__init__.py +++ b/pym/portage/__init__.py @@ -4288,10 +4288,15 @@ 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. - for possible_upgrade in list(possible_upgrades): + preferred.extend(possible_upgrades) + possible_upgrades = preferred[1:] + for possible_upgrade in possible_upgrades: atoms, versions, all_available = possible_upgrade myslots = set(versions) for other_choice in preferred: + if possible_upgrade is other_choice: + # possible_upgrade will not be promoted, so move on + break o_atoms, o_versions, o_all_available = other_choice intersecting_slots = myslots.intersection(o_versions) if not intersecting_slots: @@ -4308,11 +4313,10 @@ def dep_zapdeps(unreduced, reduced, myroot, use_binaries=0, trees=None): has_downgrade = True break if has_upgrade and not has_downgrade: + preferred.remove(possible_upgrade) o_index = preferred.index(other_choice) preferred.insert(o_index, possible_upgrade) - possible_upgrades.remove(possible_upgrade) break - preferred.extend(possible_upgrades) # preferred now contains a) and c) from the order above with # the masked flag differentiating the two. other contains b) |