Сборка Codex
Содержание
- Установка инструментов разработчика
- Клонирование и подготовка Git-репозитория
- Сборка исполняемого файла
- Запуск примера
Дополнительно
Предварительные требования
Для сборки nim-codex необходимо установить и сделать доступными инструменты разработчика в операционной системе.
Инструкции ниже примерно соответствуют настройкам окружения в CI workflow nim-codex и известны как рабочие.
Другие подходы могут быть жизнеспособны. На macOS некоторые пользователи могут предпочесть MacPorts вместо Homebrew. На Windows вместо MSYS2 некоторые пользователи могут предпочесть установку инструментов разработчика с помощью winget, Scoop или Chocolatey, или загрузку установщиков для, например, Make и CMake, в остальном полагаясь на официальные инструменты разработчика Windows. Приветствуются вклады сообщества в эти документы и нашу систему сборки!
Rust
Текущая реализация схемы доказательств с нулевым разглашением Codex требует установки Rust версии 1.79.0 или выше. Убедитесь, что вы установили его для вашей ОС и добавили в PATH вашего терминала так, чтобы команда cargo --version
показывала совместимую версию.
Linux
WARNING
Сборка в Linux в настоящее время требует gcc
Команды менеджера пакетов могут требовать sudo
в зависимости от настройки ОС.
На базовой установке Debian (или дистрибутива, производного от Debian, такого как Ubuntu), выполните
apt-get update && apt-get install build-essential cmake curl git rustc cargo
Не-Debian дистрибутивы имеют разные менеджеры пакетов: apk
, dnf
, pacman
, rpm
, yum
и т.д.
Например, на базовой установке Fedora выполните
dnf install @development-tools cmake gcc-c++ rust cargo
В случае, если ваш дистрибутив не предоставляет требуемую версию Rust, мы можем установить её с помощью rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs/ | sh -s -- --default-toolchain=1.79.0 -y
. "$HOME/.cargo/env"
Обратите внимание, что в настоящее время вы не сможете собрать Codex с gcc 14. Чтобы проверить, что у вас поддерживаемая версия, выполните:
gcc --version
Если вы получите число, начинающееся с 14 (например, 14.2.0
), то вам нужно либо понизить версию, либо попробовать обходной путь, например сборку в Docker.
macOS
Установите Xcode Command Line Tools, открыв терминал и выполнив
xcode-select --install
Установите Homebrew (brew
) и в новом терминале выполните
brew install bash cmake rust
Проверьте, что PATH
настроен правильно
which bash cmake
# /usr/local/bin/bash
# /usr/local/bin/cmake
Windows + MSYS2
Инструкции ниже предполагают, что ОС - 64-битная Windows и что оборудование или ВМ совместимо с x86-64.
Скачайте и запустите установщик с msys2.org.
Запустите среду MSYS2 environment. UCRT64 обычно рекомендуется: из меню Пуск Windows выберите MSYS2 MinGW UCRT x64
.
Предполагая среду UCRT64, в Bash выполните
pacman -Suy
pacman -S base-devel git unzip mingw-w64-ucrt-x86_64-toolchain mingw-w64-ucrt-x86_64-cmake mingw-w64-ucrt-x86_64-rust
Нам следует понизить GCC до версии 13 [^gcc-14]
pacman -U --noconfirm \
https://repo.msys2.org/mingw/ucrt64/mingw-w64-ucrt-x86_64-gcc-13.2.0-6-any.pkg.tar.zst \
https://repo.msys2.org/mingw/ucrt64/mingw-w64-ucrt-x86_64-gcc-libs-13.2.0-6-any.pkg.tar.zst
Опционально: Интеграция с терминалом VSCode
Вы можете связать терминал MSYS2-UCRT64 с VSCode, изменив файл конфигурации, как показано ниже. Файл: C:/Users/<username>/AppData/Roaming/Code/User/settings.json
{
...
"terminal.integrated.profiles.windows": {
...
"MSYS2-UCRT64": {
"path": "C:\\msys64\\usr\\bin\\bash.exe",
"args": [
"--login",
"-i"
],
"env": {
"MSYSTEM": "UCRT64",
"CHERE_INVOKING": "1",
"MSYS2_PATH_TYPE": "inherit"
}
}
}
}
Другие
Возможно, что nim-codex может быть собран и запущен на других платформах, поддерживаемых языком Nim: семейство BSD, более старые версии Windows и т.д. Не было достаточного экспериментирования с nim-codex на таких платформах, поэтому инструкции не предоставляются. Приветствуются вклады сообщества в эти документы и нашу систему сборки!
Репозиторий
В Bash выполните
git clone https://github.com/codex-storage/nim-codex.git repos/nim-codex && cd repos/nim-codex
nim-codex использует nimbus-build-system, поэтому затем выполните
make update
Этот шаг может занять некоторое время для завершения, потому что по умолчанию он собирает компилятор Nim.
Чтобы увидеть больше вывода от make
, передайте V=1
. Это работает для всех целей make
в проектах, использующих nimbus-build-system
make V=1 update
Исполняемый файл
В Bash выполните
make
Цель make
по умолчанию создает исполняемый файл build/codex
.
Инструменты
Инструмент загрузки схемы
Чтобы собрать инструмент загрузки схемы, расположенный в tools/cirdl
, выполните:
make cirdl
Пример использования
См. инструкции в Быстром старте.
Тесты
В Bash выполните
make test
testAll
Предварительные требования
Для запуска интеграционных тестов требуется тестовый узел Ethereum. Следуйте этим инструкциям для его настройки.
Windows (сделайте это перед "Все платформы")
- Скачайте и установите Visual Studio 2017 или новее. (Не VSCode!) В обзоре рабочих нагрузок включите
Desktop development with C++
. ( https://visualstudio.microsoft.com )
Все платформы
- Установите NodeJS (проверено с v18.14.0), рассмотрите использование NVM как менеджера версий. Node Version Manager (
nvm
) - Откройте терминал
- Перейдите в папку vendor/codex-contracts-eth:
cd /<git-root>/vendor/codex-contracts-eth/
npm install
-> Должно завершиться с количеством добавленных пакетов и обзором известных уязвимостей.npm test
-> Должен вывести результаты тестов. Может занять минуту.
Перед запуском интеграционных тестов вы должны вручную запустить тестовый узел Ethereum.
- Откройте терминал
- Перейдите в папку vendor/codex-contracts-eth:
cd /<git-root>/vendor/codex-contracts-eth/
npm start
-> Это должно запустить Hardhat и вывести ряд ключей и предупреждающее сообщение.
Запуск
Цель testAll
запускает те же тесты, что и make test
, а также запускает тесты для контрактов Ethereum nim-codex, а также базовый набор интеграционных тестов.
Чтобы запустить make testAll
.
Используйте новый терминал для запуска:
make testAll
Сборка в Docker
Для конкретного случая дистрибутивов Linux, которые поставляются с gcc 14 и понижение до 13 невозможно/нежелательно, сборка в контейнере Docker и извлечение бинарных файлов путем копирования или монтирования остается вариантом; например:
# Клонировать оригинальный репозиторий.
git clone https://github.com/codex-storage/nim-codex
# Собрать внутри docker
docker build -t codexstorage/nim-codex:latest -f nim-codex/docker/codex.Dockerfile nim-codex
# Извлечь исполняемый файл
docker create --name=codex-build codexstorage/nim-codex:latest
docker cp codex-build:/usr/local/bin/codex ./codex
docker cp codex-build:/usr/local/bin/cirdl ./cirdl
и вуаля, у вас должны быть бинарные файлы доступны в текущей папке.