A poor man's build farm
A poor man’s build farm.
A tool to test installation and test steps of your program on various systems.
The architectures, install steps and test scripts are described in a configuration file, which is processed by sivart to run various vagrant boxes with the described configuration, then the tests.
Have a look to .sivart.yml for the detailed steps, but basically you need a working virtualbox and:
pip install sivart
python -m sivart --help
Sivart’s input is a YAML file that lists configurations, like this:
my_config: box: box_url_or_id install: - step0 - step1 script: - step0 - step1
The box field is a valid vagrant box idetnifier, the install field contains commands run as root, and the script field contains commands run as vagrant user.
As your number of config grow, you can use facets to store common config elements:
.shared: install: - step0 - step1 script: - step0 - step1 .config0: using: - .shared box: box0 .config1: using: - .shared box: box1
which makes it easy to perform the same steps on a 32 and 64 bits machine, for instance.
Finally, there is a env configuration to test various parameters, e.g. various compilers:
.env0: env: - CC=gcc CXX=g++ - CC=clang CXX=clang++ .env1: env: - CFLAGS=-O1 - CFLAGS=-O2 - CFLAGS=-O3 run: using: - env0 - env1 script: - $CC $CFLAGS hello.c
this runs $CC $CFLAGS hello.c for the Cartesian product of the combination of .env0 and .env1.
Additionnaly, you can use external variables prefixed by a %, as in:
.cflags: env: - CC=gcc CXX=g++ CXXFLAGS=%CXXFLAGS CFLAGS=%CFLAGS - CC=clang CXX=clang++ CXXFLAGS=%CXXFLAGS CFLAGS=%CFLAGS
And set this variable from the command line!
Have a look to examples/* for more… examples!
Because I needed an automated way to test the Pythran compiler on various architecture (32/64 bits), various OS and various distribution.