summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--urpm.pm48
-rw-r--r--urpm/parallel.pm57
2 files changed, 60 insertions, 45 deletions
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;