From ebc36ebb2349ef5d492dd2bd5be962bac26bb19a Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Mon, 24 Jan 2022 13:28:36 +0100 Subject: scripts/feeds: install targets to target/linux/feeds and support overriding Signed-off-by: Felix Fietkau --- scripts/feeds | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) (limited to 'scripts/feeds') diff --git a/scripts/feeds b/scripts/feeds index 7392ddf944..d8bbd48663 100755 --- a/scripts/feeds +++ b/scripts/feeds @@ -434,14 +434,16 @@ sub do_install_target($) { $path =~ s/\/Makefile$//; my $name = $path; $name =~ s/.*\///; - my $dest = "./target/linux/$name"; + my $dest = "./target/linux/feeds/$name"; + + -d "./target/linux/feeds" or mkdir "./target/linux/feeds"; -e $dest and do { warn "Path $dest already exists"; return 1; }; - system("ln -sf ../../$path ./target/linux/"); + system("ln -sf ../../../$path ./target/linux/feeds/"); } else { warn "Target is not valid\n"; return 1; @@ -498,18 +500,34 @@ sub is_core_src($) { sub install_target { my $feed = shift; my $name = shift; + my $force = shift; $feed = lookup_target($feed, $name); + my $feed_name = $feed->[1]; + + -e "target/linux/feeds/$name" and return 0; - $installed_targets{$name} and return 0; + # enable force flag if feed src line was declared with --force + if (exists($feed->[3]{force})) { + $force = 1; + } - $feed = $feed_cache{$feed->[1]}->[2]; + $feed = $feed_cache{$feed_name}->[2]; $feed or return 0; my $target = $feed->{$name}; $target or return 0; - warn "Installing target '$name'\n"; + if (-e "target/linux/$name") { + if ($force) { + warn "Overriding target '$name' with version from '$feed_name'\n"; + } else { + warn "WARNING: Not overriding core target '$name'; use -f to force\n"; + return 0; + } + } else { + warn "Installing target '$name'\n"; + } return do_install_target($target); } @@ -620,7 +638,7 @@ sub install_target_or_package { my $force = shift; lookup_target($feed, $name) and do { - return install_target($feed, $name); + return install_target($feed, $name, $force); }; lookup_src($feed, $name) and do { @@ -736,7 +754,7 @@ sub uninstall { } get_installed(); while ($name = shift @ARGV) { - my $target = "target/linux/$name"; + my $target = "target/linux/feeds/$name"; -l "$target" and do { uninstall_target($target); $uninstall = 1; @@ -903,7 +921,7 @@ my %commands = ( 'uninstall' => \&uninstall, 'feed_config' => \&feed_config, 'clean' => sub { - system("rm -rf ./feeds ./package/feeds"); + system("rm -rf ./feeds ./package/feeds ./target/linux/feeds"); } ); -- cgit v1.2.3