From: Jo-Philipp Wich Date: Wed, 2 Nov 2016 00:45:06 +0000 (+0100) Subject: scripts/package-metadata.pl: honour DEFAULT_VARIANT X-Git-Tag: v17.01.0-rc1~974 X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=12d15fa8a5096913927d75958d0ed3af9d963e73;p=openwrt%2Fstaging%2Fchunkeey.git scripts/package-metadata.pl: honour DEFAULT_VARIANT So far, package-metadata.pl always considered the first provider of a virtual package to be the default variant which might deviate from what buildroot considers to be the default. Change the Kconfig dependency / select code generation for virtual package providers to consider the DEFAULT_VARIANT to be the primary provider and only fall back to the first provider if no default variant was explicitely tagged. Signed-off-by: Jo-Philipp Wich --- diff --git a/scripts/package-metadata.pl b/scripts/package-metadata.pl index 1a4f103810..f8f16f07fa 100755 --- a/scripts/package-metadata.pl +++ b/scripts/package-metadata.pl @@ -176,8 +176,21 @@ sub mconf_depends { next if $package{$depend} and $package{$depend}->{buildonly}; if ($flags =~ /\+/) { if ($vdep = $package{$depend}->{vdepends}) { - my @vdeps = @$vdep; - $depend = shift @vdeps; + my @vdeps; + $depend = undef; + + foreach my $v (@$vdep) { + if ($package{$v} && $package{$v}->{variant_default}) { + $depend = $v; + } else { + push @vdeps, $v; + } + } + + if (!$depend) { + $depend = shift @vdeps; + } + if (@vdeps > 1) { $condition = ($condition ? "$condition && " : '') . '!('.join("||", map { "PACKAGE_".$_ } @vdeps).')'; } elsif (@vdeps > 0) {