From 52faaf992046cdfd29d4f6a09fe32e5b4f5529a7 Mon Sep 17 00:00:00 2001 From: BlackMark Date: Thu, 3 Sep 2026 02:39:15 +0200 Subject: [PATCH] deps: the libavr pin advances, and this repository gets a committed gate The pin moves to libavr's USI I2C rate fix and to the two override surfaces the fan-controller port filed - a PWM solve that can be pinned, and a capture edge that is a value rather than a template argument. Nothing here names any of them; four presets green and no image moved. `tools/check.sh` is new, and its absence was the defect: this repository had no committed gate at all, so "run the suite" was a snippet somebody remembered - and the order in a snippet is the one thing nobody re-derives. Every preset built before any is tested is subtle and load-bearing, because the mode-identity check reads the sibling mode's tree and a build-then-test-per- preset run holds a fresh image against a stale sibling. The loop is libavr's `tools/check-presets.sh`; nothing is written after the call, there being nothing beyond the presets this repository knows to ask. And `.vscode/settings.json` stops naming a toolchain prefix. It named `D:/dev/libavr/local/toolchain/avr-gcc-16.1.0-mingw`: a path true of one machine (libavr guidance rule 50) and, since the in-repo toolchain copies went, true of none. `local/machine.cmake` is where a checkout says that, and it already did. Co-Authored-By: Claude Opus 5 --- .vscode/settings.json | 13 ++++++------- libavr | 2 +- tools/check.sh | 11 +++++++++++ 3 files changed, 18 insertions(+), 8 deletions(-) create mode 100755 tools/check.sh diff --git a/.vscode/settings.json b/.vscode/settings.json index ee9ab88..d598a4e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -14,14 +14,13 @@ "--header-insertion=never" ], - // The presets are the build interface; the toolchain file inside the - // libavr submodule is the one place the compiler is chosen. The submodule - // carries no local/toolchain for it to discover, so the prefix is named - // here, for the window that opens this folder. + // The presets are the build interface, and the toolchain file inside the + // libavr submodule is the one place the compiler is chosen. **No prefix is + // named here**: a committed file may not name a path that is true of one + // machine (libavr guidance rule 50), so the gitignored local/machine.cmake + // at this repository's root is where a checkout says where its toolchain + // is - one file, and it answers for both hosts. "cmake.useCMakePresets": "always", - "cmake.environment": { - "LIBAVR_TOOLCHAIN": "D:/dev/libavr/local/toolchain/avr-gcc-16.1.0-mingw" - }, "cmake.configureOnOpen": true, "cmake.options.statusBarVisibility": "compact", diff --git a/libavr b/libavr index 8521f48..00d669b 160000 --- a/libavr +++ b/libavr @@ -1 +1 @@ -Subproject commit 8521f48a3361100c5f3e3c5004a5ff415e2d1484 +Subproject commit 00d669b4510579d202bac059f46246448d5cac3b diff --git a/tools/check.sh b/tools/check.sh new file mode 100755 index 0000000..40de33e --- /dev/null +++ b/tools/check.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +# The task gate: every configure preset built, and only then every one tested. +# +# The loop itself is libavr's (tools/check-presets.sh) because the order in it +# is subtle and was got wrong by hand more than once - the mode-identity checks +# read the sibling mode's tree, so a build-then-test-per-preset run compares a +# fresh image against a stale sibling. Anything this repository needs beyond +# the presets is written after the call, where every tree is built and tested. +set -euo pipefail +cd "$(dirname "${BASH_SOURCE[0]}")/.." +"${LIBAVR_ROOT:-libavr}/tools/check-presets.sh" "$@"