From: Bjørn Mork Date: Wed, 5 Jun 2019 12:19:11 +0000 (+0200) Subject: scripts/feeds: add src-include method X-Git-Tag: v19.07.0-rc1~252 X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=1e887ddc8d805a76b59687bea9f520ccb0557223;p=openwrt%2Fstaging%2Fchunkeey.git scripts/feeds: add src-include method The src-include method allows recursive inclusion of feeds.conf snippets. This can for example be used for adding static local feeds to feeds.conf.default without ever having to update the local feeds.conf: src-include defaults feeds.conf.default src-link custom /usr/local/src/lede/custom Signed-off-by: Bjørn Mork (cherry picked from commit 7a1b575ac4ede2778bb21cfafa7a1152d9d2555f) --- diff --git a/scripts/feeds b/scripts/feeds index 304ef6cbaf..a4dfd9e260 100755 --- a/scripts/feeds +++ b/scripts/feeds @@ -41,34 +41,49 @@ my $feed_src = {}; my $feed_target = {}; my $feed_vpackage = {}; -sub parse_config() { +sub parse_file($$); + +sub parse_file($$) { + my ($fname, $name) = @_; my $line = 0; - my %name; + my $fh; - open FEEDS, "feeds.conf" or - open FEEDS, "feeds.conf.default" or - die "Unable to open feeds configuration"; - while () { + open $fh, $fname or return undef; + while (<$fh>) { chomp; s/#.+$//; + $line++; next unless /\S/; my @line = split /\s+/, $_, 3; my @src; - $line++; my $valid = 1; $line[0] =~ /^src-[\w-]+$/ or $valid = 0; $line[1] =~ /^\w+$/ or $valid = 0; @src = split /\s+/, ($line[2] or ''); @src = ('') if @src == 0; - $valid or die "Syntax error in feeds.conf, line: $line\n"; + $valid or die "Syntax error in $fname, line: $line\n"; - $name{$line[1]} and die "Duplicate feed name '$line[1]', line: $line\n"; - $name{$line[1]} = 1; + $name->{$line[1]} and die "Duplicate feed name '$line[1]' in '$fname' line: $line\n"; + $name->{$line[1]} = 1; + + if ($line[0] eq "src-include") { + parse_file($line[2], $name) or + die "Unable to open included file '$line[2]'"; + next; + } push @feeds, [$line[0], $line[1], \@src]; } - close FEEDS; + close $fh; + return 1; +} + +sub parse_config() { + my %name; + parse_file("feeds.conf", \%name) or + parse_file("feeds.conf.default", \%name) or + die "Unable to open feeds configuration"; } sub update_location($$)