docs(CLAUDE.md): для сборки контрактов на ARM использовать dicoop/blockchain_v5.1.1:dev

build-all.sh / build.sh хардкодят dicoop/blockchain:latest (amd64-only) —
на ARM падают «exec format error». Multi-arch образ dicoop/blockchain_v5.1.1:dev
имеет нативный arm64 manifest; команда для marketplace в одну строку
зафиксирована в новой секции «Сборка контрактов на ARM-машине».

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-28 15:02:34 +05:00
parent a550e06802
commit b266181a05
+24
View File
@@ -62,6 +62,30 @@ Workflow:
**Анти-паттерн:** worktree от `feat/1-2-...`, потом от `feat/1-3-...`, и каждый PR в `marketplace2`. Цепочка branches правильная (изоляция), но цепочка PR — нет. Кейс Эпика 1 Стола заказов 2026-05-14: 11 PR `#370-#380` подряд от `marketplace2`, каждый +N stories назад. Пользователь дошёл до review #372 и обнаружил дубли. Закрыл #372-#379, оставил только #380.
## Сборка контрактов на ARM-машине
Скрипты `components/contracts/build-all.sh` и `build.sh` хардкодят образ
`dicoop/blockchain:latest`, который опубликован **только под `linux/amd64`**
на ARM (Raspberry Pi 5, Apple Silicon без qemu-binfmt и пр.) `docker run` падает
с `exec /bin/bash: exec format error` сразу после старта контейнера.
**Для ARM использовать multi-arch образ `dicoop/blockchain_v5.1.1:dev`**
у него тег `dev` указывает на manifest list с нативными `dev-arm64` и
`dev-amd64` под капотом. Запуск:
```bash
cd components/contracts
rm -rf build && mkdir build
docker run --rm --name cdt \
--volume "$(pwd)/:/project" \
-w /project/build \
dicoop/blockchain_v5.1.1:dev \
/bin/bash -c "cmake -DBUILD_TARGET='marketplace' -DTEST_TARGET= -DVERBOSE=ON -DBUILD_TESTS=OFF -DIS_TESTNET=OFF .. && make -j2"
```
Замена образа в build-скриптах на ARM — отдельный фикс (этот файл документирует
рабочий обход, пока скрипты не перевели на multi-arch манифест глобально).
## Локальные тесты
**Не запускать полный jest локально** ни в mono-ai-1, ни в mono-ai-4: живой dev-стек в docker (`nodeos`, `controller dev` nodemon, `parser dev`, `n8n`) вешает CPU/RAM и блокирует chain. Полный suite — задача CI после push'а PR.