mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-19 21:08:07 +00:00
feat(core/tools): create a poetry-installable package from some cli tools
so that we can have them available globally inside the poetry shell
This commit is contained in:
parent
f0989e20b8
commit
0ce00cbdb6
1
core/tools/.gitignore
vendored
Normal file
1
core/tools/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
poetry.lock
|
129
core/tools/README.md
Normal file
129
core/tools/README.md
Normal file
@ -0,0 +1,129 @@
|
||||
# Scripts for managing the project
|
||||
|
||||
This directory contains various scripts that are used either in some of the make
|
||||
targets, or manually, to generate code, check its size, etc.
|
||||
|
||||
## Most used tools
|
||||
|
||||
### `headertool`
|
||||
|
||||
Lives in `trezor_core_tools/headertool.py` and is exposed as a CLI tool by the same
|
||||
name.
|
||||
|
||||
Headertool can generate, analyze, and modify vendor and firmware headers. Use
|
||||
`headertool --help` to get the full list of commands.
|
||||
|
||||
The most common usage is `headertool somefile.bin` that will dump header information.
|
||||
|
||||
Another useful feature is `headertool -V vendor_header.bin firmware.bin`, which will
|
||||
replace the embedded vendor header in `firmware.bin` with the one in
|
||||
`vendor_header.bin`.
|
||||
|
||||
### `build_mocks`
|
||||
|
||||
Generate `.pyi` stubs from C and Rust source files.
|
||||
|
||||
### `build_templates`
|
||||
|
||||
Regenerate sources from Mako templates.
|
||||
|
||||
### `build_vendorheader`
|
||||
|
||||
Generate a vendor header binary from a json description.
|
||||
|
||||
### `combine_firmware`
|
||||
|
||||
Combine a flashable image from a boardloader, bootloader, and firmware.
|
||||
|
||||
## Everything else
|
||||
|
||||
### `codegen`
|
||||
|
||||
Code generation tool for fonts, the loader graphic (deprecated) and cryptographic keys
|
||||
(also deprecated).
|
||||
|
||||
### `dialog-designer`
|
||||
|
||||
Deprecated tool to visually preview multi-line dialogs in the old Trezor T UI.
|
||||
|
||||
### `gdb_scripts`
|
||||
|
||||
Scripts for GDB debugger.
|
||||
|
||||
### `hid-bridge`
|
||||
|
||||
Tool that creates a virtual HID device bridged to a UDP. This allows using the emulator
|
||||
as a FIDO/U2F authenticator in a browser.
|
||||
|
||||
### `size`
|
||||
|
||||
Scripts to examine size of firmware.
|
||||
|
||||
### `snippets`
|
||||
|
||||
Ad-hoc scripts for various one-off tasks that could become useful again.
|
||||
|
||||
(the whole thing is prooobably deprecated by LLMs, which will regenerate any script on
|
||||
demand).
|
||||
|
||||
### `translations`
|
||||
|
||||
Tools for checking validity of translation data and its usage.
|
||||
|
||||
### `trezor_core_tools`
|
||||
|
||||
A Python package that exposes certain functionalities as CLI commands.
|
||||
|
||||
`headertool` and `combine_firmware` live here, more may be moved or added.
|
||||
|
||||
One additional tool is `layout_parser`, which is used to extract memory layout
|
||||
information from a model `.h` file.
|
||||
|
||||
### `alloc.py`
|
||||
|
||||
Generate a HTML report of allocation count per line of code, as captured when running
|
||||
`emu.py -p`.
|
||||
|
||||
### `analyze-memory-dump.py`
|
||||
|
||||
Generate a HTML report of a state of the Micropython GC heap, as captured by
|
||||
`trezor.utils.mem_dump` at some execution point.
|
||||
|
||||
### `build_icons.py`
|
||||
|
||||
Regenerate embedded TOIF icons for webauthn apps from png files.
|
||||
|
||||
### `coverage-report`
|
||||
|
||||
Combine coverage reports from multiple CI jobs and generate a report.
|
||||
|
||||
### `frozen_mpy_translator.py`
|
||||
|
||||
Translate bytecode instructions in frozen_mpy.c to human readable form.
|
||||
|
||||
### `generate_vendorheader.sh`
|
||||
|
||||
Uses `build_vendorheader` to rebuild all vendor headers for all models.
|
||||
|
||||
### `jpg_to_h.py`
|
||||
|
||||
Convert a JPG image to a C array that can be embedded into the firmware.
|
||||
|
||||
(TODO could we replace it with xxd -i?)
|
||||
|
||||
### `make_cmakelists.py`
|
||||
|
||||
Generate a CMakeLists.txt file for the core.
|
||||
|
||||
### `provision_device.py`
|
||||
|
||||
Run the provisioning flow on a prodtest firmware, against a staging provisioning server.
|
||||
|
||||
### `rust_api_checks.py`
|
||||
|
||||
Check that the Rust UI API is consistent with the Python UI API.
|
||||
|
||||
### `rust_api_models_unification.py`
|
||||
|
||||
Checks the consistency of the Rust API between models.
|
||||
|
20
core/tools/pyproject.toml
Normal file
20
core/tools/pyproject.toml
Normal file
@ -0,0 +1,20 @@
|
||||
[tool.poetry]
|
||||
name = "trezor_core_tools"
|
||||
version = "0.1.0"
|
||||
description = "Collection of CLI tools for trezor-core development"
|
||||
authors = ["matejcik <jan.matejek@satoshilabs.com>"]
|
||||
license = "GPLv3+"
|
||||
readme = "README.md"
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = "^3.8"
|
||||
trezor = "^0.13.9"
|
||||
|
||||
[build-system]
|
||||
requires = ["poetry-core"]
|
||||
build-backend = "poetry.core.masonry.api"
|
||||
|
||||
[tool.poetry.scripts]
|
||||
headertool = "trezor_core_tools.headertool:cli"
|
||||
layout_parser = "trezor_core_tools.layout_parser:main"
|
||||
combine_firmware = "trezor_core_tools.combine_firmware:main"
|
Loading…
Reference in New Issue
Block a user