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