logos-blockchain-testing/scripts/build-linux-binaries.sh

70 lines
3.0 KiB
Bash
Executable File

#!/usr/bin/env bash
# Build Linux nomos-node/nomos-executor/nomos-cli binaries and stage them into
# testing-framework/assets/stack/bin along with the circuits bundle. This uses
# a Dockerized toolchain so it can be run from macOS as well.
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
NOMOS_NODE_REV="${NOMOS_NODE_REV:-d2dd5a5084e1daef4032562c77d41de5e4d495f8}"
NOMOS_CIRCUITS_VERSION="${NOMOS_CIRCUITS_VERSION:-v0.3.1}"
NOMOS_BIN_PLATFORM="${NOMOS_BIN_PLATFORM:-linux/amd64}"
case "${NOMOS_BIN_PLATFORM}" in
linux/amd64) CIRCUITS_PLATFORM="linux-x86_64" ;;
linux/arm64) CIRCUITS_PLATFORM="linux-aarch64" ;;
*) echo "Unsupported platform ${NOMOS_BIN_PLATFORM}. Use linux/amd64 or linux/arm64." >&2; exit 1 ;;
esac
echo "Workspace: ${ROOT_DIR}"
echo "Nomos node rev: ${NOMOS_NODE_REV}"
echo "Circuits version: ${NOMOS_CIRCUITS_VERSION}"
BIN_OUT="${ROOT_DIR}/testing-framework/assets/stack/bin"
CIRCUITS_OUT="${ROOT_DIR}/testing-framework/assets/stack/kzgrs_test_params"
SRC_DIR="${ROOT_DIR}/.tmp/nomos-node-src"
CIRCUITS_DIR="${ROOT_DIR}/.tmp/nomos-circuits"
rm -rf "${CIRCUITS_OUT}"
mkdir -p "${BIN_OUT}" "${CIRCUITS_OUT}" "${SRC_DIR}" "${CIRCUITS_DIR}"
docker run --rm --platform "${NOMOS_BIN_PLATFORM}" \
-v "${ROOT_DIR}:/workspace" \
-w /workspace \
-e NOMOS_NODE_REV="${NOMOS_NODE_REV}" \
-e NOMOS_CIRCUITS_VERSION="${NOMOS_CIRCUITS_VERSION}" \
-e NOMOS_CIRCUITS_PLATFORM="${CIRCUITS_PLATFORM}" \
rust:1.91.0-slim-bookworm \
bash -euo pipefail -c '
apt-get update && apt-get install -y git clang llvm-dev libclang-dev pkg-config cmake libssl-dev rsync libgmp-dev libgomp1 nasm curl ca-certificates xz-utils
cd /workspace
RAPIDSNARK_BUILD_GMP=0 RAPIDSNARK_USE_ASM=OFF \
./scripts/setup-nomos-circuits.sh "${NOMOS_CIRCUITS_VERSION}" "/workspace/.tmp/nomos-circuits"
if [ ! -d /workspace/.tmp/nomos-node-src/.git ]; then
git clone https://github.com/logos-co/nomos-node.git /workspace/.tmp/nomos-node-src
fi
cd /workspace/.tmp/nomos-node-src
git fetch --depth 1 origin "${NOMOS_NODE_REV}"
git checkout "${NOMOS_NODE_REV}"
git reset --hard
git clean -fdx
NOMOS_CIRCUITS=/workspace/.tmp/nomos-circuits \
cargo build --features "testing" \
-p nomos-node -p nomos-executor -p nomos-cli
cp /workspace/.tmp/nomos-node-src/target/debug/nomos-node /workspace/testing-framework/assets/stack/bin/
cp /workspace/.tmp/nomos-node-src/target/debug/nomos-executor /workspace/testing-framework/assets/stack/bin/
cp /workspace/.tmp/nomos-node-src/target/debug/nomos-cli /workspace/testing-framework/assets/stack/bin/
rsync -a /workspace/.tmp/nomos-circuits/ /workspace/testing-framework/assets/stack/kzgrs_test_params/
'
# Ensure host ownership of staged artifacts.
chown -R "$(id -u)":"$(id -g)" "${BIN_OUT}" "${CIRCUITS_OUT}" "${SRC_DIR}" "${CIRCUITS_DIR}" 2>/dev/null || true
echo
echo "Binaries staged in ${BIN_OUT}:"
ls -l "${BIN_OUT}"
echo
echo "Circuits staged in ${CIRCUITS_OUT}"