ecu-tests/scripts/pi_install.sh

63 lines
1.9 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
# This script installs prerequisites, sets up a venv, installs deps,
# and wires up systemd units on a Raspberry Pi.
# Run as: sudo bash scripts/pi_install.sh /home/pi/ecu_tests
TARGET_DIR="${1:-/home/pi/ecu_tests}"
REPO_URL="${2:-}" # optional; if empty assumes repo already present at TARGET_DIR
PI_USER="${PI_USER:-pi}"
log() { echo "[pi_install] $*"; }
if [[ $EUID -ne 0 ]]; then
echo "Please run as root (sudo)." >&2
exit 1
fi
log "Installing OS packages..."
apt-get update -y
apt-get install -y --no-install-recommends \
python3 python3-venv python3-pip git ca-certificates \
libusb-1.0-0 udev
mkdir -p "$TARGET_DIR"
chown -R "$PI_USER":"$PI_USER" "$TARGET_DIR"
if [[ -n "$REPO_URL" ]]; then
log "Cloning repo: $REPO_URL"
sudo -u "$PI_USER" git clone "$REPO_URL" "$TARGET_DIR" || true
fi
cd "$TARGET_DIR"
log "Creating Python venv..."
sudo -u "$PI_USER" python3 -m venv .venv
log "Installing Python dependencies..."
sudo -u "$PI_USER" bash -lc "source .venv/bin/activate && pip install --upgrade pip && pip install -r requirements.txt"
log "Preparing reports directory..."
mkdir -p reports
chown -R "$PI_USER":"$PI_USER" reports
log "Installing systemd units..."
install -Dm644 scripts/ecu-tests.service /etc/systemd/system/ecu-tests.service
if [[ -f scripts/ecu-tests.timer ]]; then
install -Dm644 scripts/ecu-tests.timer /etc/systemd/system/ecu-tests.timer
fi
systemctl daemon-reload
systemctl enable ecu-tests.service || true
if [[ -f /etc/systemd/system/ecu-tests.timer ]]; then
systemctl enable ecu-tests.timer || true
fi
log "Installing udev rules (if provided)..."
if [[ -f scripts/99-babylin.rules ]]; then
install -Dm644 scripts/99-babylin.rules /etc/udev/rules.d/99-babylin.rules
udevadm control --reload-rules || true
udevadm trigger || true
fi
log "Done. You can start the service with: systemctl start ecu-tests.service"