@@ -159,17 +159,14 @@ jobs:
159159 # The ~/.mcpp/registry cache carries the built compat packages (xpkgs) across
160160 # runs, so repeat builds are fast.
161161 #
162- # timeout-minutes is sized for the COLD build, not the cached path. compat.opencv
163- # is now a from-source OpenCV 5 build, and each feature variant re-keys the
164- # store into a full recompile, so a full run (forced whenever this workflow file
165- # changes — e.g. a version bump) serially builds several OpenCV variants on one
166- # runner: compat.opencv base + `unifont` + `dnn` feature members, plus the
167- # transition-window compat.opencv5 pulled by the opencv-module member (opencv-m
168- # still deps compat.opencv5 until its v0.0.3). That transition double-build goes
169- # away once opencv-m switches to compat.opencv and compat.opencv5 is retired;
170- # steady state is base+unifont+dnn, and the registry cache (restore-keys prefix
171- # below) amortizes even those across subsequent runs. 150 covers the one-time
172- # cold full build with headroom; it is a ceiling, not a target.
162+ # timeout-minutes is sized for the COLD build, not the cached path. The opencv
163+ # module package carries a from-source OpenCV 5 build, and each feature variant
164+ # re-keys the store into a full recompile, so a full run (forced whenever this
165+ # workflow file changes — e.g. a version bump) serially builds three OpenCV
166+ # variants on one runner: the opencv-module base member plus the `unifont` and
167+ # `dnn` feature members. The registry cache (restore-keys prefix below)
168+ # amortizes those across subsequent runs. 150 covers the one-time cold full
169+ # build with headroom; it is a ceiling, not a target.
173170 workspace :
174171 name : workspace (${{ matrix.platform }})
175172 runs-on : ${{ matrix.os }}
@@ -259,8 +256,9 @@ jobs:
259256 # Run the FULL workspace when the change can affect everything:
260257 # non-PR events (push to main, the nightly cron, dispatch), this
261258 # workflow file (it carries the mcpp version pins, so a version bump
262- # always re-validates every package), the workspace manifest, or
263- # shared test scripts. Docs-only changes select nothing.
259+ # always re-validates every package), a non-member edit to the
260+ # workspace manifest, or shared test scripts. Docs-only and tools/-only
261+ # changes select nothing.
264262 # Note: bash 3.2 on macOS runners — no associative arrays here.
265263 - name : Select affected workspace members
266264 shell : bash
@@ -275,7 +273,7 @@ jobs:
275273 while IFS= read -r f; do
276274 [ -n "$f" ] || continue
277275 case "$f" in
278- .github/workflows/validate.yml|tests/*.sh|tools/* ) full "$f" ;;
276+ .github/workflows/validate.yml|tests/*.sh) full "$f" ;;
279277 mcpp.toml)
280278 # Workspace manifest. Every new-package PR appends to the
281279 # members list, so that alone must NOT force a full run:
@@ -301,7 +299,14 @@ jobs:
301299 if grep -q "$lib" "$mt"; then add "$(basename "$(dirname "$mt")")"; hit=1; fi
302300 done
303301 [ "$hit" = 1 ] || echo "note: no workspace member exercises $f" ;;
304- *.md|docs/*|.agents/*|.github/*) : ;;
302+ # tools/ holds OFFLINE descriptor-generation and publishing
303+ # helpers (tools/compat-*/, tools/gtc/, publish_mcpp_index.sh).
304+ # Nothing under it is consumed by a package build: when one of
305+ # them actually changes a package, the generated pkgs/*.lua
306+ # changes with it and the rule above selects the right members.
307+ # So a tools/ edit alone selects nothing rather than forcing a
308+ # full workspace rebuild.
309+ *.md|docs/*|.agents/*|.github/*|tools/*) : ;;
305310 *) full "unclassified change: $f" ;;
306311 esac
307312 done <<EOF
0 commit comments