diff options
author | Jonas Gorski <jonas.gorski@gmail.com> | 2019-06-15 15:04:53 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2019-09-04 13:15:53 +0200 |
commit | 0bfac320ea5a37b82a9574bc673d1ab55c278831 (patch) | |
tree | 3f29b0c9386b4e45a79f38a2c4f33738cba67eaa /scripts | |
parent | 1754dc2ddba23453da158a8430f7f31b7dfe26d9 (diff) | |
download | openwrt-0bfac320ea5a37b82a9574bc673d1ab55c278831.tar.gz openwrt-0bfac320ea5a37b82a9574bc673d1ab55c278831.tar.bz2 openwrt-0bfac320ea5a37b82a9574bc673d1ab55c278831.zip |
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>
(cherry picked from commit 1fd50531cac9c41334d8f57e2dbc1f50c3572445)
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/package-metadata.pl | 4 |
1 files 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_$_<PACKAGE_$pkgname" } @vdeps); } elsif (@vdeps > 0) { - $condition = ($condition ? "$condition && " : '') . '!PACKAGE_'.$vdeps[0]; + $condition = ($condition ? "$condition && " : '') . "PACKAGE_${vdeps[0]}<PACKAGE_$pkgname"; } } |