aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--URPM/Resolve.pm8
1 files changed, 6 insertions, 2 deletions
diff --git a/URPM/Resolve.pm b/URPM/Resolve.pm
index 1046be7..616206c 100644
--- a/URPM/Resolve.pm
+++ b/URPM/Resolve.pm
@@ -35,12 +35,12 @@ sub find_chosen_packages {
my %packages;
#- search for possible packages, try to be as fast as possible, backtrack can be longer.
- foreach (split '\|', $dep) {
+ foreach (split /\|/, $dep) {
if (/^\d+$/) {
my $pkg = $urpm->{depslist}[$_];
$pkg->arch eq 'src' || $pkg->is_arch_compat or next;
$pkg->flag_skip || $state->{rejected}{$pkg->fullname} and next;
- #- determine if this packages is better than a possibly previously chosen package.
+ #- determine if this package is better than a possibly previously chosen package.
$pkg->flag_selected || exists $state->{selected}{$pkg->id} and return $pkg;
if (my $p = $packages{$pkg->name}) {
$pkg->flag_requested > $p->flag_requested ||
@@ -103,6 +103,9 @@ sub find_chosen_packages {
push @chosen, $p;
}
+ #- if several packages are installed, trim the choices.
+ if (!$urpm->{options}{morechoices} && $mode == 3 && @chosen > 1) { @chosen = ($chosen[0]) }
+
#- packages that require locales-xxx when the corresponding locales are
#- already installed should be preferred over packages that require locales
#- which are not installed.
@@ -118,6 +121,7 @@ sub find_chosen_packages {
push @chosen_other, $_;
}
}
+
#- sort packages in order to have preferred ones first
#- (this means good locales, no locales, bad locales).
return (sort { $a->id <=> $b->id } @chosen_good_locales),