From 4cf5682cf59a7547e263b74b744515597aec873e Mon Sep 17 00:00:00 2001 From: Francois Pons Date: Wed, 24 Jul 2002 12:36:52 +0000 Subject: 0.50-4mdk --- URPM/Build.pm | 10 ++-------- URPM/Resolve.pm | 17 ++++++----------- 2 files changed, 8 insertions(+), 19 deletions(-) (limited to 'URPM') diff --git a/URPM/Build.pm b/URPM/Build.pm index e3029f7..2c1a592 100644 --- a/URPM/Build.pm +++ b/URPM/Build.pm @@ -75,19 +75,13 @@ sub parse_rpms_build_headers { @headers; } -#- check if rereading of hdlist is neccessary. +#- allow rereading of hdlist and clean. sub unresolved_provides_clean { my ($urpm) = @_; - my @unresolved = grep { ! defined $urpm->{provides}{$_} } keys %{$urpm->{provides} || {}}; + my @potentially_unresolved = keys %{$urpm->{provides} || {}}; - #- names can be safely removed in any cases. - delete $urpm->{names}; - - #- remove @{$urpm}{qw(depslist provides)} = ([], {}); @{$urpm->{provides}}{@unresolved} = (); - - @unresolved; } #- read a list of headers (typically when building an hdlist when provides have diff --git a/URPM/Resolve.pm b/URPM/Resolve.pm index 5cd8392..52075e8 100644 --- a/URPM/Resolve.pm +++ b/URPM/Resolve.pm @@ -285,6 +285,7 @@ sub resolve_requested { my $best = join '|', map { $_->id } grep { $urpm->unsatisfied_requires($db, $state, $_, name => $n) == 0 } @{$packages->{$p->name}}; + if ($best) { push @properties, $best; } else { @@ -325,18 +326,12 @@ sub resolve_requested { #- the existing package will conflicts with selection, check if a newer #- version will be ok, else ask to remove the old. my $packages = $urpm->find_candidate_packages($p->name); - my $best; - foreach (@{$packages->{$p->name}}) { - unless (grep { ranges_overlap($_, $property) } $_->provides) { - if ($best && $best != $_) { - $_->compare_pkg($best) > 0 and $best = $_; - } else { - $best = $_; - } - } - } + my $best = join '|', map { $_->id } + grep { ! grep { ranges_overlap($_, $property) } $_->provides } + @{$packages->{$p->name}}; + if ($best) { - push @properties, $best->id; + push @properties, $best; } else { #- no package have been found, we need to remove the package examined. $options{keep_state} or -- cgit v1.2.1