src.nth.io/

summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorLuke Hoersten <[email protected]>2026-07-17 20:09:51 -0500
committerLuke Hoersten <[email protected]>2026-07-17 20:09:51 -0500
commit6c16b354e00e916b7e252b2304b71af87981f518 (patch)
tree17ffe1ef9575d761eb87def9423e10ee79cf88c5 /Makefile
parent81306bf3039f24f7ace8ce9cafca31ae747ee630 (diff)
tools: make targets + ota.sh for the build/OTA/verify loop
make build / cleanbuild / ota / verify / check wrap the recurring dev loop, sourcing the ESP-IDF env per-recipe. `make ota` reconfigures first (the embedded git hash stamps at configure time only), builds, pushes, and verifies. tools/ota.sh encodes the OTA acceptance criterion — the new image must show pending-verify on a fresh boot before flipping to valid; "valid" with pending-verify never seen means the device silently booted the old slot — and re-pushes once automatically on the known first-push rollback quirk.
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile37
1 files changed, 37 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..aec0253
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,37 @@
+# Helper targets for the common dev loops. idf.py needs the ESP-IDF
+# environment; each recipe sources it so `make build` works from a fresh
+# shell (Homebrew python first on PATH, per the toolchain setup).
+#
+# make build incremental firmware build
+# make cleanbuild wipe build/ + rebuild (fixes stale CMake cache)
+# make ota fresh-stamp build + OTA push + verify (auto-retry)
+# make ota VIEWPORT=<host> same, against a specific device
+# make verify post-push pending-verify -> valid check only
+# make check type-check the Scrypted plugin
+SHELL := /bin/bash
+
+VIEWPORT ?= 10.0.13.83
+ESP_ENV ?= ../../env.sh
+IDF = export PATH="/opt/homebrew/bin:$$PATH" && source $(ESP_ENV) >/dev/null 2>&1 && idf.py
+
+.PHONY: build cleanbuild ota verify check
+
+build:
+ $(IDF) build
+
+cleanbuild:
+ rm -rf build
+ $(IDF) build
+
+# The embedded git hash stamps at CMake configure time only, so an OTA of
+# fresh commits must reconfigure first or the binary reports a stale SHA.
+ota:
+ $(IDF) reconfigure >/dev/null
+ $(IDF) build
+ tools/ota.sh push $(VIEWPORT)
+
+verify:
+ tools/ota.sh verify $(VIEWPORT)
+
+check:
+ cd scrypted && npx tsc --noEmit