gates: drop the player build that the player tests already compile (#719)

The land chain compiled the player build twice: `cargo build -p benilla --no-default-features`,
then `cargo test -p benilla-formats -p benilla-app --no-default-features --lib`. The test build
already compiles every line of the no-`dev` graph but the `benilla` launcher, a 17-line shim with
no `dev` seam, and `benilla-app` has no `cfg(not(test))` code, so the first step added only the
shim and a link: about two of a chain's twelve minutes. It goes from `gates.sh` and CI, and
`player-tests` carries its comment.

`check.sh` no longer says a full chain before land makes the land free: main moves in between, so
the chain ran twice.

Test: this land's own chain runs the new `gates.sh`.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sam Sung
2026-09-30 14:02:12 +07:00
committed by GitHub
co-authored by Claude Opus 5.5
parent c03ca1e4be
commit 2b700e6b0d
3 changed files with 10 additions and 12 deletions
-2
View File
@@ -48,7 +48,5 @@ jobs:
run: scripts/doc-links.py
- name: pass-span-lint
run: scripts/pass-span-lint.py
- name: player-build
run: cargo build -p benilla --no-default-features
- name: player-tests
run: cargo test -p benilla-formats -p benilla-app --no-default-features --lib
+2 -2
View File
@@ -92,7 +92,7 @@ esac
pflags=""
for p in $pkgs; do pflags="$pflags -p $p"; done
echo "check: scope = $pkgs"
echo "check: (changed crates + everything that depends on them; full chain still runs at sync→land)"
echo "check: (changed crates + everything that depends on them; the full chain runs once, at land)"
log="$(mktemp "${TMPDIR:-/tmp}/benilla-check.XXXXXX")"
skips="$(mktemp "${TMPDIR:-/tmp}/benilla-check-skips.XXXXXX")"
@@ -120,4 +120,4 @@ if [ -s "$skips" ]; then
fi
echo "CHECK GREEN (scoped: $pkgs)"
echo " (land still pays the full chain once: scripts/gates.sh — memoized, so an already-gated tree is free)"
echo " (the full chain, scripts/gates.sh, runs once on the tree that lands; a run before it repeats it)"
+8 -8
View File
@@ -1,8 +1,8 @@
#!/usr/bin/env bash
# The land gate chain: every gate in order, stopping at the first failure.
#
# fmt, clippy, test, test-no-install, doc-links, pass-span-lint, player-build, player-tests,
# enforcer, enforcer-no-install. A failure prints the gate's log tail and exits nonzero; a green
# fmt, clippy, test, test-no-install, doc-links, pass-span-lint, player-tests, enforcer,
# enforcer-no-install. A failure prints the gate's log tail and exits nonzero; a green
# run stamps the tree, which then re-greens without running. GATES_FORCE=1 runs the chain anyway,
# WOW_DATA picks the install (set and empty: none) and TMPDIR holds the scratch files; the script
# sets BENILLA_REQUIRE_DATA, BENILLA_ADDON_CORPUS, BENILLA_SKIP_LOG and WOW_WORLDVIEW_CHECK for
@@ -135,12 +135,12 @@ run doc-links scripts/doc-links.py
# wgpu validation error on Vulkan and a silent no-op on Metal and DX12, which no macOS run sees.
run pass-span-lint scripts/pass-span-lint.py
# player-build: `benilla` without `dev`, which compiles out the debug panel, perf HUD, inspector,
# capture harness and probes, so it fails when any other code names one of them.
run player-build cargo build -p benilla --no-default-features
# player-tests: the unit tests of the `cfg(not(feature = "dev"))` code (the resolver skips the
# source tree; the state folder sits beside the binary), which no other gate runs. WOW_DATA, which
# player-tests: the player build, `benilla-app` without `dev`, which compiles out the debug panel,
# perf HUD, inspector, capture harness and probes, so it fails when any other code names one of
# them. Its test build compiles every line of the player graph but the `benilla` launcher, a shim
# with no `dev` seam, so a `cargo build -p benilla --no-default-features` would add only the shim
# and a link. It runs the unit tests of the `cfg(not(feature = "dev"))` code (the resolver skips
# the source tree; the state folder sits beside the binary), which no other gate runs. WOW_DATA, which
# a player build reads too, goes in for the shipped-UI tests that read FrameXML off the install.
# Without `dev` only $BENILLA_ADDON_CORPUS finds the addon corpus, so the link goes in by that name,
# and BENILLA_REQUIRE_DATA refuses a skip here exactly where it does in `test`.