From 35b06087d972fdfa5d4702822b45e0e22897843d Mon Sep 17 00:00:00 2001 From: Pascal Rigaux Date: Mon, 19 May 2008 15:17:47 +0000 Subject: - do not ignore dropped provide from updated package (mdvbz#40842) --- URPM/Resolve.pm | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) (limited to 'URPM/Resolve.pm') diff --git a/URPM/Resolve.pm b/URPM/Resolve.pm index ac4525f..e270909 100644 --- a/URPM/Resolve.pm +++ b/URPM/Resolve.pm @@ -460,6 +460,27 @@ sub with_db_unsatisfied_requires { }); } +#- side-effects: only those done by $do +sub with_state_unsatisfied_requires { + my ($urpm, $db, $state, $name, $do) = @_; + + foreach (whatrequires_id($state, $name)) { + $state->{selected}{$_} or next; + my $p = $urpm->{depslist}[$_]; + if (my @l = unsatisfied_requires($urpm, $db, $state, $p, name => $name)) { + $urpm->{debug_URPM}("selected " . $p->fullname . " is conflicting because of unsatisfied @l") if $urpm->{debug_URPM}; + $do->($p, @l); + } + } +} + +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); +} + + # used when a require is not available # #- side-effects: $state->{backtrack}, $state->{selected} @@ -1098,7 +1119,7 @@ sub _find_packages_obsoleting { sub _handle_diff_provides { my ($urpm, $db, $state, $properties, $n, $pkg, %options) = @_; - with_db_unsatisfied_requires($urpm, $db, $state, $n, sub { + with_any_unsatisfied_requires($urpm, $db, $state, $n, sub { my ($p, @l) = @_; #- try if upgrading the package will be satisfying all the requires... -- cgit v1.2.1