From 14b622549eb8340600db94b8ec4082b3c5ee272d Mon Sep 17 00:00:00 2001 From: Francois Pons Date: Thu, 25 Jul 2002 11:19:33 +0000 Subject: 0.50-6mdk --- URPM/Resolve.pm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'URPM') diff --git a/URPM/Resolve.pm b/URPM/Resolve.pm index 52075e8..d320cb5 100644 --- a/URPM/Resolve.pm +++ b/URPM/Resolve.pm @@ -146,16 +146,22 @@ sub resolve_requested { #- take the best package for each choices of same name. my $packages = $urpm->find_candidate_packages($dep); foreach (values %$packages) { - my $best; + my ($best_requested, $best); foreach (@$_) { - if ($best && $best != $_) { - exists $requested{$_->id} || exists $state->{selected}{$_->id} and $best = $_, last; + exists $state->{selected}{$_->id} and $best_requested = $_, last; + if ($best_requested || exists $requested{$_->id}) { + if ($best_requested && $best_requested != $_) { + $_->compare_pkg($best_requested) > 0 and $best_requested = $_; + } else { + $best_requested = $_; + } + } elsif ($best && $best != $_) { $_->compare_pkg($best) > 0 and $best = $_; } else { $best = $_; } } - $_ = $best; + $_ = $best_requested || $best; } if (keys(%$packages) > 1) { #- package should be prefered if one of their provides is referenced -- cgit v1.2.1