[OpenWrt-Devel] [PATCH v2] scripts/feeds: add src-include method
John Crispin
john at phrozen.org
Wed Jun 5 08:31:36 EDT 2019
On 05/06/2019 14:19, Bjørn Mork wrote:
> 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 <bjorn at mork.no>
> ---
>
> It would of course be nice of me if I had tested my patches, even
> if they are only meant for discussion.
>
> This version actually works. Changes in v2:
> - use a variable for the file handle so we can open files recursively
> - match on the real 'src-include' keyword
>
>
> Bjørn
Hi Bjørn
that would again involve carrying extra files around, which is what I am
trying to avoid
John
>
> scripts/feeds | 37 ++++++++++++++++++++++++++-----------
> 1 file changed, 26 insertions(+), 11 deletions(-)
>
> diff --git a/scripts/feeds b/scripts/feeds
> index 304ef6cbafd1..a4dfd9e260a8 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 (<FEEDS>) {
> + 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($$)
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list