Перейти к содержанию

Прочие Unix (экспериментально)

Инструкции по сборке на неподдерживаемых ОС следует считать экспериментальными, предоставляются «как есть» (best effort) и могут быть неполными.

Предупреждение о параллельной компиляции (флаг -j): при сборке C/C++ часто используют make -j $(nproc) по числу ядер. Учтите: некоторые единицы компиляции (.cpp) в COOPOS очень тяжёлые и при компиляции могут потреблять почти 4 ГБ ОЗУ. Возможно, придётся снизить степень параллелизма в зависимости от объёма памяти на машине сборки, например вместо make -j $(nproc) запустить make -j2. Исчерпание памяти обычно (но не всегда) проявляется как падение компилятора.

В целом мы рекомендуем так называемую pinned-сборку: версии компилятора и Boost остаются одинаковыми между сборками разных версий COOPOS (COOPOS требует неизменности этих версий, иначе состояние нужно восстанавливать из переносимого снимка).

Инструкции по сборке на FreeBSD 13.1 Установите зависимости:
pkg update && pkg install   \
    git                     \
    cmake                   \
    curl                    \
    boost-all               \
    python3                 \
    llvm11                  \
    pkgconf
и выполните сборку (в FreeBSD 13.1 по умолчанию llvm13 — передайте cmake опции clang11):
git submodule update --init --recursive
mkdir build
cd build
cmake -DCMAKE_CXX_COMPILER=clang++11 -DCMAKE_C_COMPILER=clang11 -DCMAKE_BUILD_TYPE=Release ..
make -j $(nproc) package

Запуск тестов

При сборке из исходников рекомендуется запускать как минимум «параллелизуемые» тесты. В этот набор по умолчанию не входят WASM spec tests — их можно добавить для большего покрытия, они тоже запускаются параллельно.

cd build

# «parallelizable tests»: минимальный набор, который стоит прогонять
ctest -j $(nproc) -LE _tests

# Дополнительно: WASM spec tests
ctest -j $(nproc) -L wasm_spec_tests

Другие тесты доступны и полезны, но они чувствительны к другому ПО на той же машине и могут SIGKILL другие запущенные экземпляры nodeos:

cd build

# Эти тесты нельзя гонять параллельно, но они рекомендованы
ctest -L "nonparallelizable_tests"

# Эти тесты нельзя гонять параллельно; выполняются долго
ctest -L "long_running_tests"