3.6. Building From Source (Bare Metal)#

For working on the SimBricks core itself — the protocol libraries, the proxies, or the Python orchestration packages — you build directly from the main repository:

git clone https://github.com/simbricks/simbricks.git
cd simbricks

3.6.1. C/C++ parts#

make builds the components contained in the repository: the SimBricks protocol libraries (lib/, producing libsimbricks.a and the per-protocol archives) and the distributed- simulation proxies (dist/sockets/net_sockets; add ENABLE_RDMA=y in mk/local.mk or on the command line to also build dist/rdma/net_rdma, which requires rdma-core).

You need a C/C++ toolchain (gcc/g++), GNU make, and boost. For the authoritative dependency set, consult the conda recipes in conda-recipes/ (simbricks-lib, simbricks-dist) — they are what CI builds with. Alternatively, develop inside the simbricks/simbricks-baseenv container and install the toolchain from conda.

make install-lib / make install-dist install libraries, headers, and proxies to a prefix; see Building the Core Library Debian Package for building a Debian package of the core library instead.

Simulators are not part of this repository: each lives in its own component-* repository and is built there against an installed simbricks-lib (see Packaging a Simulator as a Component Repository).

3.6.2. Python packages (symphony)#

The Python packages all live under symphony/. For development, install them editable into your current environment (virtualenv or conda environment, Python >= 3.10):

make symphony-dev

This installs simbricks-utils, simbricks-orchestration, simbricks-runtime, simbricks-client, simbricks-telemetry, simbricks-cli, simbricks-runner, and simbricks-local with pip install -e, so your changes are picked up immediately. Type checking runs with make symphony-typecheck.

3.6.3. Conda packages#

The conda recipes for everything in this repository are under conda-recipes/ and build with make conda-packages (requires conda-build; the recipes resolve their dependencies from the public SimBricks channel).

3.6.4. Documentation#

The build dependencies of this documentation (sphinx, doxygen, and the SimBricks packages that are autodoc’ed in the reference) are installed as conda packages from doc/environment.yml:

micromamba env create -f doc/environment.yml
micromamba activate simbricks-docs
make documentation

The result lands in doc/_build. The checked-in environment resolves the SimBricks packages from the stable channel — the same channel released documentation is built against on readthedocs. To check how the documentation looks against the upcoming, not-yet-released state, create the environment from the latest channel instead by swapping the channel URL in doc/environment.yml (see the comment there), e.g.:

sed 's|conda.simbricks.io/stable|conda.simbricks.io/latest|' doc/environment.yml \
    | micromamba env create -n simbricks-docs-latest -f /dev/stdin
micromamba activate simbricks-docs-latest
make documentation