Build Environment
Use Nix as reproducible development environment
We use Nix for reproducible Tenzir Node builds.
Fetch the dependencies for a dynamic build by running nix develop
from the
topmost directory in the tenzir/tenzir
source tree.
You can automatically add the dependencies to your shell environment when
you cd into the source directory via direnv. Create an
.envrc
with the content:
use flake
If you want to silence the messages about binary caches you can use a variation
of .envrc
that invokes nix
with a lower verbosity setting:
use_flake2() { watch_file flake.nix watch_file flake.lock mkdir -p "$(direnv_layout_dir)" eval "$(nix --quiet --quiet print-dev-env --profile "$(direnv_layout_dir)/flake-profile" "$@")"}
use_flake2
The tenzir/tenzir
repository comes with a set of CMake configure and build
presets that can be used in this environment:
nix-clang-debug
nix-clang-redeb
nix-clang-release
nix-gcc-debug
nix-gcc-redeb
nix-gcc-release
Compile static binaries
Static binaries require a that the dependencies were built in static mode as well. That means we need to use a different environment; you can enter it with:
nix develop .#tenzir-static
The CMake presets for that mode are:
nix-gcc-static-debug
nix-gcc-static-redeb
nix-gcc-static-release