mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-19 05:58:09 +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