summaryrefslogtreecommitdiffstats
path: root/urpm/parallel.pm
diff options
context:
space:
mode:
Diffstat (limited to 'urpm/parallel.pm')
-rw-r--r--urpm/parallel.pm42
1 files changed, 42 insertions, 0 deletions
diff --git a/urpm/parallel.pm b/urpm/parallel.pm
index 124b6491..6a9207f4 100644
--- a/urpm/parallel.pm
+++ b/urpm/parallel.pm
@@ -129,4 +129,46 @@ sub parse_urpme_output {
return;
}
+sub simple_resolve_dependencies {
+ my ($parallel, $urpm, $state, $requested, %options) = @_;
+
+ #- compute command line of urpm? tools.
+ my $line = $parallel->{line} . ($options{auto_select} ? ' --auto-select' : '') . ($options{keep} ? ' --keep' : '');
+ foreach (keys %$requested) {
+ if (/\|/) {
+ #- taken from URPM::Resolve to filter out choices, not complete though.
+ my $packages = $urpm->find_candidate_packages($_);
+ foreach (values %$packages) {
+ my ($best_requested, $best);
+ foreach (@$_) {
+ exists $state->{selected}{$_->id} and $best_requested = $_, last;
+ if ($best_requested) {
+ if ($best_requested && $best_requested != $_) {
+ $_->compare_pkg($best_requested) > 0 and $best_requested = $_;
+ } else {
+ $best_requested = $_;
+ }
+ } elsif ($best && $best != $_) {
+ $_->compare_pkg($best) > 0 and $best = $_;
+ } else {
+ $best = $_;
+ }
+ }
+ $_ = $best_requested || $best;
+ }
+ #- simplified choice resolution.
+ my $choice = $options{callback_choices}->($urpm, undef, $state, [ values %$packages ]);
+ if ($choice) {
+ $urpm->{source}{$choice->id} and next; #- local packages have already been added.
+ $line .= ' ' . $choice->fullname;
+ }
+ } else {
+ my $pkg = $urpm->{depslist}[$_] or next;
+ $urpm->{source}{$pkg->id} and next; #- local packages have already been added.
+ $line .= ' ' . $pkg->fullname;
+ }
+ }
+ $line;
+}
+
1;