aboutsummaryrefslogtreecommitdiffstats
path: root/URPM
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2007-09-07 14:44:53 +0000
committerPascal Rigaux <pixel@mandriva.com>2007-09-07 14:44:53 +0000
commite33b4d554c02fd516d62fbcbf981e9596273b565 (patch)
treeeb8371d72697b7010a0920f923b62336d479e43d /URPM
parentf42a01645785ed74589e027de76ad7e197c0b2b6 (diff)
downloadperl-URPM-e33b4d554c02fd516d62fbcbf981e9596273b565.tar
perl-URPM-e33b4d554c02fd516d62fbcbf981e9596273b565.tar.gz
perl-URPM-e33b4d554c02fd516d62fbcbf981e9596273b565.tar.bz2
perl-URPM-e33b4d554c02fd516d62fbcbf981e9596273b565.tar.xz
perl-URPM-e33b4d554c02fd516d62fbcbf981e9596273b565.zip
move code from resolve_requested__no_suggests() into new function _handle_provides_overlap()
Diffstat (limited to 'URPM')
-rw-r--r--URPM/Resolve.pm73
1 files changed, 40 insertions, 33 deletions
diff --git a/URPM/Resolve.pm b/URPM/Resolve.pm
index a09ea3d..c7c372f 100644
--- a/URPM/Resolve.pm
+++ b/URPM/Resolve.pm
@@ -763,39 +763,7 @@ sub resolve_requested__no_suggests {
@keep and return;
my ($p) = @_;
if ($p->provides_overlap($property)) {
- $urpm->{debug_URPM}("installed package " . $p->fullname . " is conflicting with " . $pkg->fullname . " (Conflicts: $property)") if $urpm->{debug_URPM};
-
- #- the existing package will conflict with the selection; check
- #- whether a newer version will be ok, else ask to remove the old.
- my $need_deps = $p->name . " > " . ($p->epoch ? $p->epoch . ":" : "") .
- $p->version . "-" . $p->release;
- my $packages = $urpm->find_candidate_packages($need_deps, avoided => $state->{rejected});
- my $best = join('|', map { $_->id }
- grep { ! $_->provides_overlap($property) }
- @{$packages->{$p->name}});
-
- if (length $best) {
- $urpm->{debug_URPM}("promoting " . $urpm->{depslist}[$best]->fullname . " because of conflict above") if $urpm->{debug_URPM};
- unshift @properties, { required => $best, promote_conflicts => $name };
- } else {
- if ($options{keep}) {
- push @keep, scalar $p->fullname;
- } else {
- #- no package has been found, we need to remove the package examined.
- my $obsoleted;
- #- force resolution (#12696, maybe #11885)
- if (my $prev = delete $state->{rejected}{$p->fullname}) {
- $obsoleted = $prev->{obsoleted};
- }
- $urpm->resolve_rejected(
- $db, $state, $p,
- ($obsoleted ? 'obsoleted' : 'removed') => 1,
- unsatisfied => \@properties,
- from => scalar $pkg->fullname,
- why => { conflicts => $property },
- );
- }
- }
+ _handle_provides_overlap($urpm, $db, $state, $pkg, $p, $property, $name, \@properties, $options{keep} && \@keep);
}
});
}
@@ -889,6 +857,45 @@ sub resolve_requested__no_suggests {
grep { exists $state->{selected}{$_->id} } @selected;
}
+
+sub _handle_provides_overlap {
+ my ($urpm, $db, $state, $pkg, $p, $property, $name, $properties, $keep) = @_;
+
+ $urpm->{debug_URPM}("installed package " . $p->fullname . " is conflicting with " . $pkg->fullname . " (Conflicts: $property)") if $urpm->{debug_URPM};
+
+ #- the existing package will conflict with the selection; check
+ #- whether a newer version will be ok, else ask to remove the old.
+ my $need_deps = $p->name . " > " . ($p->epoch ? $p->epoch . ":" : "") .
+ $p->version . "-" . $p->release;
+ my $packages = $urpm->find_candidate_packages($need_deps, avoided => $state->{rejected});
+ my $best = join('|', map { $_->id }
+ grep { ! $_->provides_overlap($property) }
+ @{$packages->{$p->name}});
+
+ if (length $best) {
+ $urpm->{debug_URPM}("promoting " . $urpm->{depslist}[$best]->fullname . " because of conflict above") if $urpm->{debug_URPM};
+ unshift @$properties, { required => $best, promote_conflicts => $name };
+ } else {
+ if ($keep) {
+ push @$keep, scalar $p->fullname;
+ } else {
+ #- no package has been found, we need to remove the package examined.
+ my $obsoleted;
+ #- force resolution (#12696, maybe #11885)
+ if (my $prev = delete $state->{rejected}{$p->fullname}) {
+ $obsoleted = $prev->{obsoleted};
+ }
+ $urpm->resolve_rejected(
+ $db, $state, $p,
+ ($obsoleted ? 'obsoleted' : 'removed') => 1,
+ unsatisfied => $properties,
+ from => scalar $pkg->fullname,
+ why => { conflicts => $property },
+ );
+ }
+ }
+}
+
sub _id_to_name {
my ($urpm, $dep) = @_;
if ($dep =~ /^\d+/) {