Skip to main content

Build

Like many C++ projects, VAST uses CMake to manage the build process. Aside from a modern C++20 compiler, you need to ensure availability of the dependencies in the table below.

We provide Nix expressions for deterministic builds.

Dependencies

SPDX SBOM

Every release of VAST includes an SBOM in SPDX format that includes a comprehensive listing of all dependencies and versions.

👉 Download the latest SBOM here.

RequiredDependencyVersionDescription
C++ CompilerC++20 requiredVAST is tested to compile with GCC >= 10.0 and Clang >= 13.0.
CMake>= 3.19Cross-platform tool for building, testing and packaging software.
CAF>= 0.17.6Implementation of the actor model in C++. (Bundled as submodule.)
FlatBuffers>= 1.12.0Memory-efficient cross-platform serialization library.
Apache Arrow>= 8.0.0Required for in-memory data representation. Must be built with Compute, Zstd and Parquet enabled.
yaml-cpp>= 0.6.2Required for reading YAML configuration files.
simdjson>= 0.7Required for high-performance JSON parsing.
spdlog>= 1.5Required for logging.
fmt>= 7.1.3Required 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 PCAP import, export, and pivoting to and from PCAP traces.
restinioRequired for providing a REST API
brokerRequired to build the Broker plugin.
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.

Nix Environment

We provide a Nix flake you can use to setup an environment in which all dependencies are available. Running nix develop inside the main source directory will get you there.

You can also delegate the entire build process to Nix with by invoking nix build, but be aware that this method does not support incremental builds in case you plan to make changes to the source code.

Compile

Building VAST involves the following steps:

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

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

    cd vast
    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
Customize Installation

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.