Files
quic_ecs_dt/Makefile
2026-05-12 11:21:40 -04:00

85 lines
3.0 KiB
Makefile

# ============================================================
# quic_ecs_dt — top-level Makefile
# Targets:
# make demo — one-shot: certs → build → VM+Grafana →
# substrate → simulator (Ctrl-C cleans up)
# make render — build the paper PDF
# make preview — live-reload preview in browser
# make build — cargo build --release (native)
# make build-cm5 — cargo build --release (aarch64 cross)
# make monitoring-up — start VictoriaMetrics + Grafana (docker)
# make monitoring-down — stop them
# make monitoring-logs — tail the monitoring stack
# make clean — remove generated outputs
# ============================================================
.PHONY: render preview build build-cm5 clean certs monitoring-up monitoring-down monitoring-logs demo
VENV := $(HOME)/.venv/quic_ecs
PYTHON := $(VENV)/bin/python
CM5_HOST ?= 192.168.1.x
CM5_USER ?= pi
CM5_BIN_DIR ?= /home/pi/quic_ecs_dt
# Self-signed dev TLS for the QUIC server (regenerate with `make certs`).
# SAN covers loopback, ::1, and cm5.local for the two-machine setup.
CERT_DIR := certs
CERT_FILE := $(CERT_DIR)/server.crt
KEY_FILE := $(CERT_DIR)/server.key
certs: $(CERT_FILE)
$(CERT_FILE):
mkdir -p $(CERT_DIR)
openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:P-256 \
-keyout $(KEY_FILE) -out $(CERT_FILE) \
-days 3650 -nodes \
-subj "/CN=localhost/O=quic_ecs_dt-dev/OU=substrate" \
-addext "subjectAltName=DNS:localhost,DNS:cm5.local,IP:127.0.0.1,IP:::1"
# Paper
render:
cd paper && quarto render index.qmd
preview:
cd paper && quarto preview index.qmd --port 4848 --no-browser
# Rust build (depends on dev cert so `cargo run` boots out of the box)
build: $(CERT_FILE)
cargo build --release
build-cm5: $(CERT_FILE)
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc \
cargo build --release --target aarch64-unknown-linux-gnu
# Deploy binary to CM5
deploy-cm5: build-cm5
ssh $(CM5_USER)@$(CM5_HOST) "mkdir -p $(CM5_BIN_DIR)"
scp target/aarch64-unknown-linux-gnu/release/quic_ecs_dt \
$(CM5_USER)@$(CM5_HOST):$(CM5_BIN_DIR)/
# One-shot demo runner — see scripts/demo.sh
demo:
@./scripts/demo.sh
# Monitoring (VictoriaMetrics + Grafana, auto-provisioned)
monitoring-up:
docker compose -f monitoring/docker-compose.yml up -d
@echo ""
@echo "Grafana: http://localhost:3000 (admin / admin, or anonymous Admin)"
@echo " • runtime dashboard: quic_ecs_dt → quic_ecs_dt — substrate runtime"
@echo " • sensors dashboard: quic_ecs_dt → quic_ecs_dt — sensors"
@echo "VictoriaMetrics: http://localhost:8428"
monitoring-down:
docker compose -f monitoring/docker-compose.yml down
monitoring-logs:
docker compose -f monitoring/docker-compose.yml logs -f
# Clean
clean:
cargo clean
rm -rf paper/_output paper/.quarto paper/index.tex \
paper/figures/*.pdf paper/figures/*.png \
data/loopback/*.csv data/two_machine/*.csv