semvec/pypi-packages huggingface dataset:
sivart 0.2.1
A poor man's build farm
License: BSD 3-Clause

======
Sivart
======

A poor man's build farm.

What?
=====

A tool to test installation and test steps of your program on various systems.

How?
====

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.

Install
=======

Have a look to ``.sivart.yml`` for the detailed steps, but basically you need
a working ``virtualbox`` and::

    pip install sivart

The run::

    python -m sivart --help

Format
======

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!

Why?
====

Because I needed an automated way to test the Pythran compiler on various
architecture (32/64 bits), various OS *and* various distribution.