diff options
-rw-r--r-- | urpm.pm | 53 | ||||
-rwxr-xr-x | urpmi | 38 | ||||
-rw-r--r-- | urpmi.spec | 7 |
3 files changed, 63 insertions, 35 deletions
@@ -2790,6 +2790,59 @@ sub parallel_remove { ); } +#- misc functions to help finding ask_unselect and ask_remove elements with their reasons translated. +sub unselected_packages { + my ($urpm, $state, %options) = @_; + + grep { $state->{rejected}{$_}{backtrack} } keys %{$state->{rejected} || {}}; +} +sub translate_why_unselected { + my ($urpm, $state, @l) = @_; + + map { my @froms = keys %{$state->{rejected}{$_}{backtrack}{closure} || {}}; + my @unsatisfied = @{$state->{rejected}{$_}{backtrack}{unsatisfied} || []}; + my $s = join ", ", ((map { N("due to missing %s", $_) } @froms), + (map { N("due to unsatisfied %s", $_) } @unsatisfied)); + $_ . ($s ? " ($s)" : ''); + } @l; +} + +sub removed_packages { + my ($urpm, $state, %options) = @_; + + grep { $state->{rejected}{$_}{removed} && !$state->{rejected}{$_}{obsoleted} } keys %{$state->{rejected} || {}}; +} +sub translate_why_removed { + my ($urpm, $state, @l) = @_; + + map { my ($from) = keys %{$state->{rejected}{$_}{closure}}; + my ($whyk) = keys %{$state->{rejected}{$_}{closure}{$from}}; + my ($whyv) = $state->{rejected}{$_}{closure}{$from}{$whyk}; + my $frompkg = $urpm->search($from, strict_fullname => 1); + my $s; + for ($whyk) { + /old_requested/ and + $s .= N("in order to install %s", $frompkg ? scalar $frompkg->fullname : $from); + /unsatisfied/ and do { + foreach (@$whyv) { + $s and $s .= ', '; + if (/([^\[\s]*)(?:\[\*\])?(?:\[|\s+)([^\]]*)\]?$/) { + $s .= N("due to unsatisfied %s", "$1 $2"); + } else { + $s .= N("due to missing %s", $_); + } + } + }; + /conflicts/ and + $s .= N("due to conflicts with %s", $whyv); + /unrequested/ and + $s .= N("unrequested"); + } + #- now insert the reason if available. + $_ . ($s ? " ($s)" : ''); + } @l; +} + 1; __END__ @@ -388,15 +388,10 @@ $urpm->resolve_dependencies($state, \%requested, nodeps => $urpm->{options}{'allow-nodeps'} || $urpm->{options}{'allow-force'}, ); -my @ask_unselect = grep { $state->{rejected}{$_}{backtrack} } keys %{$state->{rejected} || {}}; +my @ask_unselect = $urpm->unselected_packages($state) if (@ask_unselect) { unless ($auto) { - my $list = join "\n", map { my @froms = keys %{$state->{rejected}{$_}{backtrack}{closure} || {}}; - my @unsatisfied = @{$state->{rejected}{$_}{backtrack}{unsatisfied} || []}; - my $s = join ", ", ((map { N("due to missing %s", $_) } @froms), - (map { N("due to unsatisfied %s", $_) } @unsatisfied)); - $_ . ($s ? " ($s)" : ''); - } sort { $a cmp $b } @ask_unselect; + my $list = join "\n", $urpm->translate_why_unselected($state, sort @ask_unselect); my $msg = N("Some package requested cannot be installed:\n%s\ndo you agree ?", $list); if ($X) { gmessage($msg); @@ -409,35 +404,10 @@ if (@ask_unselect) { } } -my @ask_remove = grep { $state->{rejected}{$_}{removed} && !$state->{rejected}{$_}{obsoleted} } keys %{$state->{rejected} || {}}; +my @ask_remove = $urpm->removed_packages($state); if (@ask_remove) { unless ($auto) { - my $list = join "\n", map { my ($from) = keys %{$state->{rejected}{$_}{closure}}; - my ($whyk) = keys %{$state->{rejected}{$_}{closure}{$from}}; - my ($whyv) = $state->{rejected}{$_}{closure}{$from}{$whyk}; - my $frompkg = $urpm->search($from, strict_fullname => 1); - my $s; - for ($whyk) { - /old_requested/ and - $s .= N("in order to install %s", $frompkg ? scalar $frompkg->fullname : $from); - /unsatisfied/ and do { - foreach (@$whyv) { - $s and $s .= ', '; - if (/([^\[\s]*)(?:\[\*\])?(?:\[|\s+)([^\]]*)\]?$/) { - $s .= N("due to unsatisfied %s", "$1 $2"); - } else { - $s .= N("due to missing %s", $_); - } - } - }; - /conflicts/ and - $s .= N("due to conflicts with %s", $whyv); - /unrequested/ and - $s .= N("unrequested"); - } - #- now insert the reason if available. - $_ . ($s ? " ($s)" : ''); - } sort { $a cmp $b } @ask_remove; + my $list = join "\n", $urpm->translate_why_removed($state, sort @ask_remove); if ($no_remove) { my $msg = N("The installation cannot continue because the following packages @@ -2,7 +2,7 @@ Name: urpmi Version: 4.3 -Release: 14mdk +Release: 15mdk License: GPL Source0: %{name}.tar.bz2 Source1: %{name}.logrotate @@ -202,6 +202,11 @@ $urpm->update_media; %changelog +* Fri Jun 13 2003 François Pons <fpons@mandrakesoft.com> 4.3-15mdk +- fixed incorrect behaviour when no key_ids options are set. +- created retrieve methods and translation methods for packages + unselected or removed. + * Fri Jun 13 2003 François Pons <fpons@mandrakesoft.com> 4.3-14mdk - added key_ids global and per media option to list authorized key ids. |