mirror of https://github.com/hak5/openwrt.git
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<PACKAGE_foo Also invert the select conditions to improve readability. Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> [slightly reword commit message] Signed-off-by: Jo-Philipp Wich <jo@mein.io>master
parent
74739c4228
commit
1fd50531ca
|
@ -191,9 +191,9 @@ sub mconf_depends {
|
||||||
$depend = shift @vdeps;
|
$depend = shift @vdeps;
|
||||||
|
|
||||||
if (@vdeps > 1) {
|
if (@vdeps > 1) {
|
||||||
$condition = ($condition ? "$condition && " : '') . '!('.join("||", map { "PACKAGE_".$_ } @vdeps).')';
|
$condition = ($condition ? "$condition && " : '') . join("&&", map { "PACKAGE_$_<PACKAGE_$pkgname" } @vdeps);
|
||||||
} elsif (@vdeps > 0) {
|
} elsif (@vdeps > 0) {
|
||||||
$condition = ($condition ? "$condition && " : '') . '!PACKAGE_'.$vdeps[0];
|
$condition = ($condition ? "$condition && " : '') . "PACKAGE_${vdeps[0]}<PACKAGE_$pkgname";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue