build: config: allow bool to select a module pkg

kconfig-v5.6 disallowed a bool symbol to select another symbol that
'depends on m' (i.e. can be only 'm' on 'n').  It is, in fact, an unmet
dependency to have set to 'y'.  However, openwrt depends on the previous
behavior, to be able to build a package that can be a module or built-in
depending on a bool config.  This restores the previous behavior.

Ref: https://forum.openwrt.org/t/wireless-fails-on-snapshot-r12900-kernel-5-4-on-c2600-ipq806x
Tested-by: Hannu Nyman <hannu.nyman@iki.fi>
Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
Signed-off-by: Petr Štetiar <ynezz@true.cz> [added forum ref]
This commit is contained in:
Eneas U de Queiroz 2020-04-09 21:39:17 -03:00 committed by Petr Štetiar
parent c30220d458
commit 8514b6b42c
2 changed files with 4 additions and 2 deletions

View File

@ -22,7 +22,9 @@ OpenWrt Buildroot:
that may cause one.
- use pre-built *.lex.c *.tab.[ch] files by default, to avoid depending on
flex & bison. Rebuild/remove these files only if running make with
BUILD_SHIPPED_FILES defined
BUILD_SHIPPED_FILES defined.
- allow a bool symbol to select a tristate symbol that depends on m (i.e.
a package that should only be built as a module).
For a full list of changes, see the repository at:
https://github.com/cotequeiroz/linux/commits/openwrt/scripts/kconfig

View File

@ -205,7 +205,7 @@ static void sym_calc_visibility(struct symbol *sym)
tri = yes;
if (sym->dir_dep.expr)
tri = expr_calc_value(sym->dir_dep.expr);
if (tri == mod && sym_get_type(sym) == S_BOOLEAN)
if (tri == mod)
tri = yes;
if (sym->dir_dep.tri != tri) {
sym->dir_dep.tri = tri;