diff options
-rw-r--r-- | urpm/parallel.pm | 19 | ||||
-rw-r--r-- | urpm/parallel_ka_run.pm | 18 | ||||
-rw-r--r-- | urpm/parallel_ssh.pm | 16 |
3 files changed, 26 insertions, 27 deletions
diff --git a/urpm/parallel.pm b/urpm/parallel.pm index 441da68a..e881c09c 100644 --- a/urpm/parallel.pm +++ b/urpm/parallel.pm @@ -76,4 +76,23 @@ sub post_register_rpms { map { "$urpm->{cachedir}/rpms/" . basename($_) } @files); } +sub find_remove_pre { + my ($urpm, $state, %options) = @_; + + #- keep in mind if the previous selection is still active, it avoids + #- to re-start urpme --test on each node. + if ($options{find_packages_to_remove}) { + delete $state->{rejected}; + delete $urpm->{error_remove}; + '--test '; + } elsif (@{$urpm->{error_remove} || []}) { + undef, $urpm->{error_remove}; + } elsif ($options{test}) { + #- no need to restart what has been started before. + undef, [ keys %{$state->{rejected}} ]; + } else { + '--force '; + } +} + 1; diff --git a/urpm/parallel_ka_run.pm b/urpm/parallel_ka_run.pm index d351e90a..ba00e05c 100644 --- a/urpm/parallel_ka_run.pm +++ b/urpm/parallel_ka_run.pm @@ -39,20 +39,10 @@ sub parallel_register_rpms { #- parallel find_packages_to_remove sub parallel_find_remove { my ($parallel, $urpm, $state, $l, %options) = @_; - my ($test, $node, %bad_nodes, %base_to_remove, %notfound); - - #- keep in mind if the previous selection is still active, it avoids - #- to re-start urpme --test on each node. - if ($options{find_packages_to_remove}) { - delete $state->{rejected}; - delete $urpm->{error_remove}; - $test = '--test '; - } else { - @{$urpm->{error_remove} || []} and return @{$urpm->{error_remove}}; - #- no need to restart what has been started before. - $options{test} and return keys %{$state->{rejected}}; - $test = '--force '; - } + my ($node, %bad_nodes, %base_to_remove, %notfound); + + my ($test, $pkgs) = urpm::parallel::find_remove_pre($urpm, $state, %options); + $pkgs and return @$pkgs; #- now try an iteration of urpme. $urpm->{log}("parallel_ka_run: $rshp_command -v $parallel->{options} -- urpme --no-locales --auto $test" . (join ' ', map { "'$_'" } @$l)); diff --git a/urpm/parallel_ssh.pm b/urpm/parallel_ssh.pm index 35b6e79a..d43c2fb8 100644 --- a/urpm/parallel_ssh.pm +++ b/urpm/parallel_ssh.pm @@ -41,20 +41,10 @@ sub parallel_register_rpms { #- parallel find_packages_to_remove sub parallel_find_remove { my ($parallel, $urpm, $state, $l, %options) = @_; - my ($test, %bad_nodes, %base_to_remove, %notfound); + my (%bad_nodes, %base_to_remove, %notfound); - #- keep in mind if the previous selection is still active, it avoids - #- to re-start urpme --test on each node. - if ($options{find_packages_to_remove}) { - delete $state->{rejected}; - delete $urpm->{error_remove}; - $test = '--test '; - } else { - @{$urpm->{error_remove} || []} and return @{$urpm->{error_remove}}; - #- no need to restart what has been started before. - $options{test} and return keys %{$state->{rejected}}; - $test = '--force '; - } + my ($test, $pkgs) = urpm::parallel::find_remove_pre($urpm, $state, %options); + $pkgs and return @$pkgs; #- now try an iteration of urpme. foreach my $node (keys %{$parallel->{nodes}}) { |