HSE has the following dependencies1:
- cJSON
>= 1.7.14
- libbsd
>= 0.9.0
- libcurl2
>= 7.58.0
- libevent
>= 0.9.59
- lz4
>= 1.9.2
- userspace-rcu
>= 0.10.1
- xxHash
>= 0.8.0
- libpmem3
>= 1.4.0
Note that by default cJSON and lz4 are built as a part of HSE using Meson subprojects for performance and embedding reasons. To use system pacakges for cJSON and lz4, setup your build with the following:
meson setup build -Dforce_fallback_for=
Depending on the build configuration, HSE has the following additional dependencies for various internal tools and documentation:
- mongo-c-driver
>= 1.17.3, <1.21.0
- ncurses
>= 6.1.20180127
- HdrHistogram_c
>= 0.11.2
- doxygen
In addition to the above, we strongly recommend installing the build component or meta package for your system.
# RHEL-based
sudo dnf install "@Development Tools"
# Ubuntu-based
sudo apt install build-essential
To obtain these from you system's package manager:
sudo dnf install libcurl-devel userspace-rcu-devel libevent-devel libbsd-devel
# Optionally, depending on the your build configuration
sudo dnf install cjson-devel lz4-devel mongo-c-driver-devel \
ncurses-devel HdrHistogram_c-devel doxygen
# For optimal persistent memory (pmem) media class support on x86 architecture
sudo dnf install libpmem-devel
The versions of libbsd and mongo-c-driver in the repository are too low. In this case, the HSE build will fall back to using libbsd from a Meson subproject. cJSON, xxHash, and HdrHistogram_c aren't packaged for this distribution.
sudo apt install libcurl4-openssl-dev liburcu-dev libevent-dev
# Optionally, depending on the your build configuration.
sudo apt install liblz4-dev libncurses-dev doxygen
# For optimal persistent memory (pmem) media class support on x86 architecture
sudo dnf install libpmem-dev
Meson has support for subprojects which depending on your build configuration and environment will build software that the top-level project (HSE) depends on.
In the event your build configuration specifies the need for subprojects or you
don't have the right packages or versions in the host environment, the
subprojects will be transparently built as a part of HSE. Take note that using
subprojects can increase build times. HSE has subproject definitions for all
of its direct dependencies. When building HSE's subprojects, make sure to
have the dependencies for the subprojects satisfied. These include common tools
like autoconf
and libtool
.