MALT project lifecycle
In order to manage the lifecycle of MALT there is a specific set of scripts provided by the ./dev directory to help the developement, mostly the release time.
Dependences
In order to use the main entry point you need to first create a venv
# crate a venv the first time
python3 -m venv .venv
# load it
source .venv/bin/activate
# to use the dev scripts
pip install -r dev/requirements.txt
# if you want to be able to build the doc
pip install -r doc/requirements.txt
Main entry point
Then you can use the main entry point ./dev/dev.py :
usage: dev [-h] {portability,port,archive,ar,coverage,cov,headers,head,version,ver} ...
Globale source manager of the MALT repo.
options:
-h, --help show this help message and exit
command:
{portability,port,archive,ar,coverage,cov,headers,head,version,ver}
Command to apply
portability (port) Run the MALT build & tests in varios Podman images.
archive (ar) Generate delivery archive.
coverage (cov) Generate coverage in current build directory.
headers (head) UPdate file headers.
version (ver) Update version in sources
Portabilty validation
MALT comes with a script to test build & unit tests on a set of distributions with more of less depdencies available. This is usefull before making a release to see the problems rising on the various distributions.
The script is based on Podman to run each distro in a container. In order to be faster it caches the packages and use ccache to not loose time when cycling many time in the script.
All the cached data about this script is stored into the ./podman-cache directory.
The script validates on :
Distribution |
Versions |
|---|---|
Ubuntu |
22.04, 24.04, 25.04, 25.10 |
Debian |
11, 12, 13, sid |
Fedora |
40, 41 |
RedHat |
8, 9, 10 |
Rocky |
8.9, 9.3 |
Archlinux |
latest |
Gentoo |
latest stable |
To run it you can use the standard pytest options.
# run everything
./dev/dev.py port
# run only ubuntu
./dev/dev.py port -- -k ubuntu
# run only ubuntu in verbose mode
./dev/dev.py port -v -- -k ubuntu
# run only ubuntu 24.04
./dev/dev.py port -v -- -k 24.04
# stop on first error
./dev/dev.py port -v -- -k 24.04 -x
# stop on first error and start from last failed
./dev/dev.py port -v -- -k 24.04 -x --lf
Jumping in a podman image
If you want to manually debug in one of the images, you can :
# launching podman on the given image
podman run --rm -v .:/mnt/sources -ti malt/ubuntu-basic:22.04 /bin/bash
# inside podman :
mkdir ~/build
cd ~/build
/mnt/sources/configure --enable-debug --enable-tests
make
make test
Update file headers
The file headers contains the last modification date of the file and the authors extracted from the git repository.
You can re-generate them by calling :
./dev/dev.py headers --git-all .
When making the commit, PLEASE use a name containg [headers] so it is ignored by the script latter.
git commit -a -m "[headers] Update headers"
Updating the version number
When increasiong the version number you can use the script ./dev/dev.py version :
usage: dev version [-h] [--beta] [--dev] version
positional arguments:
version Set the version number
options:
-h, --help show this help message and exit
--beta Mark the version as beta
--dev Mark the version as dev branch
Making the release archives
In order to generate the release archives you can use directly (be sure to have commit all your changes, it will use git to generate the archive).
./dev/dev.py ar
By default it generate a version with the hash. If the tag of the version if on current commit, then it generate the official final archive.