mirror of
https://github.com/Klipper4FlashForge/firmware.git
synced 2026-10-22 05:12:16 -05:00
Two gates go, both of the same shape: a pkg_die run against $PAYLOAD_DIR a few
lines after bin/build-payload.py filled it, asking whether opkg had installed
the packages it was handed.
* section 1: a klippy tree at $MODDIR/klipper/klippy, and a c_helper.so
inside it
* section 5b-2: etc/s6-rc/compiled/current resolving
Neither was ever this script's question. patch.sh no longer builds either
subject -- anvil-klipper installs the klippy tree, and case-build-payload.sh
compiles the database in the replica with the s6-rc-compile anvil-s6-rc ships
-- so a gate here can only report that a package manager did what it said it
did, on a staging directory, on the build host.
Both are already asked on the two vehicles that actually reach a printer:
* bin/verify.sh reads the PACKED artefact -- the klippy tree, c_helper.so,
and compiled/current resolving, plus the one thing about the database a
host can genuinely tell that patch.sh never asked: the execline named by
the oneshot runner's #!.
* qa/replica asks an INSTALLED filesystem. test_install.py's
test_klippy_is_present is the klippy question by name, test_abi.py sweeps
c_helper.so for the ABI, and test_s6rc.py boots the thing -- s6-rc-init
reads the database, the boot set comes up, and a database moved aside is
reported as a negative control.
The two `say` lines went with them. Both existed to narrate a gate; the
Klipper one printed a pin that pkgs/klipper/pkg.conf already stamps into
PKG_VERSION, and the s6-rc one readlink'd the path the gate had just tested.
KEPT, and it is the same call 4ce928f made for the toolchain wrapper: the
anvil-core check in section 0. It judges the INPUT feed rather than the
produced payload, which is a question no downstream gate can ask, and it
guards a silent failure -- the MOD_INSTALL loop drops a root with no .ipk
without a word, because that is how PKG_WHEN reaches this script, so a missing
anvil-core would otherwise build a payload without it rather than stop.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GAQKdBfZxbnPagQyidFk6Y