#!/usr/bin/env bash # Build svc-gw for aarch64, check it against the car's glibc, and install it # on an Orin as the yukart-gw service. # # usage: scripts/deploy.sh [host] (default: mikkeli-orin-nano) # # Cross-compiles from the workstation (the documented fallback): the development # Orin is the preferred native build host. Either way check-glibc.sh gates it. set -euo pipefail HOST="${1:-mikkeli-orin-nano}" cd "$(dirname "$0")/.." TARGET=aarch64-unknown-linux-gnu BIN="target/$TARGET/release/svc-gw" cargo build --release --target "$TARGET" scripts/check-glibc.sh "$BIN" # Binary lives under ~/infra per the host repo's guidelines; /usr/local/bin gets a symlink. ssh "$HOST" 'mkdir -p ~/infra/svc-gw' scp -q "$BIN" "$HOST:infra/svc-gw/svc-gw.new" scp -q deploy/yukart-gw.service "$HOST:infra/svc-gw/yukart-gw.service" ssh "$HOST" 'set -e mv ~/infra/svc-gw/svc-gw.new ~/infra/svc-gw/svc-gw sudo ln -sfn "$HOME/infra/svc-gw/svc-gw" /usr/local/bin/yukart-gw sudo install -m 0644 ~/infra/svc-gw/yukart-gw.service /etc/systemd/system/yukart-gw.service sudo systemctl daemon-reload sudo systemctl enable yukart-gw.service >/dev/null sudo systemctl restart yukart-gw.service sleep 1 systemctl --no-pager --lines=5 status yukart-gw.service'