Building

To build the complete project including all included crates requires some configuration beforehand.

Install Dependencies

First install the Rust compiler to actually compile the project. Use your package manager or set up in your local user home.

# For rpm based distributions (Fedora, CentOS, Rocky, ...)
$ sudo dnf install cargo

# For apt based distributions (Debian, Ubuntu, ...)
$ sudo apt update
$ sudo apt install cargo

# For Arch Linux and its derivatives
$ sudo pacman -Sy cargo

You'll need atleast version 1.61. Most package manager should deliver this or more recent version - rustup will always deliver the most up-to-date version.

Then install the required system dependencies for bindgen and the JULEA bindings.

Fedora/RHEL

$ sudo dnf install glib2 glib2-devel libbson libbson-devel clang make pkgconf libpmem libpmem-devel

Ubuntu/Debian/...

$ sudo apt update
$ sudo apt install libglib2.0-0 libglib2.0-dev libbson-1.0-0 libbson-dev clang make pkg-config libpmem1 libpmem-dev

Arch Linux+

Arch Linux does not package libpmem, if you want to use it you may try the AUR. Otherwise, compile without the nvm feature.

$ sudo pacman -Sy glib2 clang make libbson pkgconf

Prepare the environment

This step can be skipped if you do not need to use the JULEA interface. See betree.

To compile the bindings you'll need JULEA present and specify it's headers in your environemnt.

$ git clone https://github.com/parcio/julea.git

To build the complete Haura project from this state, execute:

$ export JULEA_INCLUDE=$PWD/julea/include
$ export BINDGEN_EXTRA_CLANG_ARGS="$(pkg-config --cflags glib-2.0) $(pkg-config --cflags libbson-1.0)"
$ cd haura
$ cargo build