forked from pocketnetteam/documentation
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'pocketnetteam:main' into main
- Loading branch information
Showing
6 changed files
with
169 additions
and
79 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# Introduction |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
# Introduction |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,9 +1,130 @@ | ||
# Building | ||
|
||
## Cmake | ||
## Вступление | ||
|
||
## Makefile | ||
Блокчейн нода Бастион это форк Биткоин, поэтому большинство решений идентичны процессу | ||
сборки Биткоин узла. Можно разделить данный пакет на ключевые исполняемые файлы: | ||
- `pocketcoind`: демон узла, позволяющий запустить узел в терминале или docker-контейнере. Управление узлом в этом варианте реализуется через конфигурационный файл `pocketcoin.conf` или HTTP (далее RPC) интерфейс. | ||
- `pocketcoin-qt`: графический вариант, включающий в себя весь функционал демона. Основа интерфейса составляет кошелек со всеми присущими ему функциями. Также интерфейс дополняют такие инструменты, как консоль RPC, панель управления пирами, настройки узла и т.д. | ||
- `pocketcoin-cli`: консольная утилита для управления узлом через RPC интерфейс, позволяет взаимодействовать с кошельком, получать статистику или настраивать уровни и категории логирования. | ||
|
||
## JetBrains CLion | ||
Каждый из этих исполняемых файлов может быть собран как по отдельности, так и целиком, упакованные в установочный пакет (NSIS пакет Windows, DEB архив для Debian/Ubuntu, DMG for MacOS). Способ сборки зависит от личных предпочтений разработчика, в данном руководстве представлены два основных способа (для целей разработки и релизные версии). | ||
|
||
## Visual Studio | ||
## Getting Started | ||
|
||
Для успешной сборки могут потребоваться права администратора вашей ОС для установки необходимого ПО. Также предполагается, что пользователь владеет навыками работы с терминалом (установка пакетов и редактирование файлов). Желательны минимальные знания о структуре и назначении файлов при сборке C++ проектов. Также для избегания конфликтов рекомендуется использовать Docker для сборки и запуска узла. | ||
|
||
## Общие требования | ||
|
||
- [git](https://git-scm.com/) | ||
- [cmake](https://cmake.org/) v3.20+ | ||
|
||
## Сборка в Docker Контейнере | ||
|
||
Docker предоставляет широкие возможности выбора платформы для работы и изоляции от основной операционной системы. Использование docker контейнеров не обязательное условие, но позволяет избежать проблем с зависимостями в процессе работы. В данном руководстве для описания процесса используется образ `ubuntu:22.04`. | ||
|
||
## Загрузка репозитория | ||
|
||
Загрузите проект из официального репозитория (для этого потребуется установить git). Основная ветвь является допустимой для работы в Main сети, но может включать в себя коммиты, которые принадлежат к стадии BETA. Рекомендуется переключить репозиторий на последний тег. | ||
|
||
```bash | ||
apt-get update && apt-get install git | ||
git clone https://github.com/pocketnetteam/pocketnet.core | ||
cd pocketnet.core/ | ||
git checkout $(git describe --tags "$(git rev-list --tags --max-count=1)") | ||
``` | ||
|
||
## Подготовка пакетов зависимостей | ||
|
||
Слудующий этап заключается в подготовке окружения и установке минимального набора пакетов, необходимых для запуска компиляции проекта. В зависимости от целевой ОС набор дополнительных пакетов и процесс немного различается. | ||
|
||
### Целевая ОС: Linux x64 | ||
|
||
```bash | ||
apt-get update && apt-get install git make automake cmake curl g++-multilib libtool binutils-gold bsdmainutils pkg-config python3 patch bison | ||
``` | ||
|
||
#### Целевая ОС: Linux arm64 | ||
|
||
```bash | ||
|
||
``` | ||
|
||
#### Целевая ОС: Windows x64 | ||
|
||
```bash | ||
|
||
``` | ||
|
||
#### Целевая ОС: MacOS x64 (intel) | ||
|
||
```bash | ||
|
||
``` | ||
|
||
#### Целевая ОС: MacOS arm64 (mX) | ||
|
||
```bash | ||
|
||
``` | ||
|
||
Каталог `depends/` содержит все необходимые пакеты для сборки, которые позволяют скомпиллироть код для разных платформ. | ||
|
||
Чтобы выполнить сборку зависимостей необходимо передать компилятору `make` аргумент `HOST` с указанием целевой платформы. | ||
|
||
```bash | ||
cd depends/ | ||
make HOST=host-platform-triplet | ||
cd .. | ||
``` | ||
|
||
Common `host-platform-triplets` for cross compilation are: | ||
- `x86_64-pc-linux-gnu` for Linux (64-bit) | ||
- `x86_64-w64-mingw32` for Windows (64-bit) | ||
- `x86_64-apple-darwin16` for macOS (64-bit) | ||
- `arm64-apple-darwin` for ARM macOS (64-bit) | ||
|
||
|
||
### Конфигурирование и компиляция | ||
|
||
#### `cmake` | ||
|
||
:::tip | ||
Данный вид сборки находится в стадии тестирования и не предназначен для использования в продакшне. | ||
::: | ||
|
||
```bash | ||
mkdir build && cd build | ||
cmake -DCMAKE_PREFIX_PATH=$PWD/../depends/host-platform-triplets .. | ||
cmake --build . --config Debug -j 4 | ||
``` | ||
|
||
В результате будут скомпилированы следующие файлы: | ||
``` | ||
└─ build/ | ||
└─ src/ | ||
└─ qt/ | ||
│ └─ pocketcoin-qt | ||
├─ pocketcoind | ||
├─ pocketcoin-cli | ||
``` | ||
|
||
#### `make` | ||
|
||
Основной способ сборки испоняемых файлов и установочных пакетов. | ||
|
||
```bash | ||
./autogen.sh | ||
./configure --prefix=$PWD/depends/host-platform-triplets | ||
make | ||
make deploy | ||
``` | ||
|
||
В результате будут скомпилированы следующие файлы: | ||
``` | ||
└─ src | ||
└─ qt/ | ||
│ └─ pocketcoin-qt | ||
├─ pocketcoind | ||
└─ pocketcoin-cli | ||
``` |