aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--NEWS1
-rw-r--r--URPM/Resolve.pm15
2 files changed, 12 insertions, 4 deletions
diff --git a/NEWS b/NEWS
index 2ad053f..755a5bb 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,4 @@
+- API: add resolve_requested_suggests()
- slightly increase testsuite coverage
- update outdated doc
diff --git a/URPM/Resolve.pm b/URPM/Resolve.pm
index 7a4ea5d..b6ceac6 100644
--- a/URPM/Resolve.pm
+++ b/URPM/Resolve.pm
@@ -882,7 +882,14 @@ sub resolve_requested {
my @selected = resolve_requested__no_suggests($urpm, $db, $state, $requested, %options);
if (!$options{no_suggests}) {
- my @todo = @selected;
+ @selected = resolve_requested_suggests($urpm, $db, $state, \@selected, %options);
+ }
+ @selected;
+}
+
+sub resolve_requested_suggests {
+ my ($urpm, $db, $state, $selected, %options) = @_;
+ my @todo = @$selected;
while (@todo) {
my $pkg = shift @todo;
my %suggests = map { $_ => 1 } $pkg->suggests or next;
@@ -908,11 +915,11 @@ sub resolve_requested {
my %new_requested = map { $_ => undef } keys %suggests;
my @new_selected = resolve_requested__no_suggests_($urpm, $db, $state, \%new_requested, %options);
$state->{selected}{$_->id}{suggested} = 1 foreach @new_selected;
- push @selected, @new_selected;
+ push @$selected, @new_selected;
push @todo, @new_selected;
}
- }
- @selected;
+
+ @$selected;
}
#- Resolve dependencies of requested packages; keep resolution state to