https://github.com/elektrobit/embdgen
embdgen
https://github.com/elektrobit/embdgen
Last synced: about 1 month ago
JSON representation
embdgen
- Host: GitHub
- URL: https://github.com/elektrobit/embdgen
- Owner: Elektrobit
- License: gpl-3.0
- Created: 2024-01-23T10:33:59.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-02-13T12:15:44.000Z (3 months ago)
- Last Synced: 2025-03-24T03:53:11.190Z (2 months ago)
- Language: Python
- Homepage: https://elektrobit.github.io/embdgen/index.html
- Size: 470 KB
- Stars: 1
- Watchers: 7
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# EMBedded Disk GENerator - embdgen
The embedded disk generator is a tool, that can be used, to create disk images for embedded targets.
See docs for more details.## Requirements
Embdgen needs the following packages on ubuntu/debian:
## Required
- `python3`
- `python3-pip`
- `python3-venv`
- `libparted-dev`: Used by pyparted, to edit partition tables```
apt install python3 python3-pip python3-venv libparted-dev
```### Optional (required for test execution during development)
- `mtools`: For copying files to fat32 partitions
- `e2fsprogs`: For everything ext(1,2,3,4) related
- `cryptsetup-bin`: For veritysetup, when not using the internal hash calculation algorithm
- `dosfstools`: For creating fat32 partitions
- `fakeroot`: For creating files on partitions, that usually require root (like setting uid or creating device nodes)### For tests only
- `fdisk`: For verifying the partition table```
apt install mtools e2fsprogs cryptsetup-bin fakeroot
```## Development
It is highly recommended, to develop in a virtual environment using python 3.10:```
python3.10 -m venv .venv
. .venv/bin/activate
```This creates a virtual environment and activates it. If you now run `python` or `pip`, it will run in that virtual environment.
All dependencies required for development are listed in dev-requirements.txt.
They can be installed by simply running
```
pip install -r dev-requirements.txt
```To start development in the virtual environment, install the packages in editable mode:
```
pip install -e embdgen-core
pip install -e embdgen-cominit
pip install -e embdgen-config-yaml
```
This allows having the packages installed, while still being able to edit the sources.If installing the core package fails, because of a too old libparted, you either have to update libparted or build it manually:
```# Make sure the venv is active
. .venv/bin/activate# Let's do it inside the venv directory, to not pollute the source tree
cd .venv
wget https://ftpmirror.gnu.org/parted/parted-3.4.tar.xz -O - | tar -xJf -
cd parted-3.4/
./configure --prefix=$PWD/..
make -j $(nproc) install# Now pyparted can be installed:
PKG_CONFIG_PATH=$PWD/../lib/pkgconfig/ pip install pyparted
```### Running pylint
To run pylint for all packages, just run `scripts/run_lint.sh`To run pylint for a single package, switch to the directory and run `pylint src`:
```
cd embdgen-core
pylint src
```If you run pylint from the root of the repository, the correct configuration is not used and it will generate a lot of warnings
The result is printed on the command line
### Running mypy
To run mypy for all packages, just run `scripts/run_mypy.sh`To run mypy for a single package, switch to the directory and run `mypy src`:
```
cd embdgen-core
mypy src
```If you run mypy from the root of the repository, the correct configuration is not used and it will generate a lot of warnings
The result is printed on the command line
### Running tests
To run all tests, just run `scripts/run_tests.sh`.To run the tests for a specific package or even a specific test in the package, switch to the directory and run `pytest`.
```
cd embdgen-core
pytest
# or
pytest tests/utils/test_SizeType.py
```This will print the results to the console and also create a coverage report in `/htmlcov`.
### Building the docs
```
cd docs
make html
```Open it in a browser (e.g. `firefox _build/html/index.html`)