--- Resolve.pm.realo 2008-10-06 18:55:06.000000000 +0300 +++ Resolve.pm 2009-03-02 02:32:26.000000000 +0200 @@ -501,8 +501,8 @@ sub with_any_unsatisfied_requires { my ($urpm, $db, $state, $name, $do) = @_; - with_db_unsatisfied_requires($urpm, $db, $state, $name, $do); - with_state_unsatisfied_requires($urpm, $db, $state, $name, $do); + with_db_unsatisfied_requires($urpm, $db, $state, $name, sub { my ($p, @l) = @_; $do->($p, 0, @l)}); + with_state_unsatisfied_requires($urpm, $db, $state, $name, sub { my ($p, @l) = @_; $do->($p, 1, @l)}); } @@ -1147,7 +1147,7 @@ my ($urpm, $db, $state, $properties, $n, $pkg, %options) = @_; with_any_unsatisfied_requires($urpm, $db, $state, $n, sub { - my ($p, @l) = @_; + my ($p, $from_state, @l) = @_; #- try if upgrading the package will be satisfying all the requires... #- there is no need to avoid promoting epoch as the package examined is not @@ -1182,7 +1182,12 @@ $urpm->{debug_URPM}("promoting " . join(' ', _ids_to_fullnames($urpm, @best)) . " because of conflict above") if $urpm->{debug_URPM}; push @$properties, map { +{ required => $_, promote => $n, psel => $pkg } } @best; } else { - if ($options{keep}) { + if ($from_state) { + my @disabled = disable_selected_and_unrequested_dependencies($urpm, $db, $state, $p); + foreach (@disabled) { + _set_rejected_from($state, $_, $p); + } + } elsif ($options{keep}) { backtrack_selected_psel_keep($urpm, $db, $state, $pkg, [ scalar $p->fullname ]); } else { resolve_rejected_($urpm, $db, $state, $properties, {