#!/usr/bin/env bash # Build orin-status natively on the development Orin, check it against the car's # glibc, and install it on the car Orin as the yukart-orin-status service. # # usage: scripts/deploy-orin-status.sh [host] (default: mikkeli-orin-nano) # env: BUILD_HOST (default: mikkeli-orin-nano-2) # # Builds what is pushed, not the working tree: the build host pulls master of # svc-core and contracts under ~/dev/yukart/. Native on purpose: orin-status runs # mmcli, and std::process::Command cross-compiled against the workstation's newer # glibc links GLIBC_2.39 symbols the car cannot load. set -euo pipefail HOST="${1:-mikkeli-orin-nano}" BUILD_HOST="${BUILD_HOST:-mikkeli-orin-nano-2}" cd "$(dirname "$0")/.." BIN="$(mktemp -d)/orin-status" ssh "$BUILD_HOST" 'set -e mkdir -p ~/dev/yukart && cd ~/dev/yukart for r in svc-core contracts; do [ -d $r ] || git clone -q http://192.168.2.199:3005/yukart/$r.git git -C $r pull -q --ff-only done cd svc-core && ~/.cargo/bin/cargo build --release --bin orin-status 2>&1 | tail -1 git log --oneline -1' scp -q "$BUILD_HOST:dev/yukart/svc-core/target/release/orin-status" "$BIN" 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-core' scp -q "$BIN" "$HOST:infra/svc-core/orin-status.new" scp -q deploy/yukart-orin-status.service "$HOST:infra/svc-core/yukart-orin-status.service" ssh "$HOST" 'set -e mv ~/infra/svc-core/orin-status.new ~/infra/svc-core/orin-status sudo ln -sfn "$HOME/infra/svc-core/orin-status" /usr/local/bin/yukart-orin-status sudo install -m 0644 ~/infra/svc-core/yukart-orin-status.service /etc/systemd/system/yukart-orin-status.service sudo systemctl daemon-reload sudo systemctl enable yukart-orin-status.service >/dev/null sudo systemctl restart yukart-orin-status.service sleep 1 systemctl --no-pager --lines=5 status yukart-orin-status.service'