|
@@ -366,16 +366,14 @@ sub do_install_package($$) {
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-my %feed;
|
|
|
|
-
|
|
|
|
sub lookup_package($$) {
|
|
sub lookup_package($$) {
|
|
my $feed = shift;
|
|
my $feed = shift;
|
|
my $package = shift;
|
|
my $package = shift;
|
|
|
|
|
|
foreach my $feed ($feed, @feeds) {
|
|
foreach my $feed ($feed, @feeds) {
|
|
next unless $feed->[1];
|
|
next unless $feed->[1];
|
|
- next unless $feed{$feed->[1]};
|
|
|
|
- $feed{$feed->[1]}->{$package} and return $feed;
|
|
|
|
|
|
+ next unless $feed_cache{$feed->[1]};
|
|
|
|
+ $feed_cache{$feed->[1]}->[0]->{$package} and return $feed;
|
|
}
|
|
}
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
@@ -404,9 +402,9 @@ sub install_package {
|
|
};
|
|
};
|
|
|
|
|
|
# switch to the metadata for the selected feed
|
|
# switch to the metadata for the selected feed
|
|
- get_feed($feed->[1]);
|
|
|
|
|
|
+ my $cur = get_feed($feed->[1]);
|
|
|
|
|
|
- my $pkg = $feed{$feed->[1]}->{$name} or return 1;
|
|
|
|
|
|
+ my $pkg = $cur->{$name} or return 1;
|
|
$pkg->{name} or do {
|
|
$pkg->{name} or do {
|
|
$installed{$name} and return 0;
|
|
$installed{$name} and return 0;
|
|
# TODO: check if this is an alias package, maybe it's known by another name
|
|
# TODO: check if this is an alias package, maybe it's known by another name
|
|
@@ -488,8 +486,8 @@ sub install {
|
|
get_installed();
|
|
get_installed();
|
|
|
|
|
|
foreach my $f (@feeds) {
|
|
foreach my $f (@feeds) {
|
|
- # index all feeds
|
|
|
|
- $feed{$f->[1]} = get_feed($f->[1]);
|
|
|
|
|
|
+ # fetch all feeds
|
|
|
|
+ get_feed($f->[1]);
|
|
|
|
|
|
# look up the preferred feed
|
|
# look up the preferred feed
|
|
$opts{p} and $f->[1] eq $opts{p} and $feed = $f;
|
|
$opts{p} and $f->[1] eq $opts{p} and $feed = $f;
|