diff options
Diffstat (limited to 'URPM/Resolve.pm')
-rw-r--r-- | URPM/Resolve.pm | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/URPM/Resolve.pm b/URPM/Resolve.pm index d12aa91..801929b 100644 --- a/URPM/Resolve.pm +++ b/URPM/Resolve.pm @@ -682,6 +682,14 @@ sub _remove_rejected_from { my ($state, $fullname, $from_fullname) = @_; my $rv = $state->{rejected}{$fullname} or return; + + foreach (qw(removed obsoleted)) { + if (exists $rv->{$_} && exists $rv->{$_}{$from_fullname}) { + delete $rv->{$_}{$from_fullname}; + delete $rv->{$_} if !%{$rv->{$_}}; + } + } + exists $rv->{closure}{$from_fullname} or return; delete $rv->{closure}{$from_fullname}; if (%{$rv->{closure}}) { @@ -756,8 +764,13 @@ sub set_rejected { #- set removed and obsoleted level. foreach (qw(removed obsoleted)) { - $rdep->{$_} && (! exists $rv->{$_} || $rdep->{$_} <= $rv->{$_}) - and $rv->{$_} = $rdep->{$_}; + if ($rdep->{$_}) { + if ($rdep->{from}) { + $rv->{$_}{scalar $rdep->{from}->fullname} = undef; + } else { + $rv->{$_}{asked} = undef; + } + } } $newly_rejected; |