From d3bf74fd5a3e2ae27c4b1fb407310b0a6d9b242d Mon Sep 17 00:00:00 2001 From: Pascal Rigaux Date: Tue, 21 Nov 2006 14:57:52 +0000 Subject: create urpm::parallel and move some things from urpm.pm --- urpm.pm | 48 +++-------------------------------------------- urpm/parallel.pm | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+), 45 deletions(-) create mode 100644 urpm/parallel.pm diff --git a/urpm.pm b/urpm.pm index 258540f7..42200a8c 100644 --- a/urpm.pm +++ b/urpm.pm @@ -544,40 +544,6 @@ sub write_config { write_MD5SUM($urpm); } -sub _configure_parallel { - my ($urpm, $alias) = @_; - my @parallel_options; - #- read parallel configuration - foreach (cat_("/etc/urpmi/parallel.cfg")) { - chomp; s/#.*$//; s/^\s*//; s/\s*$//; - /\s*([^:]*):(.*)/ or $urpm->{error}(N("unable to parse \"%s\" in file [%s]", $_, "/etc/urpmi/parallel.cfg")), next; - $1 eq $alias and push @parallel_options, $2; - } - #- if a configuration option has been found, use it; else fatal error. - my $parallel_handler; - if (@parallel_options) { - foreach my $dir (grep { -d $_ } map { "$_/urpm" } @INC) { - foreach my $pm (grep { -f $_ } glob("$dir/parallel*.pm")) { - #- load parallel modules - $urpm->{log}->(N("examining parallel handler in file [%s]", $pm)); - # perl_checker: require urpm::parallel_ka_run - # perl_checker: require urpm::parallel_ssh - eval { require $pm; $parallel_handler = $urpm->handle_parallel_options(join("\n", @parallel_options)) }; - $parallel_handler and last; - } - $parallel_handler and last; - } - } - if ($parallel_handler) { - if ($parallel_handler->{nodes}) { - $urpm->{log}->(N("found parallel handler for nodes: %s", join(', ', keys %{$parallel_handler->{nodes}}))); - } - $urpm->{parallel_handler} = $parallel_handler; - } else { - $urpm->{fatal}(1, N("unable to use parallel option \"%s\"", $alias)); - } -} - #- read urpmi.cfg file as well as necessary synthesis files #- options : #- root @@ -607,7 +573,8 @@ sub configure { $options{parallel} && $options{usedistrib} and $urpm->{fatal}(1, N("Can't use parallel mode with use-distrib mode")); if ($options{parallel}) { - _configure_parallel($urpm, $options{parallel}); + require urpm::parallel; + urpm::parallel::configure($urpm, $options{parallel}); if (!$options{media} && $urpm->{parallel_handler}{media}) { $options{media} = $urpm->{parallel_handler}{media}; @@ -2268,16 +2235,7 @@ sub resolve_dependencies { } } if ($urpm->{parallel_handler}) { - #- build the global synthesis file first. - my $file = "$urpm->{cachedir}/partial/parallel.cz"; - unlink $file; - foreach (@{$urpm->{media}}) { - is_valid_medium($_) or next; - my $f = statedir_synthesis($urpm, $_); - system "cat '$f' >> '$file'"; - } - #- let each node determine what is requested, according to handler given. - $urpm->{parallel_handler}->parallel_resolve_dependencies($file, $urpm, $state, $requested, %options); + urpm::parallel::resolve_dependencies($urpm, $state, $requested, %options); } else { my $db; diff --git a/urpm/parallel.pm b/urpm/parallel.pm new file mode 100644 index 00000000..e5dff4ff --- /dev/null +++ b/urpm/parallel.pm @@ -0,0 +1,57 @@ +package urpm::parallel; + +use urpm; +use urpm::util; +use urpm::msg; + + +sub configure { + my ($urpm, $alias) = @_; + my @parallel_options; + #- read parallel configuration + foreach (cat_("/etc/urpmi/parallel.cfg")) { + chomp; s/#.*$//; s/^\s*//; s/\s*$//; + /\s*([^:]*):(.*)/ or $urpm->{error}(N("unable to parse \"%s\" in file [%s]", $_, "/etc/urpmi/parallel.cfg")), next; + $1 eq $alias and push @parallel_options, $2; + } + #- if a configuration option has been found, use it; else fatal error. + my $parallel_handler; + if (@parallel_options) { + foreach my $dir (grep { -d $_ } map { "$_/urpm" } @INC) { + foreach my $pm (grep { -f $_ } glob("$dir/parallel*.pm")) { + #- load parallel modules + $urpm->{log}->(N("examining parallel handler in file [%s]", $pm)); + # perl_checker: require urpm::parallel_ka_run + # perl_checker: require urpm::parallel_ssh + eval { require $pm; $parallel_handler = $urpm->handle_parallel_options(join("\n", @parallel_options)) }; + $parallel_handler and last; + } + $parallel_handler and last; + } + } + if ($parallel_handler) { + if ($parallel_handler->{nodes}) { + $urpm->{log}->(N("found parallel handler for nodes: %s", join(', ', keys %{$parallel_handler->{nodes}}))); + } + $urpm->{parallel_handler} = $parallel_handler; + } else { + $urpm->{fatal}(1, N("unable to use parallel option \"%s\"", $alias)); + } +} + +sub resolve_dependencies { + my ($urpm, $state, $requested, %options) = @_; + + #- build the global synthesis file first. + my $file = "$urpm->{cachedir}/partial/parallel.cz"; + unlink $file; + foreach (@{$urpm->{media}}) { + urpm::is_valid_medium($_) or next; + my $f = urpm::statedir_synthesis($urpm, $_); + system "cat '$f' >> '$file'"; + } + #- let each node determine what is requested, according to handler given. + $urpm->{parallel_handler}->parallel_resolve_dependencies($file, $urpm, $state, $requested, %options); +} + +1; -- cgit v1.2.1