Fix source gates and Make cleanup prerequisites - #1
Merged
Conversation
Three source gates failed on HEAD for unrelated reasons. Makefile: the build-input prerequisites (fontstash header, system jpeg/ogg/vorbis, cross compiler) were evaluated at parse time for every goal, so `make clean` failed on a fresh clone that had not downloaded the Meson subprojects or installed a toolchain. That contradicts the Makefile's own goal split, which already defers the architecture error for cleanup so it stays usable from any host. Gate them on a new FNQL_REQUIRE_BUILD_INPUTS derived from that same split. Every output-producing goal still fails exactly as before; the x86-only constraint is unchanged. tests/x86_build_constraints_tests.py: two probes evaluate an accepted x86 configuration all the way through toolchain detection, which needs a Make-visible 32-bit x86 compiler that not every host has. Skip those two when the host cannot configure an x86 build at all, and keep the source assertions and the rejection probes running unconditionally. tests/ql_font_source_tests.py: the supersampling work rewrote the native DrawScaledText traps to cross the framebuffer scale boundary, so the gate still asserted the old call shape. Assert the new one, and prove more than before: limit is forwarded verbatim, the caller's maxX is scaled into renderer pixels on the way in and back to retail pixels on the way out, and a null maxX still reaches the renderer as a null pointer. .vscode/launch.json: the RTX profile was repointed from meson\build\win32-rtx\ to meson\build\win32\ as an unrelated drive-by. It had targeted win32-rtx since it was introduced, and that is where the "meson: build RTX (Steam)" task builds. Restore it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three source gates failed on
mainat 6ecf029 for three unrelated reasons. Full suite is now clean:python -m pytest tests/ -q --ignore=tests/glx→ 942 passed, 8 skipped, 24673 subtests passed.What changed
Makefile— cleanup goals no longer demand build inputsThe build-input prerequisites (fontstash header, system jpeg/ogg/vorbis, cross compiler) were
$(error)calls evaluated at parse time for every goal, somake cleanfailed on a fresh clone that had not runmeson subprojects downloador installed a toolchain.That contradicts the Makefile's own design. The goal split at the top already defers the architecture error for cleanup, with the comment "Cleanup does not emit binaries, so it remains usable from any host." The prerequisite errors were bypassing that. They are now gated on a new
FNQL_REQUIRE_BUILD_INPUTS, derived from the same split that drivesFNQL_ENFORCE_X86.The x86-only constraint is unchanged. Verified directly:
make -n clean ARCH=x86_64 FNQL_ENFORCE_X86=make -n clean ARCH=x86(no toolchain)make -n release ARCH=x86_64 FNQL_ENFORCE_X86=make -n release ARCH=x86_64 MAKECMDGOALS=cleanmake -n release ARCH=x86tests/x86_build_constraints_tests.py— undeclared host prerequisiteAll six enforcement strings already passed; the enforcement had not regressed. The failure was in the subprocess half: two probes (
default_goal,flag_probe) evaluate an accepted x86 configuration all the way through toolchain detection, which needs a Make-visible 32-bit x86 compiler. A host without one cannot exercise that path at all, and failed with a toolchain error that read like a policy regression.Those two are now skipped when the host cannot configure an x86 build, behind an explicit probe whose skip message quotes the real blocker. The source assertions and the rejection probes (non-x86 build refused, disguised
MAKECMDGOALSrefused) still run unconditionally on every host — those fire before toolchain detection, so they need nothing installed.tests/ql_font_source_tests.py— gate drifted behind the supersampling work6ecf029 rewrote
QL_CG_trap_DrawScaledTextandQL_UI_trap_DrawScaledTextto cross the framebuffer scale boundary, but the gate still asserted the oldscale, limit, maxXcall shape.The replacement asserts the new shape and proves strictly more than the old one did, which only ever pinned argument order:
limitis forwarded verbatim — it counts characters, not pixels, so it must not be scaledmaxXis scaled into renderer pixels on the way inmaxXstill reaches the renderer as a null pointer.vscode/launch.json— wrong source, restored6ecf029 repointed the RTX debug profile from
meson\build\win32-rtx\tomeson\build\win32\. Its commit message does not mention the change, and the profile had targetedwin32-rtxsince it was introduced in 3a6bd1e — which is where themeson: build RTX (Steam)task intasks.jsonbuilds. The gate was right; restored to the pre-6ecf029 blob exactly.Reviewer notes
FNQL_REQUIRE_BUILD_INPUTSgating is safe for cleanup goals: no parse-time$(shell ...)in the Makefile invokes$(CC), so leavingCC/CXXempty during cleanup does not cascade. Nothing intests/ordocs/asserted on the gated error strings..gitignoreignoressubprojects/*and the downloaded subprojects only exist in the main checkout.🤖 Generated with Claude Code