diff --git a/scripts/feeds b/scripts/feeds index 0228c7ac07..0a7e9317f8 100755 --- a/scripts/feeds +++ b/scripts/feeds @@ -525,15 +525,17 @@ sub install_package { }; # install all dependencies referenced from the source package - foreach my $vpkg (@{$feed_src->{$src}{packages}}) { - foreach my $dep (@{$vpkg->{depends}}, @{$vpkg->{builddepends}}, @{$vpkg->{"builddepends/host"}}) { - next if $dep =~ /@/; - $dep =~ s/^\+//; - $dep =~ s/^.+://; - $dep =~ s/\/.+$//; - next unless $dep; - install_package($feed, $dep, 0) == 0 or $ret = 1; - } + foreach my $dep ( + @{$feed_src->{$src}{builddepends}}, + @{$feed_src->{$src}{"builddepends/host"}}, + map { @{$_->{depends}} } @{$feed_src->{$src}{packages}} + ) { + next if $dep =~ /@/; + $dep =~ s/^\+//; + $dep =~ s/^.+://; + $dep =~ s/\/.+$//; + next unless $dep; + install_package($feed, $dep, 0) == 0 or $ret = 1; } return $ret; diff --git a/scripts/metadata.pm b/scripts/metadata.pm index d756c7242d..8cc7530a1d 100644 --- a/scripts/metadata.pm +++ b/scripts/metadata.pm @@ -215,6 +215,7 @@ sub parse_package_metadata($) { $srcpackage{$src} = { packages => [], buildtypes => [], + builddepends => [], }; $override = ""; undef $pkg; @@ -234,7 +235,6 @@ sub parse_package_metadata($) { $pkg->{title} = ""; $pkg->{depends} = []; $pkg->{mdepends} = []; - $pkg->{builddepends} = []; $pkg->{subdir} = $subdir; $pkg->{tristate} = 1; $pkg->{override} = $override; @@ -258,6 +258,8 @@ sub parse_package_metadata($) { /^Feature-Description:/ and $feature->{description} = get_multiline(\*FILE, "\t\t\t"); next; }; + /^Build-Depends: \s*(.+)\s*$/ and $srcpackage{$src}{builddepends} = [ split /\s+/, $1 ]; + /^Build-Depends\/(\w+): \s*(.+)\s*$/ and $srcpackage{$src}{"builddepends/$1"} = [ split /\s+/, $2 ]; /^Build-Types:\s*(.+)\s*$/ and $srcpackage{$src}{buildtypes} = [ split /\s+/, $1 ]; next unless $pkg; /^Version: \s*(.+)\s*$/ and $pkg->{version} = $1; @@ -289,8 +291,6 @@ sub parse_package_metadata($) { /^Build-Variant: \s*([\w\-]+)\s*/ and $pkg->{variant} = $1; /^Default-Variant: .*/ and $pkg->{variant_default} = 1; /^Build-Only: \s*(.+)\s*$/ and $pkg->{buildonly} = 1; - /^Build-Depends: \s*(.+)\s*$/ and $pkg->{builddepends} = [ split /\s+/, $1 ]; - /^Build-Depends\/(\w+): \s*(.+)\s*$/ and $pkg->{"builddepends/$1"} = [ split /\s+/, $2 ]; /^Repository:\s*(.+?)\s*$/ and $pkg->{repository} = $1; /^Category: \s*(.+)\s*$/ and do { $pkg->{category} = $1; diff --git a/scripts/package-metadata.pl b/scripts/package-metadata.pl index 22de5b1ba0..97b57c65eb 100755 --- a/scripts/package-metadata.pl +++ b/scripts/package-metadata.pl @@ -446,20 +446,18 @@ sub gen_package_mk() { print "buildtypes-$pkg->{subdir}$pkg->{src} = ".join(' ', @{$src->{buildtypes}})."\n"; } - foreach my $spkg (@{$src->{packages}}) { - foreach my $dep (@{$spkg->{depends}}, @{$spkg->{builddepends}}) { - $dep =~ /@/ or do { - $dep =~ s/\+//g; - push @srcdeps, $dep; - }; - } + foreach my $dep (@{$src->{builddepends}}, map { @{$_->{depends}} } @{$src->{packages}}) { + $dep =~ /@/ or do { + $dep =~ s/\+//g; + push @srcdeps, $dep; + }; } foreach my $type (@{$src->{buildtypes}}) { my @extra_deps; my %deplines; - next unless $pkg->{"builddepends/$type"}; - foreach my $dep (@{$pkg->{"builddepends/$type"}}) { + next unless $src->{"builddepends/$type"}; + foreach my $dep (@{$src->{"builddepends/$type"}}) { my $suffix = ""; my $deptype = ""; my $condition;