Skip to content

Installation

Dependencies

Required

  • Meson (>= 1.2) and Ninja -- build system
    • Available via package managers (apt, brew, dnf) or pip install meson ninja
  • LZ4 -- compression library
    • Available via package managers; if missing, built automatically from WrapDB

Optional

  • ROOT (>= 6.28) -- only needed for HipoDataFrame extension and ROOT examples
  • fmt (>= 10.2.0) -- formatting library; built from WrapDB if not found
  • pybind11 (>= 2.11) -- only needed for Python bindings (hipopy); install with pip install pybind11
  • NumPy -- required at runtime for Python bindings; install with pip install numpy
  • Awkward Array -- optional, for ragged array support in Python; install with pip install awkward

Building

Create a build directory and configure:

meson setup build --prefix=$(pwd)/install

Compile, test, and install:

cd build
ninja           # compile
ninja test      # run tests
ninja install   # install to prefix

Build Options

Option Default Description
build_examples true Build example programs
install_examples false Install example programs
install_root_tools false Install ROOT-based tools
python_bindings false Build pybind11 Python bindings (hipopy)

Set options with meson configure:

meson configure build -Dbuild_examples=false

Python Bindings

To build the Python bindings, enable the python_bindings option:

meson setup build -Dpython_bindings=true
ninja -C build

Verify the installation:

import hipopy
print(hipopy.Schema)  # <class 'hipopy._hipo.Schema'>

See Python API Reference for full documentation.

Using the Installed Library

After installation, source the environment script:

source install/libexec/hipo4/this_hipo.sh

Or for csh/tcsh:

source install/libexec/hipo4/this_hipo.csh

pkg-config

The installed library provides a pkg-config file:

pkg-config --cflags --libs hipo4

Building Documentation

If Doxygen is installed, API documentation can be generated:

ninja -C build docs