From 0400bd8965f1bf0e182a908ed19a7d4af4d71b4a Mon Sep 17 00:00:00 2001 From: andrussal Date: Thu, 4 Dec 2025 13:00:31 +0100 Subject: [PATCH] Add dockerized helper to build Linux nomos binaries --- scripts/build-linux-binaries.sh | 69 +++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100755 scripts/build-linux-binaries.sh diff --git a/scripts/build-linux-binaries.sh b/scripts/build-linux-binaries.sh new file mode 100755 index 0000000..d6cca2a --- /dev/null +++ b/scripts/build-linux-binaries.sh @@ -0,0 +1,69 @@ +#!/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:-2f60a0372c228968c3526c341ebc7e58bbd178dd}" +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}"