Some of the tools in U-Boot are useful beyond just U-Boot. For example, patman can be used to work with Linux and other projects which use mailing lists (and patchwork) for patch submissions. Binman can be used to package firmware for any project, even though it is heavily slanted towards U-Boot so far.
While patman has a setup script which is easy to use, binman is a little more complicated, since it has dependencies, in particular pylibfdt It would be better if we could put all the tools on PyPi. This series adds a script for uploading tools. It makes it easier to update PyPi from time to time, when new features appear. U-Boot uses tools/patman as a common library of Python functions. For this to work with PyPi it is easier to split these into a separate library, used by patman as well. This series creates a new 'u_boot_pylib' package for this purpose. Unfortunately, the U-Boot version of concurrencytest has some local patches. To avoid dependency issues it seems better to revert these and rely on the upstream package[1], although note that it is not actually installed. [1] Which unfortunately may be dead but perhaps we could request a new maintainer? Changes in v2: - Add a patch to hide the test options unless test code is available - Add new patch to avoid importing test_checkpatch before it is needed - Add new patch to use importlib to find the help - Add patch to fix use of a type as a variable - Add patch to split out the main code into a function - Drop test files - Fix removable of the /tmp dir - Quite a few updates to make things work with the new names - Rename the package to patch-manager - Update the cover letter Simon Glass (24): binman: Avoid unwanted output in testFitFirmwareLoadables() Revert "patman: test_util: Print test stdout/stderr within test summaries" Remove concurrencytest patman: Move library functions into a library directory script: Add a script to build a PyPi package patman: Add support for building a u_boot_tools PyPi package patman: Avoid importing test_checkpatch before it is needed patman: Add support for building a patman PyPi package buildman: Move the main code into a function buildman: Hide the test options unless test code is available buildman: Fix use of a type as a variable buildman: Use importlib to find the help buildman: Add support for building a buildman PyPi package dtoc: Hide the test options unless test code is available dtoc: Move the main code into a function dtoc: Use pathlib to find the test directory dtoc: Add support for building a dtoc PyPi package binman: Move the main code into a function binman: Hide the 'test' command unless test code is available binman: Use importlib to find the help binman: Add support for building a binmanu PyPi package test: Add concurrencytest to the requirements doc: Add notes on how to install patman and binman CI: Add a check for building tools for PyPi .azure-pipelines.yml | 10 + .gitlab-ci.yml | 6 + Makefile | 22 +- scripts/event_dump.py | 2 +- scripts/make_pip.sh | 117 ++++++ test/py/requirements.txt | 1 + test/run | 1 + tools/binman/binman.rst | 13 + tools/binman/bintool.py | 8 +- tools/binman/bintool_test.py | 8 +- tools/binman/btool/lz4.py | 2 +- tools/binman/btool/lzma_alone.py | 2 +- tools/binman/cbfs_util.py | 4 +- tools/binman/cbfs_util_test.py | 4 +- tools/binman/cmdline.py | 34 +- tools/binman/control.py | 12 +- tools/binman/elf.py | 6 +- tools/binman/elf_test.py | 8 +- tools/binman/entry.py | 6 +- tools/binman/entry_test.py | 2 +- tools/binman/etype/_testing.py | 2 +- tools/binman/etype/atf_fip.py | 2 +- tools/binman/etype/blob.py | 4 +- tools/binman/etype/blob_ext.py | 4 +- tools/binman/etype/blob_ext_list.py | 4 +- tools/binman/etype/fdtmap.py | 4 +- tools/binman/etype/files.py | 2 +- tools/binman/etype/fill.py | 2 +- tools/binman/etype/fit.py | 2 +- tools/binman/etype/fmap.py | 6 +- tools/binman/etype/gbb.py | 4 +- tools/binman/etype/intel_ifwi.py | 2 +- tools/binman/etype/mkimage.py | 2 +- tools/binman/etype/null.py | 2 +- tools/binman/etype/pre_load.py | 2 +- tools/binman/etype/section.py | 6 +- tools/binman/etype/text.py | 2 +- tools/binman/etype/u_boot_dtb_with_ucode.py | 2 +- tools/binman/etype/u_boot_elf.py | 2 +- tools/binman/etype/u_boot_env.py | 2 +- tools/binman/etype/u_boot_spl_bss_pad.py | 2 +- tools/binman/etype/u_boot_spl_expanded.py | 2 +- tools/binman/etype/u_boot_tpl_bss_pad.py | 2 +- tools/binman/etype/u_boot_tpl_expanded.py | 2 +- .../binman/etype/u_boot_tpl_with_ucode_ptr.py | 4 +- tools/binman/etype/u_boot_ucode.py | 2 +- tools/binman/etype/u_boot_vpl_bss_pad.py | 2 +- tools/binman/etype/u_boot_vpl_expanded.py | 2 +- tools/binman/etype/u_boot_with_ucode_ptr.py | 4 +- tools/binman/etype/vblock.py | 2 +- tools/binman/fdt_test.py | 2 +- tools/binman/fip_util.py | 4 +- tools/binman/fip_util_test.py | 4 +- tools/binman/fmap_util.py | 2 +- tools/binman/ftest.py | 17 +- tools/binman/image.py | 4 +- tools/binman/image_test.py | 2 +- tools/binman/main.py | 19 +- tools/binman/pyproject.toml | 29 ++ tools/binman/state.py | 4 +- tools/buildman/builder.py | 6 +- tools/buildman/builderthread.py | 2 +- tools/buildman/cfgutil.py | 2 +- tools/buildman/cmdline.py | 14 +- tools/buildman/control.py | 18 +- tools/buildman/func_test.py | 8 +- tools/buildman/main.py | 31 +- tools/buildman/pyproject.toml | 29 ++ tools/buildman/test.py | 8 +- tools/buildman/toolchain.py | 6 +- tools/concurrencytest/.gitignore | 1 - tools/concurrencytest/README.md | 74 ---- tools/concurrencytest/__init__.py | 0 tools/concurrencytest/concurrencytest.py | 221 ------------ tools/dtoc/README.rst | 15 + tools/dtoc/fdt.py | 2 +- tools/dtoc/fdt_util.py | 4 +- tools/dtoc/main.py | 110 +++--- tools/dtoc/pyproject.toml | 26 ++ tools/dtoc/test_dtoc.py | 10 +- tools/dtoc/test_fdt.py | 7 +- tools/dtoc/test_src_scan.py | 4 +- tools/patman/__init__.py | 7 +- tools/patman/__main__.py | 10 +- tools/patman/checkpatch.py | 4 +- tools/patman/control.py | 2 +- tools/patman/func_test.py | 6 +- tools/patman/get_maintainer.py | 2 +- tools/patman/gitutil.py | 4 +- tools/patman/patchstream.py | 2 +- tools/patman/patman.rst | 12 + tools/patman/pyproject.toml | 29 ++ tools/patman/series.py | 4 +- tools/patman/status.py | 4 +- tools/patman/test_settings.py | 2 +- tools/rmboard.py | 2 +- tools/u_boot_pylib/LICENSE | 339 ++++++++++++++++++ tools/u_boot_pylib/README.rst | 15 + tools/u_boot_pylib/__init__.py | 4 + tools/u_boot_pylib/__main__.py | 23 ++ tools/{patman => u_boot_pylib}/command.py | 2 +- .../cros_subprocess.py | 0 tools/u_boot_pylib/pyproject.toml | 22 ++ tools/{patman => u_boot_pylib}/terminal.py | 0 tools/{patman => u_boot_pylib}/test_util.py | 39 +- tools/{patman => u_boot_pylib}/tools.py | 4 +- tools/{patman => u_boot_pylib}/tout.py | 2 +- tools/u_boot_pylib/u_boot_pylib | 1 + 108 files changed, 1000 insertions(+), 576 deletions(-) create mode 100755 scripts/make_pip.sh create mode 100644 tools/binman/pyproject.toml create mode 100644 tools/buildman/pyproject.toml delete mode 100644 tools/concurrencytest/.gitignore delete mode 100644 tools/concurrencytest/README.md delete mode 100644 tools/concurrencytest/__init__.py delete mode 100644 tools/concurrencytest/concurrencytest.py create mode 100644 tools/dtoc/README.rst create mode 100644 tools/dtoc/pyproject.toml create mode 100644 tools/patman/pyproject.toml create mode 100644 tools/u_boot_pylib/LICENSE create mode 100644 tools/u_boot_pylib/README.rst create mode 100644 tools/u_boot_pylib/__init__.py create mode 100755 tools/u_boot_pylib/__main__.py rename tools/{patman => u_boot_pylib}/command.py (99%) rename tools/{patman => u_boot_pylib}/cros_subprocess.py (100%) create mode 100644 tools/u_boot_pylib/pyproject.toml rename tools/{patman => u_boot_pylib}/terminal.py (100%) rename tools/{patman => u_boot_pylib}/test_util.py (85%) rename tools/{patman => u_boot_pylib}/tools.py (99%) rename tools/{patman => u_boot_pylib}/tout.py (99%) create mode 120000 tools/u_boot_pylib/u_boot_pylib -- 2.39.2.637.g21b0678d19-goog