#!/usr/bin/env bash # Cross-compile Windows + Linux release archives for printit.verae.ai set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)" cd "$ROOT" VERSION="${VERSION:-$(go run ./cmd/verae-print version 2>/dev/null || true)}" if [[ -z "$VERSION" || "$VERSION" == *"go: "* ]]; then VERSION=$(grep -E 'HelperVersion\s*=' internal/job/job.go | head -1 | sed -E 's/.*"([^"]+)".*/\1/') fi OUT="${OUT:-$ROOT/build/win-linux}" rm -rf "$OUT" mkdir -p "$OUT" echo "Building verae-print $VERSION → $OUT" build_one() { local goos="$1" goarch="$2" label="$3" local dir="$OUT/VeraePrintStamp-${label}-${VERSION}" mkdir -p "$dir" local bin="verae-print" [[ "$goos" == "windows" ]] && bin="verae-print.exe" echo "→ $goos/$goarch" CGO_ENABLED=0 GOOS="$goos" GOARCH="$goarch" go build -trimpath -ldflags "-s -w" -o "$dir/$bin" ./cmd/verae-print if [[ "$goos" == "linux" ]]; then mkdir -p "$dir/cups" cp platform/linux/install.sh "$dir/" cp platform/linux/README.txt "$dir/" cp platform/linux/cups/backend-verae.sh "$dir/cups/" chmod +x "$dir/install.sh" "$dir/cups/backend-verae.sh" "$dir/$bin" tar -C "$OUT" -czf "$OUT/VeraePrintStamp-${label}-${VERSION}.tar.gz" "VeraePrintStamp-${label}-${VERSION}" cp "$OUT/VeraePrintStamp-${label}-${VERSION}.tar.gz" "$OUT/VeraePrintStamp-${label}.tar.gz" else cp platform/windows/install.ps1 "$dir/" cp platform/windows/README.txt "$dir/" ( cd "$OUT" zip -qr "VeraePrintStamp-${label}-${VERSION}.zip" "VeraePrintStamp-${label}-${VERSION}" cp "VeraePrintStamp-${label}-${VERSION}.zip" "VeraePrintStamp-${label}.zip" ) fi } build_one linux amd64 linux-amd64 build_one linux arm64 linux-arm64 build_one windows amd64 windows-amd64 # Windows arm64 is increasingly common build_one windows arm64 windows-arm64 ( cd "$OUT" shasum -a 256 VeraePrintStamp-*.tar.gz VeraePrintStamp-*.zip 2>/dev/null | tee SHA256SUMS ) echo echo "Artifacts:" ls -lh "$OUT"/VeraePrintStamp-*.{tar.gz,zip} 2>/dev/null echo "Done."