summaryrefslogtreecommitdiffstats
path: root/urpm/parallel.pm
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2008-07-09 21:48:15 +0000
committerPascal Rigaux <pixel@mandriva.com>2008-07-09 21:48:15 +0000
commit252a346cbf6ab008d766fc91992f7d3c1fddd3f1 (patch)
tree92d6337658bbc8e68bdbffe643d0dcfbaa74e4c4 /urpm/parallel.pm
parent7270c2d845845ccaf97d2a1fe3c45f2f4c530913 (diff)
downloadurpmi-252a346cbf6ab008d766fc91992f7d3c1fddd3f1.tar
urpmi-252a346cbf6ab008d766fc91992f7d3c1fddd3f1.tar.gz
urpmi-252a346cbf6ab008d766fc91992f7d3c1fddd3f1.tar.bz2
urpmi-252a346cbf6ab008d766fc91992f7d3c1fddd3f1.tar.xz
urpmi-252a346cbf6ab008d766fc91992f7d3c1fddd3f1.zip
move duplicated code into urpm::parallel::parse_urpmq_output()
Diffstat (limited to 'urpm/parallel.pm')
-rw-r--r--urpm/parallel.pm29
1 files changed, 29 insertions, 0 deletions
diff --git a/urpm/parallel.pm b/urpm/parallel.pm
index 3a6aa899..809a9391 100644
--- a/urpm/parallel.pm
+++ b/urpm/parallel.pm
@@ -129,6 +129,35 @@ sub parse_urpme_output {
return;
}
+sub parse_urpmq_output {
+ my ($urpm, $state, $node, $s, $cont, $chosen, %options) = @_;
+
+ if (my ($action, $what) = $s =~ /^\@([^\@]*)\@(.*)/) {
+ if ($action eq 'removing') {
+ $state->{rejected}{$what}{removed} = 1;
+ $state->{rejected}{$what}{nodes}{$node} = undef;
+ }
+ } elsif ($s =~ /\|/) {
+ #- distant urpmq returned a choices, check if it has already been chosen
+ #- or continue iteration to make sure no more choices are left.
+ $$cont ||= 1; #- invalid transitory state (still choices is strange here if next sentence is not executed).
+ unless (grep { exists $chosen->{$_} } split /\|/, $s) {
+ my $choice = $options{callback_choices}->($urpm, undef, $state, [ map { $urpm->search($_) } split /\|/, $s ]);
+ if ($choice) {
+ $chosen->{scalar $choice->fullname} = $choice;
+ #- it has not yet been chosen so need to ask user.
+ $$cont = 2;
+ } else {
+ #- no choices resolved, so forget it (no choices means no choices at all).
+ $$cont = 0;
+ }
+ }
+ } else {
+ my $pkg = $urpm->search($s) or return; #TODO
+ $state->{selected}{$pkg->id}{$node} = $s;
+ }
+}
+
#- compute command line of urpm? tools.
sub simple_resolve_dependencies {
my ($parallel, $urpm, $state, $requested, %options) = @_;