diff options
author | Francois Pons <fpons@mandriva.com> | 2002-07-11 13:14:42 +0000 |
---|---|---|
committer | Francois Pons <fpons@mandriva.com> | 2002-07-11 13:14:42 +0000 |
commit | 8414339f861f1289bdc8cd191a765e8dec195582 (patch) | |
tree | 06b03100177df116d85d505a4dc789fa1e208c6e /URPM | |
parent | 907fd3eb24c1fc99c22946923081f34952a21b9e (diff) | |
download | perl-URPM-8414339f861f1289bdc8cd191a765e8dec195582.tar perl-URPM-8414339f861f1289bdc8cd191a765e8dec195582.tar.gz perl-URPM-8414339f861f1289bdc8cd191a765e8dec195582.tar.bz2 perl-URPM-8414339f861f1289bdc8cd191a765e8dec195582.tar.xz perl-URPM-8414339f861f1289bdc8cd191a765e8dec195582.zip |
0.09-2mdk
Diffstat (limited to 'URPM')
-rw-r--r-- | URPM/Resolve.pm | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/URPM/Resolve.pm b/URPM/Resolve.pm index a88b8c6..960ea66 100644 --- a/URPM/Resolve.pm +++ b/URPM/Resolve.pm @@ -312,7 +312,7 @@ sub resolve_requested { if (my ($name) =~ /^([^\s\[]*)/) { foreach (keys %{$urpm->{provides}{$name} || {}}) { my $p = $urpm->{depslist}[$_]; - $pkg->flag_selected and $state->{ask_unselect}{$p->id}{$pkg->id} = undef; + $p->flag_selected and $state->{ask_unselect}{$p->id}{$pkg->id} = undef; } } } @@ -320,6 +320,36 @@ sub resolve_requested { #- obsoleted packages are no longer marked as being asked to be removed. delete @{$state->{ask_remove}}{map { /(.*)\.[^\.]*$/ && $1 } keys %{$state->{obsoleted}}}; + + #- clear state according to selection done, this is usefull for + #- canceling a selection (works after second call with empty requested). + if ($options{clear_state}) { + foreach (keys %{$state->{selected} || {}}) { + my $pkg = $urpm->{depslist}[$_]; + + foreach ($pkg->provides) { + if (my ($n, $s) = /^([^\s\[]*)(?:\[\*\])?\[?([^\s\]]*\s*[^\s\]]*)/) { + delete $state->{provided}{$n}{$s}{$pkg->id}; + %{$state->{provided}{$n}{$s}} or delete $state->{provided}{$n}{$s}; + } + } + + foreach ($pkg->obsoletes) { + delete $state->{obsoleted}{$pkg->fullname}{$pkg->id}; + %{$state->{obsoleted}{$pkg->fullname}} or delete $state->{obsoleted}{$pkg->fullname}; + } + + foreach (keys %{$state->{ask_remove} || {}}) { + $state->{ask_remove}{$_} = [ grep { $_->{pkg} ne $pkg } @{$state->{ask_remove}{$_} || []} ]; + @{$state->{ask_remove}{$_}} or delete $state->{ask_remove}{$_}; + } + + foreach (keys %{$state->{ask_unselect} || {}}) { + delete $state->{ask_unselect}{$_}{$pkg->id}; + %{$state->{ask_unselect}{$_}} or delete $state->{ask_unselect}{$_}; + } + } + } } #- compute installed flags for all package in depslist. |