kumquat-buildroot/utils
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
..
checkpackagelib utils/checkpackagelib: warn about ifdef on .mk 2023-02-06 14:22:38 +01:00
checksymbolslib utils/check-symbols: new script 2023-02-06 16:30:20 +01:00
brmake utils/brmake: print the error code of the build 2017-07-05 00:15:05 +02:00
check-package utils/checkpackagelib/lib_sysv: check SysV init scripts 2022-02-06 18:27:00 +01:00
check-symbols utils/check-symbols: new script 2023-02-06 16:30:20 +01:00
config utils/config: new script to manipulate .config files on the command line 2017-09-27 22:45:35 +02:00
diffconfig utils/diffconfig: use python3 explicitly 2021-12-29 10:07:59 +01:00
docker-run utils/docker-run: hide docker run command 2022-02-16 22:55:15 +01:00
genrandconfig utils/genrandconfig: migrate to asyncio subprocess calls 2023-02-06 15:54:38 +01:00
get-developers utils/get-developers: add -d option for custom DEVELOPERS file 2022-07-23 16:32:58 +02:00
getdeveloperlib.py utils/get-developers: add -d option for custom DEVELOPERS file 2022-07-23 16:32:58 +02:00
readme.txt utils/readme.txt: Fix typo "get-developers" 2022-07-23 18:21:21 +02:00
scancpan package/perl: bump to version 5.36.0 2023-01-12 20:33:22 +01:00
scanpypi utils/scanpypi: add LICENCE.TXT to the list of the license files 2022-11-23 23:20:20 +01:00
size-stats-compare utils/size-stats-compare: fix flake8 error 2022-02-01 21:52:35 +01:00
test-pkg utils/test-pkg: show default build dir in help test 2022-09-17 17:57:34 +02:00

This directory contains various useful scripts and tools for working
with Buildroot. You need not add this directory in your PATH to use
any of those tools, but you may do so if you want.

brmake
    a script that can be run instead of make, that prepends the date in
    front of each line, redirects all of the build output to a file
    ("'br.log' in the current directory), and just outputs the Buildroot
    messages (those lines starting with >>>) on stdout.
    Do not run this script for interactive configuration (e.g. menuconfig)
    or on an unconfigured directory. The output is redirected so you will see
    nothing.

check-package
    a script that checks the coding style of a package's Config.in and
    .mk files, and also tests them for various types of typoes.

genrandconfig
    a script that generates a random configuration, used by the autobuilders
    (http://autobuild.buildroot.org). It selects a random toolchain from
    support/config-fragments/autobuild and randomly selects packages to build.

get-developers
    a script to return the list of people interested in a specific part
    of Buildroot, so they can be Cc:ed on a mail. Accepts a patch as
    input, a package name or and architecture name.

scancpan
    a script to create a Buildroot package by scanning a CPAN module
    description.

scanpypi
    a script to create a Buildroot package by scanning a PyPI package
    description.

size-stats-compare
    a script to compare the rootfs size between two different Buildroot
    configurations. This can be used to identify the size impact of
    a specific option, of a set of specific options, or of an update
    to a newer Buildroot version...

test-pkg
    a script that tests a specific package against a set of various
    toolchains, with the goal to detect toolchain-related dependencies
    (wchar, threads...)