Skills

Build FalkorDB

Builds FalkorDB with its native dependencies and runs format and lint checks.

Install

npx skills add FalkorDB/FalkorDB --skill build -g -a claude-code -y
Repository
FalkorDB/FalkorDB10.5k
Category
DevOps
Updated
3d ago
License
See repository
Context cost
Lightabout 778 tokens
Runs scripts
No, instructions only

What it does

Build FalkorDB (Rust code plus its native GraphBLAS/RediSearch dependencies), and run formatting/lint checks. Use when asked to build or compile the project, set up native dependencies for the first time, fix a build/compile/lint error, or run cargo fmt/clippy.

Build

FalkorDB-rs is a Redis module: the Rust crates link against two native C libraries (GraphBLAS and RediSearch) that must be compiled and installed before cargo build will succeed.

1. First-time native dependency setup

Only needed once per machine/container (skip if cargo build already works).

On macOS, point the build at Homebrew clang first: the system clang has no OpenMP, and GraphBLAS would build single-threaded without saying so.

export CC=$(brew --prefix llvm)/bin/clang
export CXX=$(brew --prefix llvm)/bin/clang++
git submodule update --init --recursive   # populates deps/{GraphBLAS,LAGraph,RediSearch}
cargo build                               # graph/build.rs builds them via native-deps

cargo build builds whatever is missing, so this is usually all you need. To build them ahead of time, or to see what is happening:

cargo run --manifest-path native-deps/Cargo.toml

Results are cached at ${XDG_CACHE_HOME:-$HOME/.cache}/falkordb/native-deps/<dep>/<key>/ ($FALKORDB_DEPS_CACHE overrides the root), keyed on the submodule revision, the GB_control patch, the vendored PreJIT kernels, the recipe sources, $CC/$CXX --version, the target triple and the OpenMP/sanitizer flavour.

If a build fails, native-deps/src/recipes/<dep>.rs documents the exact cmake flags (-DGRAPHBLAS_COMPACT=OFF, -DCMAKE_POSITION_INDEPENDENT_CODE=ON, static build). To build one dep only, name it, e.g. ... -- graphblas; add FALKORDB_NATIVE_DEPS_FORCE=1 to rebuild it even on a cache hit. A cache miss is diffable: each entry's .stamp records the full key manifest after a --- manifest --- marker.

2. Build

cargo build            # debug build -> target/debug/libfalkordb.{so,dylib}
cargo build --release  # release build -> target/release/libfalkordb.{so,dylib}

3. Format & lint

cargo fmt --all -- --check
CXX=clang++ cargo clippy --all-targets
Read the whole SKILL.md on GitHub

More in DevOps