igneum/tools/ca3-pc1-amd/make-g2-kit.sh

36 lines
2.3 KiB
Bash
Executable file

#!/usr/bin/env bash
# The G2 kit for tools/ca3-pc1-amd/pc1-amd-g2.ps1 (6 October 2026): the kit OpenCL worker (THIS tree's
# proto-opencl/host.c, cross-compiled with mingw as make-kit.sh does) and the two chain-seed packs of the class v4
# gate run, proto-cuda/packs-ca3-v4/mx8-devnet-epoch0 (the class v3 control) and v4-devnet-epoch0 (the candidate
# mx8+sh256x27 with the era at the devnet epoch-0 seeds), plus the sources and SHA256SUMS. The first kit's sh256x27
# is the genesis string-seed pack, which serve mode cannot take (epoch_seed must be 64 hex): hence this kit.
# tools/ca3-pc1-amd/make-g2-kit.sh [out.zip] default $TMPDIR/igneum-ca3-pc1-amd-g2-kit.zip
set -euo pipefail
HERE="$(cd "$(dirname "$0")" && pwd)"
ROOT="$(cd "$HERE/../.." && pwd)"
OUT="${1:-${TMPDIR:-/tmp}/igneum-ca3-pc1-amd-g2-kit.zip}"
RED="${IGNEUM_REDIST:-$ROOT/proto-cuda/nvrtc/redist}"
[ -f "$RED/include/CL/cl.h" ] || { echo "no OpenCL headers at $RED/include/CL/cl.h (run proto-cuda/nvrtc/fetch-redist.sh or set IGNEUM_REDIST)" >&2; exit 1; }
CC=x86_64-w64-mingw32-gcc; STRIP=x86_64-w64-mingw32-strip
command -v "$CC" >/dev/null || { echo "$CC not found (brew install mingw-w64)" >&2; exit 1; }
PLACEHOLDER="$ROOT/proto-cuda/packs/igneum-devnet-v4-epoch0"
STAGE="$(mktemp -d)"
mkdir -p "$STAGE/bin" "$STAGE/src" "$STAGE/packs"
echo "== igneum-worker-opencl.exe (kit build of proto-opencl/host.c)"
"$CC" -std=c99 -O2 -Wall -Wextra -Wno-stringop-truncation -Wno-format-truncation -static -DIGNEUM_CL_DYNAMIC -DCL_TARGET_OPENCL_VERSION=120 \
-I "$RED/include" -I "$PLACEHOLDER" -DIGNEUM_KERNEL_PATH='"kernel_bound.cl"' -o "$STAGE/bin/igneum-worker-opencl.exe" "$ROOT/proto-opencl/host.c"
"$STRIP" "$STAGE/bin/igneum-worker-opencl.exe"
cp "$ROOT/proto-opencl/host.c" "$ROOT/proto-opencl/cl_dynamic.h" "$STAGE/src/"
for p in packs-ca3-v4/mx8-devnet-epoch0 packs-ca3-v4/v4-devnet-epoch0; do
name="$(basename "$p")"
[ -f "$ROOT/proto-cuda/$p/kernel_bound.cl" ] || { echo "pack $p has no kernel_bound.cl" >&2; exit 1; }
mkdir -p "$STAGE/packs/$name"
cp "$ROOT/proto-cuda/$p"/* "$STAGE/packs/$name/"
done
( cd "$STAGE" && find . -type f ! -name SHA256SUMS | sort | xargs shasum -a 256 > SHA256SUMS )
rm -f "$OUT"
( cd "$STAGE" && zip -X -q -r "$OUT" . )
rm -rf "$STAGE"
echo "kit $OUT"
echo "sha256 $(shasum -a 256 "$OUT" | cut -c1-64) bytes $(wc -c < "$OUT" | tr -d ' ')"
unzip -l "$OUT" | tail -1