From: Felix Fietkau Date: Sun, 15 Mar 2015 11:08:05 +0000 (+0000) Subject: scripts/feeds: add support for installing targets X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=2484f3a86a49be9bedf84da55e1dfe41d8e42b09;p=openwrt%2Fstaging%2Fstintel.git scripts/feeds: add support for installing targets Signed-off-by: Felix Fietkau SVN-Revision: 44781 --- 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;