85 lines
3.0 KiB
Makefile
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
|