Files
buildroot/utils/checksymbolslib
Raphaël Mélotte 48e4bab464 utils/check-symbols: check for undefined host symbols
get_warnings_for_symbols_without_definition() skips any symbol
matching BR2_PACKAGE_HOST_* or BR2_PACKAGE_HAS_HOST_*, via
br.re_host_symbol. This blanket exclusion was needed because
we don't require a Config.in.host to be present for host packages,
so BR2_PACKAGE_HOST_FOO may in fact be undefined and that's
perfectly fine.

However, this also excludes any other options that should be defined in
the Config.in.host, e.g. a BR2_PACKAGE_HOST_FOO_BAR suboption. If such
an option is misspelled in the .mk file, we will not notice.

We already treat the BR2_PACKAGE_* symbols specially. They are
considered as "used" even if there is no direct reference to them in the
.mk file. This is done in the handle_eval function. Depending on the
package infra and the type of package (bootloader, toolchain, ...) it
sets the corresponding kconfig symbol as "used".

At that point, we can also handle the special case of the host kconfig
symbols. Instead of a blanket exclusion, we say that the
BR2_PACKAGE_HOST_FOO option is implicitly defined by the eval statement.
We only add BR2_PACKAGE_HOST_FOO as implicitly defined, so any
suboptions will still be checked by
get_warnings_for_symbols_without_definition().

We could alternatively also have skipped the "usage" marking of host
packages. This approach felt more consistent though.

Make handle_eval() in checksymbolslib/makefile.py record the
implicitly defined symbols directly, at the $(eval $(host-...))
line that creates them:
- BR2_PACKAGE_HOST_<PKG> as a definition, for host-*-package and
  host-virtual-package;
- BR2_PACKAGE_HAS_HOST_<PKG> as virtual, for host-virtual-package,
  mirroring how the plain virtual-package case already registers
  BR2_PACKAGE_HAS_<PKG>.

This makes br.re_host_symbol and its use in
get_warnings_for_symbols_without_definition() unnecessary, so drop
them. The check now flags a real symbol name once it lacks both an
explicit and an implicit definition, instead of ignoring the whole
BR2_PACKAGE_HOST_*/BR2_PACKAGE_HAS_HOST_* namespace.

Assisted-by: LLM
Signed-off-by: Raphaël Mélotte <raphael.melotte@mind.be>
Signed-off-by: Arnout Vandecappelle <arnout@rnout.be>
2026-10-11 12:06:34 +02:00
..
…