diff options
author | Felix Fietkau <nbd@openwrt.org> | 2015-03-15 11:08:05 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2015-03-15 11:08:05 +0000 |
commit | 2484f3a86a49be9bedf84da55e1dfe41d8e42b09 (patch) | |
tree | babc81fa015a5d84e6968aad65d35795c24cd7d6 /scripts | |
parent | 797b0459c43a6c3afc6ea264430777c76591852a (diff) | |
download | upstream-2484f3a86a49be9bedf84da55e1dfe41d8e42b09.tar.gz upstream-2484f3a86a49be9bedf84da55e1dfe41d8e42b09.tar.bz2 upstream-2484f3a86a49be9bedf84da55e1dfe41d8e42b09.zip |
scripts/feeds: add support for installing targets
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 44781
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/feeds | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/scripts/feeds b/scripts/feeds index a1795e1639..62edb66820 100755 --- a/scripts/feeds +++ b/scripts/feeds @@ -366,6 +366,30 @@ sub do_install_package($$) { 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($$) { my $feed = shift; my $package = shift; @@ -378,6 +402,18 @@ sub lookup_package($$) { 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($) { my $package = shift; foreach my $file ("tmp/info/.packageinfo-$package", glob("tmp/info/.packageinfo-*_$package")) { @@ -387,12 +423,33 @@ sub is_core_package($) { 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 { my $feed = shift; my $name = shift; my $force = shift; 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 or do { $installed{$name} and return 0; |