buildroot/utils
Brandon Maier 6ffcdb52e8 utils/check-package: add inline script requirements
The check-package tool requires some PyPi package to be installed before
it can run. This is typically done by manually installing them into the
user's global Python environment or setting up a virtual environment,
then manually installing each dependency.

Python recently defined a format for managing script dependencies as
inline metadata[1]. This can be used with the `uv` tool to run a Python
script and automatically install the minimum required version of Python
and PyPi dependencies.

With this change, it's now possible to run check-package with

  uv run -s ./utils/check-package

Note that, because check-package does not have the '.py' file extension
we must specify the `-s` or `--script` argument. That argument was added
very recently in release 0.4.19[2].

I set the minimum python to 3.9 as that is the oldest version still
supported[3]. I verified 3.9 works by running

  uv run -p 3.9 -s ./utils/check-package `git ls-tree -r --name-only HEAD` --ignore-list=.checkpackageignore

[1] https://packaging.python.org/en/latest/specifications/inline-script-metadata/#script-type
[2] https://github.com/astral-sh/uv/releases/tag/0.4.19
[3] https://devguide.python.org/versions/

Signed-off-by: Brandon Maier <brandon.maier@collins.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2024-10-26 13:37:39 +02:00
..
checkpackagelib utils/check-package: require exactly 1 TAB and 2 SP on help text 1st line 2024-09-14 22:24:55 +02:00
checksymbolslib toolchain/toolchain-bare-metal-buildroot: new toolchain 2024-02-06 17:57:17 +01:00
add-custom-hashes utils/add-custom-hashes: symlink linux-headers to linux 2024-05-29 08:56:47 +02:00
brmake utils/brmake: add option to run in docker 2024-10-23 22:09:50 +02:00
check-package utils/check-package: add inline script requirements 2024-10-26 13:37:39 +02:00
check-symbols utils/check-symbols: new script 2023-02-06 16:30:20 +01:00
config utils/config: fix don't typo 2024-09-21 20:18:48 +02:00
diffconfig utils/diffconfig: use python3 explicitly 2021-12-29 10:07:59 +01:00
docker-run utils/docker-run: fix symmetry typo 2024-09-21 20:18:52 +02:00
genrandconfig utils/genrandconfig: allow overriding KCONFIG_PROBABILITY 2024-08-23 19:40:12 +02:00
get-developers utils/get-developers: add -d option for custom DEVELOPERS file 2022-07-23 16:32:58 +02:00
getdeveloperlib.py utils/getdeveloperlib.py: fix retrieve typo 2024-09-21 20:18:56 +02:00
readme.txt utils/brmake: add option to run in docker 2024-10-23 22:09:50 +02:00
scancpan package/perl: bump to version 5.36.0 2023-01-12 20:33:22 +01:00
scanpypi package/pkg-python.mk: add hatch setup type 2024-10-23 23:00:03 +02:00
size-stats-compare utils/size-stats-compare: fix flake8 error 2022-02-01 21:52:35 +01:00
test-pkg utils/docker-run: fix shellcheck errors 2023-02-08 15:28:32 +01:00
update-rust utils/update-rust: fix 'following' typo 2024-09-21 20:39:10 +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.
    To run this within a container using docker-run (see below), set
    BR2_DOCKER=y in the environment, i.e. call it as
    `BR2_DOCKER=y utils/brmake`.
    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 across the buildroot tree. It
    checks package's Config.in and .mk files, runs shellcheck for all shell
    scripts, flake8 for python files, checks for typos, etc.
    It checks the .checkpackageignore file if errors should be ignored and
    errors if there's a file listed that doesn't produce an error.

docker-run
    a script that runs a command (like make check-package) inside the
    buildroot CI docker container; pass no command to get an interactive
    shell.

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...)