#!/usr/bin/env bash # # Build eval-cli for x86_64 Linux from any host (macOS, Linux, etc.) # using Docker. The resulting binary is placed at the path printed on # completion (default: target/eval-cli). # # Usage: # crates/eval_cli/script/build-linux [--output PATH] # # Examples: # crates/eval_cli/script/build-linux # crates/eval_cli/script/build-linux --output ~/bin/eval-cli # # Prerequisites: Docker must be installed and running. set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" REPO_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)" OUTPUT="${REPO_ROOT}/target/eval-cli" while [[ $# -gt 0 ]]; do case $1 in --output) OUTPUT="$2" shift 2 ;; *) echo "Unknown option: $1" >&2 exit 1 ;; esac done cd "$REPO_ROOT" IMAGE_TAG="eval-cli-builder" echo "Building eval-cli for x86_64-unknown-linux-gnu..." echo " Repo root: $REPO_ROOT" echo " Output: $OUTPUT" echo "" docker build \ --platform linux/amd64 \ -f crates/eval_cli/Dockerfile \ -t "$IMAGE_TAG" \ . CONTAINER_ID=$(docker create "$IMAGE_TAG" /eval-cli) mkdir -p "$(dirname "$OUTPUT")" docker cp "$CONTAINER_ID":/eval-cli "$OUTPUT" docker rm "$CONTAINER_ID" > /dev/null echo "" echo "Built successfully: $OUTPUT" echo " $(file "$OUTPUT")"