PrintToVeraeTimeStamp/scripts/build-win-linux.sh

58 lines
2 KiB
Shell
Executable file

#!/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."