From 0bfac320ea5a37b82a9574bc673d1ab55c278831 Mon Sep 17 00:00:00 2001 From: Jonas Gorski Date: Sat, 15 Jun 2019 15:04:53 +0200 Subject: [PATCH] metadata: ensure one dependency provider to be y if a package is y When there are multiple packages providing a meta-package, it is possible to to create a config where a package is selected as =y, but all of its dependency providers are just selected as =m. This is due to the selection statement being just config PACKAGE_foo select PACKAGE_bar if !PACKAGE_baz which is already fulfilled by PACKAGE_bar=m. Fix this by properly comparing the selection states: config PACKAGE_foo select PACKAGE_bar if PACKAGE_baz [slightly reword commit message] Signed-off-by: Jo-Philipp Wich (cherry picked from commit 1fd50531cac9c41334d8f57e2dbc1f50c3572445) --- scripts/package-metadata.pl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/package-metadata.pl b/scripts/package-metadata.pl index 76b09a56eb..27215f5e57 100755 --- a/scripts/package-metadata.pl +++ b/scripts/package-metadata.pl @@ -191,9 +191,9 @@ sub mconf_depends { $depend = shift @vdeps; if (@vdeps > 1) { - $condition = ($condition ? "$condition && " : '') . '!('.join("||", map { "PACKAGE_".$_ } @vdeps).')'; + $condition = ($condition ? "$condition && " : '') . join("&&", map { "PACKAGE_$_ 0) { - $condition = ($condition ? "$condition && " : '') . '!PACKAGE_'.$vdeps[0]; + $condition = ($condition ? "$condition && " : '') . "PACKAGE_${vdeps[0]}