Build types are a property of source rather than binary packages. This is a
preparation for followup cleanup.

Signed-off-by: Matthias Schiffer <mschif...@universe-factory.net>
---
 scripts/metadata.pm         |  4 ++--
 scripts/package-metadata.pl | 13 +++++++------
 2 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/scripts/metadata.pm b/scripts/metadata.pm
index 297abc9f12..985e6237a6 100644
--- a/scripts/metadata.pm
+++ b/scripts/metadata.pm
@@ -214,6 +214,7 @@ sub parse_package_metadata($) {
                        $subdir{$src} = $subdir;
                        $srcpackage{$src} = {
                                packages => [],
+                               buildtypes => [],
                        };
                        $override = "";
                        undef $pkg;
@@ -234,7 +235,6 @@ sub parse_package_metadata($) {
                        $pkg->{depends} = [];
                        $pkg->{mdepends} = [];
                        $pkg->{builddepends} = [];
-                       $pkg->{buildtypes} = [];
                        $pkg->{subdir} = $subdir;
                        $pkg->{tristate} = 1;
                        $pkg->{override} = $override;
@@ -258,6 +258,7 @@ sub parse_package_metadata($) {
                        /^Feature-Description:/ and $feature->{description} = 
get_multiline(\*FILE, "\t\t\t");
                        next;
                };
+               /^Build-Types:\s*(.+)\s*$/ and $srcpackage{$src}->{buildtypes} 
= [ split /\s+/, $1 ];
                next unless $pkg;
                /^Version: \s*(.+)\s*$/ and $pkg->{version} = $1;
                /^Title: \s*(.+)\s*$/ and $pkg->{title} = $1;
@@ -290,7 +291,6 @@ sub parse_package_metadata($) {
                /^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 ];
-               /^Build-Types:\s*(.+)\s*$/ and $pkg->{buildtypes} = [ split 
/\s+/, $1 ];
                /^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 3a176c8024..08c2343ade 100755
--- a/scripts/package-metadata.pl
+++ b/scripts/package-metadata.pl
@@ -421,6 +421,7 @@ sub gen_package_mk() {
        foreach my $name (sort {uc($a) cmp uc($b)} keys %package) {
                my $config;
                my $pkg = $package{$name};
+               my $src = $srcpackage{$pkg->{src}};
                my @srcdeps;
 
                next if defined $pkg->{vdepends};
@@ -441,11 +442,11 @@ sub gen_package_mk() {
                next if $done{$pkg->{src}};
                $done{$pkg->{src}} = 1;
 
-               if (@{$pkg->{buildtypes}} > 0) {
-                       print "buildtypes-$pkg->{subdir}$pkg->{src} = ".join(' 
', @{$pkg->{buildtypes}})."\n";
+               if (@{$src->{buildtypes}} > 0) {
+                       print "buildtypes-$pkg->{subdir}$pkg->{src} = ".join(' 
', @{$src->{buildtypes}})."\n";
                }
 
-               foreach my $spkg (@{$srcpackage{$pkg->{src}}->{packages}}) {
+               foreach my $spkg (@{$src->{packages}}) {
                        foreach my $dep (@{$spkg->{depends}}, 
@{$spkg->{builddepends}}) {
                                $dep =~ /@/ or do {
                                        $dep =~ s/\+//g;
@@ -453,7 +454,7 @@ sub gen_package_mk() {
                                };
                        }
                }
-               foreach my $type (@{$pkg->{buildtypes}}) {
+               foreach my $type (@{$src->{buildtypes}}) {
                        my @extra_deps;
                        my %deplines;
 
@@ -476,7 +477,7 @@ sub gen_package_mk() {
                                my $idx = "";
                                my $pkg_dep = $package{$dep};
                                if (defined($pkg_dep) && 
defined($pkg_dep->{src})) {
-                                       unless (!$deptype || grep { $_ eq 
$deptype } @{$pkg_dep->{buildtypes}}) {
+                                       unless (!$deptype || grep { $_ eq 
$deptype } @{$srcpackage{$pkg_dep->{src}}->{buildtypes}}) {
                                                warn sprintf "WARNING: Makefile 
'%s' has a %s build dependency on '%s/%s' but '%s' does not implement a '%s' 
build type\n",
                                                        $pkg->{makefile}, 
$type, $pkg_dep->{src}, $deptype, $pkg_dep->{makefile}, $deptype;
                                                next;
@@ -530,7 +531,7 @@ sub gen_package_mk() {
                        foreach my $dep (@deps) {
                                $pkg_dep = $package{$deps};
                                if (defined $pkg_dep->{src}) {
-                                       unless (!$deptype || grep { $_ eq 
$deptype } @{$pkg_dep->{buildtypes}}) {
+                                       unless (!$deptype || grep { $_ eq 
$deptype } @{$srcpackage{$pkg_dep->{src}}->{buildtypes}}) {
                                                warn sprintf "WARNING: Makefile 
'%s' has a build dependency on '%s/%s' but '%s' does not implement a '%s' build 
type\n",
                                                        $pkg->{makefile}, 
$pkg_dep->{src}, $deptype, $pkg_dep->{makefile}, $deptype;
                                                next;
-- 
2.15.1


_______________________________________________
Lede-dev mailing list
Lede-dev@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/lede-dev

Reply via email to