We have tested YDB builds using Ubuntu 18.04, 20.04 and 22.04. Other Linux distributions are likely to work, but additional effort may be needed. Only x86_64 Linux is currently supported.
Below is a list of packages that need to be installed before building YDB. 'How to Build' section contains step by step instructions to obtain these packages.
We run multiple clang instances in parallel to speed up the process by default. Each instance of clang may use up to 1GB of RAM, and linking the binary may use up to 16GB of RAM, please make sure your build host has enough resources.
The following packages are required to run ydbd server:
For Ubuntu 18.04, you have to add CMake and LLVM APT repositories:
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc | sudo apt-key add -
echo "deb http://apt.kitware.com/ubuntu/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null
wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
echo "deb http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-12 main" | sudo tee /etc/apt/sources.list.d/llvm.list >/dev/null
sudo apt-get update
For Ubuntu 20.04, you have to add CMake APT repository:
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc | sudo apt-key add -
echo "deb http://apt.kitware.com/ubuntu/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null
sudo apt-get update
sudo apt-get -y install git cmake python3-pip ninja-build antlr3 m4 clang-12 lld-12 libidn11-dev libaio1 libaio-dev llvm-12
sudo pip3 install conan==1.59
:warning: Please make sure you have at least 80Gb of free space. We also recommend placing this directory on SSD to reduce build times.
mkdir ~/ydbwork && cd ~/ydbwork
mkdir build
git clone https://github.com/ydb-platform/ydb.git
Run cmake to generate build configuration:
cd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS_RELEASE="-O2 -UNDEBUG" -DCMAKE_CXX_FLAGS_RELEASE="-O2 -UNDEBUG" -DCMAKE_TOOLCHAIN_FILE=../ydb/clang.toolchain ../ydb
With enabled Ccache, you can finish the compilation of all targets on supported Linux distributions in a few minutes.
Or just ydbd
or ydb
binary in a couple of seconds. To optionally enable Ccache
and enhance the compilation speed, follow these steps:
Install Ccache
into /usr/local/bin/
(We are using version 4.8.1
, you can use any version greater than 4.7
)
(V=4.8.1; curl -L https://github.com/ccache/ccache/releases/download/v${V}/ccache-${V}-linux-x86_64.tar.xz | \
sudo tar -xJ -C /usr/local/bin/ --strip-components=1 --no-same-owner ccache-${V}-linux-x86_64/ccache)
Configure Ccache
to use remote storage using environment variables
export CCACHE_REMOTE_STORAGE="http://cachesrv.ydb.tech:8080|read-only|layout=bazel"
export CCACHE_SLOPPINESS=locale
export CCACHE_BASEDIR=~/ydbwork/
Also, you should change Conan's home folder to the build folder for better cache hit
export CONAN_USER_HOME=~/ydbwork/build
Genreate build configuration using ccache
cd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER_LAUNCHER=/usr/local/bin/ccache -DCMAKE_CXX_COMPILER_LAUNCHER=/usr/local/bin/ccache \
-DCMAKE_TOOLCHAIN_FILE=../ydb/clang.toolchain \
-DCMAKE_C_FLAGS_RELEASE="-O2 -UNDEBUG" \
-DCMAKE_CXX_FLAGS_RELEASE="-O2 -UNDEBUG" \
../ydb
To build all binary artifacts (server YDBD, client YDB, unittest binaries) run:
ninja
A YDB server binary can be found at:
ydb/apps/ydbd/ydbd
To build YDB CLI (ydb):
ninja ydb/apps/ydb/all
A YDB CLI binary can be found at:
ydb/apps/ydb/ydb
To build YDB CLI unit tests:
ninja ydb/public/lib/ydb_cli/all
To run tests execute:
cd ydb/public/lib/ydb_cli/
ctest
Before launch tests you need to build YDB CLI and YDB server binaries.
Also you can load ydbd binary file and use it.
To launch YDB CLI python tests run ydb_cli
test suite via pytest according to this instruction.