build-linux

 1#!/usr/bin/env bash
 2#
 3# Build eval-cli for x86_64 Linux from any host (macOS, Linux, etc.)
 4# using Docker. The resulting binary is placed at the path printed on
 5# completion (default: target/eval-cli).
 6#
 7# Usage:
 8#   crates/eval_cli/script/build-linux [--output PATH]
 9#
10# Examples:
11#   crates/eval_cli/script/build-linux
12#   crates/eval_cli/script/build-linux --output ~/bin/eval-cli
13#
14# Prerequisites: Docker must be installed and running.
15
16set -euo pipefail
17
18SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
19REPO_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
20OUTPUT="${REPO_ROOT}/target/eval-cli"
21
22while [[ $# -gt 0 ]]; do
23    case $1 in
24        --output)
25            OUTPUT="$2"
26            shift 2
27            ;;
28        *)
29            echo "Unknown option: $1" >&2
30            exit 1
31            ;;
32    esac
33done
34
35cd "$REPO_ROOT"
36
37IMAGE_TAG="eval-cli-builder"
38
39echo "Building eval-cli for x86_64-unknown-linux-gnu..."
40echo "  Repo root: $REPO_ROOT"
41echo "  Output:    $OUTPUT"
42echo ""
43
44docker build \
45    --platform linux/amd64 \
46    -f crates/eval_cli/Dockerfile \
47    -t "$IMAGE_TAG" \
48    .
49
50CONTAINER_ID=$(docker create "$IMAGE_TAG" /eval-cli)
51mkdir -p "$(dirname "$OUTPUT")"
52docker cp "$CONTAINER_ID":/eval-cli "$OUTPUT"
53docker rm "$CONTAINER_ID" > /dev/null
54
55echo ""
56echo "Built successfully: $OUTPUT"
57echo "  $(file "$OUTPUT")"