Install the Native Library
This recipe builds the components other languages depend on. For the full prerequisites and workspace build, see Installation.
1. Install System Libraries
# macOS
brew install hdf5 netcdf protobuf
# Debian / Ubuntu
sudo apt-get install libhdf5-dev libnetcdf-dev protobuf-compiler
If the build fails with Unable to locate HDF5 root directory and/or headers, set HDF5_DIR:
export HDF5_DIR="$(brew --prefix hdf5)" # macOS
export HDF5_DIR=/usr/lib/x86_64-linux-gnu/hdf5/serial # Linux
2. Build What You Need
The C ABI cdylib (used by Julia and any C consumer):
cargo build -p infrastore-ffi --release
# -> target/release/libinfrastore_ffi.{dylib,so,dll}
# Regenerates the C header at crates/infrastore-ffi/include/infrastore.h
The whole workspace (core, server, proto, ffi):
cargo build --workspace
cargo test --workspace
The Python wheel is built separately with maturin — see
Integrate with Python.
3. Point Consumers at the Library
The Julia binding and other C consumers locate the cdylib via an environment variable:
export INFRASTORE_LIB=$PWD/target/release/libinfrastore_ffi.dylib # .so on Linux
Add it to your shell profile to make it permanent.