kumquat-buildroot/support/misc
Ricardo Martincoski 0c5472ace2 utils/check-symbols: new script
This script checks for inconsistencies on symbols declared in Config.in
and used in .mk files.
Currently it checks only symbols following the pattern BR2_\w+ .

The script first gets the list of all files in the repository (using git
ls-files like 'make check-flake8' already do).

Then it parses all relevant files, searching for symbol definitions and
usages, and add entries into a database.

At the end, the database is searched for inconsistencies:
- symbol that is part of "choice" and is referenced with "select";
- legacy symbol being referenced in packages;
- legacy symbol being redefined in packages;
- symbol referenced but not defined;
- symbol defined but not referenced;
- legacy symbol that has a Note stating it is referenced by a package
  (for legacy handling) but is referenced in the package without a
  comment "# legacy";
- legacy symbol that has a Note stating it is referenced by a package
  but it is not actually referenced.

There is also a debug parameter --search that dumps any filename or
symbol entries from the database that matches a regexp.

Sample usages:
$ utils/check-symbols
$ utils/docker-run utils/check-symbols
$ utils/check-symbols --search 'GETTEXT\b|\/openssl'

At same time the script is created:
- add unit tests for it, they can be run using:
  utils/docker-run python3 -m pytest -v utils/checksymbolslib/
- add two more GitLab CI jobs: check-symbols (to check current tree
  using the script) and check-check-symbols (to check the script against
  its unit tests)

Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com>
[Peter: print warnings to stderr, rename change_current_dir() to
	change_to_top_dir()]
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
2023-02-06 16:30:20 +01:00
..
Buildroot.cmake support/cmake: Explicitly set CMAKE_SYSTEM 2019-08-03 19:17:32 +02:00
cross-compilation.conf.in package/pkg-meson.mk: add support for fortran cross-compilation 2022-08-06 23:57:44 +02:00
gen-glibc-locales.mk Makefile: Parallelize glibc locale generation 2021-07-25 16:46:30 +02:00
gitlab-ci.yml.in utils/check-symbols: new script 2023-02-06 16:30:20 +01:00
relocate-sdk.sh support/misc/relocate-sdk.sh: allow relocating to any directory 2022-01-06 22:27:56 +01:00
target-dir-warning.txt support/misc/target-dir-warning.txt: fix typo 2017-06-14 21:14:59 +02:00
toolchainfile.cmake.in support/misc/toolchainfile.cmake.in: add definitions needed by Qt6 2022-07-26 22:54:38 +02:00
utils.mk support/misc/utils: introduce $(tab)=\t and $(escape)=\x1b 2021-12-30 21:31:27 +01:00
Vagrantfile Update for 2022.11.1 2023-01-18 17:50:12 +01:00