From 39be6e7f19c917981365d75527fdd183c6b81ca8 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sat, 6 Jan 2018 13:53:42 +0100 Subject: [PATCH] metadata: move 'buildtypes' from binary to source packages Build types are a property of source rather than binary packages. This is a preparation for followup cleanup. Signed-off-by: Matthias Schiffer --- 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 fdb1fbb433..d756c7242d 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 f03547a0d4..22de5b1ba0 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;