scripts/feeds: add support for installing targets

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 44781
This commit is contained in:
Felix Fietkau 2015-03-15 11:08:05 +00:00
parent 797b0459c4
commit 2484f3a86a

View file

@ -366,6 +366,30 @@ sub do_install_package($$) {
return 0; return 0;
} }
sub do_install_target($) {
my $target = shift;
my $path = $target->{makefile};
if ($path) {
$path =~ s/\/Makefile$//;
my $name = $path;
$name =~ s/.*\///;
my $dest = "./target/linux/$name";
-e $dest and do {
warn "Path $dest already exists";
return 1;
};
system("ln -sf ../../$path ./target/linux/");
} else {
warn "Package is not valid\n";
return 1;
}
return 0;
}
sub lookup_package($$) { sub lookup_package($$) {
my $feed = shift; my $feed = shift;
my $package = shift; my $package = shift;
@ -378,6 +402,18 @@ sub lookup_package($$) {
return; return;
} }
sub lookup_target($$) {
my $feed = shift;
my $target = shift;
foreach my $feed ($feed, @feeds) {
next unless $feed->[1];
next unless $feed_cache{$feed->[1]};
$feed_cache{$feed->[1]}->[2]->{$target} and return $feed;
}
return;
}
sub is_core_package($) { sub is_core_package($) {
my $package = shift; my $package = shift;
foreach my $file ("tmp/info/.packageinfo-$package", glob("tmp/info/.packageinfo-*_$package")) { foreach my $file ("tmp/info/.packageinfo-$package", glob("tmp/info/.packageinfo-*_$package")) {
@ -387,12 +423,33 @@ sub is_core_package($) {
return 0; return 0;
} }
sub install_target {
my $feed = shift;
my $name = shift;
$feed = $feed_cache{$feed->[1]}->[2];
$feed or return 0;
my $target = $feed->{$name};
$target or return 0;
warn "Installing target '$name'\n";
return do_install_target($target);
}
sub install_package { sub install_package {
my $feed = shift; my $feed = shift;
my $name = shift; my $name = shift;
my $force = shift; my $force = shift;
my $ret = 0; my $ret = 0;
$feed = lookup_target($feed, $name);
$feed and do {
$installed_targets{$name} and return 0;
install_target($feed, $name);
return 0;
};
$feed = lookup_package($feed, $name); $feed = lookup_package($feed, $name);
$feed or do { $feed or do {
$installed{$name} and return 0; $installed{$name} and return 0;