Skip to content

Commit e7ed724

Browse files
committed
depends: refactor solve()
1 parent b7d0b9b commit e7ed724

File tree

1 file changed

+13
-16
lines changed

1 file changed

+13
-16
lines changed

lib/aurweb/aur-depends

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,31 +13,28 @@ my $argv0 = 'depends';
1313
sub solve {
1414
my ($targets, $types, $callback, $opt_verify, $opt_provides, $opt_installed) = @_;
1515

16-
# Retrieve AUR results (JSON -> dict -> extract depends -> repeat until none)
16+
# Retrieve AUR information
1717
my ($results, $pkgdeps, $pkgmap) = recurse($targets, $types, $callback);
1818

1919
# Verify dependency requirements
2020
my ($dag, $dag_foreign) = graph($results, $pkgdeps, $pkgmap, $opt_verify, $opt_provides);
21-
my @removals = ();
21+
22+
# Targets to be removed from the graph
23+
my @to_prune;
2224

2325
# Remove virtual dependencies from dependency graph (#1063)
24-
if ($opt_provides) {
25-
my @virtual = keys %{$pkgmap};
26+
push @to_prune, keys %{$pkgmap} if $opt_provides;
2627

27-
# XXX: assumes <pkgmap> only contains keys with provides != pkgname
28-
@removals = prune($dag, \@virtual);
29-
}
3028
# Remove transitive dependencies for installed targets (#592)
31-
# XXX: prune from $dag_foreign as well?
32-
if (scalar @{$opt_installed}) {
33-
@removals = prune($dag, $opt_installed);
34-
}
35-
# Remove packages no longer in graph from results
36-
if (scalar @removals) {
37-
map { delete $results->{$_} } @removals;
29+
push @to_prune, @{$opt_installed} if $opt_installed && @{$opt_installed};
30+
31+
if (@to_prune) {
32+
my @removed = prune($dag, \@to_prune); # mutates $dag
33+
delete @{$results}{@removed}; # drop from results
3834
}
39-
# Return $dag for subsequent application of C<prune>
40-
return $results, $dag, $dag_foreign;
35+
36+
# Possible further pruning by the caller
37+
return ($results, $dag, $dag_foreign);
4138
}
4239

4340
# tsv output for usage with aur-sync (aurutils <=10)

0 commit comments

Comments
 (0)