Keyboard shortcuts

Press โ† or โ†’ to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Installation

infrastore is a Rust workspace. Building any of its interfaces requires a Rust toolchain plus the HDF5, NetCDF, and Protobuf system libraries. The Python and Julia bindings additionally need a Python interpreter (3.10+) or Julia (1.10+).

System Libraries

macOS (Homebrew)

brew install hdf5 netcdf protobuf maturin

hdf5 is a transitive dependency of netcdf, but the hdf5-metno-sys build script does not always locate it on its own. If cargo build fails with Unable to locate HDF5 root directory and/or headers, point it at the Homebrew install explicitly:

export HDF5_DIR="$(brew --prefix hdf5)"

Add that line to your shell profile to make it permanent.

Linux (Debian / Ubuntu)

sudo apt-get install libhdf5-dev libnetcdf-dev protobuf-compiler
# If the build script can't find HDF5:
export HDF5_DIR=/usr/lib/x86_64-linux-gnu/hdf5/serial

Rust Toolchain

The workspace targets edition 2024 and declares an MSRV of Rust 1.94 โ€” that is the oldest toolchain it is guaranteed to build on. (rust-version in the root Cargo.toml is the authority; the repo pins no rust-toolchain file, and CI builds on stable.)

rustup update stable

Build the Workspace

git clone https://github.com/NatLabRockies/time-series-store
cd infrastore
cargo build --workspace --all-features
cargo test --workspace --all-features
cargo clippy --workspace --all-targets --all-features -- -D warnings

The workspace Cargo config (.cargo/config.toml) sets macOS linker flags so cargo build --workspace can link the PyO3 cdylib without maturin. On Linux those flags are inert.

Crates in the Workspace

CrateWhat it builds
infrastore-coreTypes, NetCDF + SQLite storage, hashing, Rust API
infrastore-protoProtobuf service definition + tonic codegen
infrastore-servergRPC server binary + Rust client
infrastore-pyPyO3 bindings, abi3-py310 wheel
infrastore-ffiC ABI cdylib (the foundation of the Julia binding)
infrastore-cliinfrastore CLI binary (CSV add/read, inspect on-disk stores)
infrastore-benchinfrastore-bench binary (bulk-ingest + simulation-read benchmarks)

Next Steps