scripts/package-metadata.pl: list every build variant only once

If several packages of a source use the same build variant, the
variant is added to the list of variants once for each selected
package, and the variant is built as often, one after the other. With
all packages selected, hostapd builds 4 variants twice, and f2fs-tools
its 2 variants four times each.

Add each variant once, with the condition of all packages that use it.

Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
John Crispin committed 2026-09-22 18:18:58 +02:00
1 parent 4547335cc7
commit d0379f4a5a
1 file changed
+8 -1
+8 -1
View File
@@ -446,6 +446,8 @@ sub gen_package_mk() {
foreach my $srcname (sort {uc($a) cmp uc($b)} keys %srcpackage) {
my $src = $srcpackage{$srcname};
my $variant_default;
my @variants;
my %variant_config;
my %deplines = ('' => {});
foreach my $pkg (@{$src->{packages}}) {
@@ -495,10 +497,15 @@ sub gen_package_mk() {
if (!defined($variant_default) or $pkg->{variant_default}) {
$variant_default = $pkg->{variant};
}
printf "\$(curdir)/%s/variants += \$(if %s,%s)\n", $src->{path}, $config, $pkg->{variant};
push @variants, $pkg->{variant} unless defined $variant_config{$pkg->{variant}};
$variant_config{$pkg->{variant}} .= $config;
}
}
foreach my $variant (@variants) {
printf "\$(curdir)/%s/variants += \$(if %s,%s)\n", $src->{path}, $variant_config{$variant}, $variant;
}
if (defined($variant_default)) {
printf "\$(curdir)/%s/default-variant := %s\n", $src->{path}, $variant_default;
}