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 <mschiffer@universe-factory.net>
v19.07.3_mercusys_ac12_duma
Matthias Schiffer 6 years ago
parent 19577582e4
commit 39be6e7f19
No known key found for this signature in database
GPG Key ID: 16EF3F64CB201D9C

@ -214,6 +214,7 @@ sub parse_package_metadata($) {
$subdir{$src} = $subdir; $subdir{$src} = $subdir;
$srcpackage{$src} = { $srcpackage{$src} = {
packages => [], packages => [],
buildtypes => [],
}; };
$override = ""; $override = "";
undef $pkg; undef $pkg;
@ -234,7 +235,6 @@ sub parse_package_metadata($) {
$pkg->{depends} = []; $pkg->{depends} = [];
$pkg->{mdepends} = []; $pkg->{mdepends} = [];
$pkg->{builddepends} = []; $pkg->{builddepends} = [];
$pkg->{buildtypes} = [];
$pkg->{subdir} = $subdir; $pkg->{subdir} = $subdir;
$pkg->{tristate} = 1; $pkg->{tristate} = 1;
$pkg->{override} = $override; $pkg->{override} = $override;
@ -258,6 +258,7 @@ sub parse_package_metadata($) {
/^Feature-Description:/ and $feature->{description} = get_multiline(\*FILE, "\t\t\t"); /^Feature-Description:/ and $feature->{description} = get_multiline(\*FILE, "\t\t\t");
next; next;
}; };
/^Build-Types:\s*(.+)\s*$/ and $srcpackage{$src}{buildtypes} = [ split /\s+/, $1 ];
next unless $pkg; next unless $pkg;
/^Version: \s*(.+)\s*$/ and $pkg->{version} = $1; /^Version: \s*(.+)\s*$/ and $pkg->{version} = $1;
/^Title: \s*(.+)\s*$/ and $pkg->{title} = $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-Only: \s*(.+)\s*$/ and $pkg->{buildonly} = 1;
/^Build-Depends: \s*(.+)\s*$/ and $pkg->{builddepends} = [ split /\s+/, $1 ]; /^Build-Depends: \s*(.+)\s*$/ and $pkg->{builddepends} = [ split /\s+/, $1 ];
/^Build-Depends\/(\w+): \s*(.+)\s*$/ and $pkg->{"builddepends/$1"} = [ split /\s+/, $2 ]; /^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; /^Repository:\s*(.+?)\s*$/ and $pkg->{repository} = $1;
/^Category: \s*(.+)\s*$/ and do { /^Category: \s*(.+)\s*$/ and do {
$pkg->{category} = $1; $pkg->{category} = $1;

@ -421,6 +421,7 @@ sub gen_package_mk() {
foreach my $name (sort {uc($a) cmp uc($b)} keys %package) { foreach my $name (sort {uc($a) cmp uc($b)} keys %package) {
my $config; my $config;
my $pkg = $package{$name}; my $pkg = $package{$name};
my $src = $srcpackage{$pkg->{src}};
my @srcdeps; my @srcdeps;
next if defined $pkg->{vdepends}; next if defined $pkg->{vdepends};
@ -441,11 +442,11 @@ sub gen_package_mk() {
next if $done{$pkg->{src}}; next if $done{$pkg->{src}};
$done{$pkg->{src}} = 1; $done{$pkg->{src}} = 1;
if (@{$pkg->{buildtypes}} > 0) { if (@{$src->{buildtypes}} > 0) {
print "buildtypes-$pkg->{subdir}$pkg->{src} = ".join(' ', @{$pkg->{buildtypes}})."\n"; 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}}) { foreach my $dep (@{$spkg->{depends}}, @{$spkg->{builddepends}}) {
$dep =~ /@/ or do { $dep =~ /@/ or do {
$dep =~ s/\+//g; $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 @extra_deps;
my %deplines; my %deplines;
@ -476,7 +477,7 @@ sub gen_package_mk() {
my $idx = ""; my $idx = "";
my $pkg_dep = $package{$dep}; my $pkg_dep = $package{$dep};
if (defined($pkg_dep) && defined($pkg_dep->{src})) { 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", 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; $pkg->{makefile}, $type, $pkg_dep->{src}, $deptype, $pkg_dep->{makefile}, $deptype;
next; next;
@ -530,7 +531,7 @@ sub gen_package_mk() {
foreach my $dep (@deps) { foreach my $dep (@deps) {
$pkg_dep = $package{$deps}; $pkg_dep = $package{$deps};
if (defined $pkg_dep->{src}) { 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", 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; $pkg->{makefile}, $pkg_dep->{src}, $deptype, $pkg_dep->{makefile}, $deptype;
next; next;

Loading…
Cancel
Save