Skip to main content
Version: VAST v3.1

Build

VAST uses CMake as build system. Aside from a modern C++20 compiler, you need to ensure availability of the dependencies in the table below.

Deterministic Builds via Nix

We provide a Nix flake to setup an environment in which all dependencies are available. Run nix develop inside the main source directory. You can also delegate the entire build process to Nix by invoking nix build, but be aware that this method does not support incremental builds.

Dependencies

Every release of VAST includes an SBOM in SPDX format that lists all dependencies and their versions.

RequiredDependencyVersionDescription
C++ CompilerC++20 requiredVAST is tested to compile with GCC >= 12.0 and Clang >= 15.0.
CMake>= 3.19Cross-platform tool for building, testing and packaging software.
CAF>= 0.18.7Implementation of the actor model in C++. (Bundled as submodule.)
OpenSSLUtilities for secure networking and cryptography.
FlatBuffers>= 1.12.0Memory-efficient cross-platform serialization library.
Boost>= 1.81.0Required as a general utility library.
Apache Arrow>= 8.0.0Required for in-memory data representation. Must be built with Compute, Zstd and Parquet enabled.
re2Required for regular expressione evaluation.
yaml-cpp>= 0.6.2Required for reading YAML configuration files.
simdjson>= 3.1.0Required for high-performance JSON parsing. (Bundled as submodule.)
spdlog>= 1.5Required for logging.
fmt>= 8.1.1Required for formatted text output.
xxHash>= 0.8.0Required for computing fast hash digests.
robin-map>= 0.6.3Fast hash map and hash set using robin hood hashing. (Bundled as subtree.)
fast_float>= 3.2.0Required for parsing floating point numbers. (Bundled as submodule.)
libpcapRequired for building the pcap plugin.
http-parserRequired for building the web plugin.
poetryRequired for building the Python bindings.
DoxygenRequired to build documentation for libvast.
PandocRequired to build manpage for VAST.

The minimum specified versions reflect those versions that we use in CI and manual testing. Older versions may still work in select cases.

Compile

Building VAST involves the following steps:

  1. Download the latest release or clone the repository recursively:

    git clone https://github.com/tenzir/vast
    cd vast
    git submodule update --init --recursive -- libvast plugins
  2. Configure the build with CMake. For faster builds, we recommend passing -G Ninja to cmake.

    cmake -B build
    # CMake defaults to a "Debug" build. When performance matters, use "Release"
    cmake -B build -DCMAKE_BUILD_TYPE=Release

    Optionally, you can use the CMake TUI to visually configure the build:

    ccmake build

    The source tree also contains a set of CMake presets that combine various configuration options into curated build flavors. You can list them with:

    cmake --list-presets
  3. Build the executable:

    cmake --build build --target all

Test

After you have built the executable, run the unit and integration tests to verify that your build works as expected:

  1. Run component-level unit tests:

    ctest --test-dir build
  2. Run end-to-end integration tests:

    cmake --build build --target integration

Install

  1. Install VAST system-wide.
    cmake --install build

If you prefer to install into a custom install prefix, install with --prefix /path/to/install/prefix.

To remove debug symbols from the installed binaries and libraries, pass --strip.

To install only files relevant for running VAST and not for plugin development pass --component Runtime.

Clean

In case you want to make changes to your build environment, we recommend deleting the build tree entirely:

rm -rf build

This avoids subtle configuration glitches of transitive dependencies. For example, CMake doesn't disable assertions when switching from a Debug to a Release build, but would do so when starting with a fresh build of type Release.