Repository navigation
Conversation
1bc4c14 added android_console_input.py to the script smoke job, which runs before Meson provisions any subproject. The test required a full SDL3 tree under subprojects/ and raised "SDL3 headers required", failing the smoke job on main and every PR, which skips all platform jobs. When no tree exists, the test now takes the public headers from the pinned SDL3 archive the way sdl3_clipboard_status.py takes its sources: the archive comes from the package cache or an HTTPS download, is checked against the wrap's SHA-256 and size bound, and only include/SDL3/*.h members (bounded in count and size) are written to the test's own temporary directory. An existing tree or --sdl-include is used as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With android_console_input.py passing, the smoke job reached three more
checks that fail on main:
- openxr_lifecycle.py compiled against subprojects/OpenXR-SDK-*/include,
which the smoke job never provisions ("openxr/openxr.h file not found").
Both native-harness checks now take headers through the new
pinned_archive_headers.py: an existing tree as it is, otherwise only
include/<dir>/*.h members of the wrap's pinned archive, from the package
cache or HTTPS, checked against source_hash and bounded in size and count.
Its offline self-test covers extraction, tamper refusal and the
provisioned-tree preference.
- validation_hardening.py: ui_capture_multiplayer_rosters.py and
ui_capture_system_refresh.py were wired nowhere, and ui_player_identity.py
was missing from openq4_validate.py. All three are offline and pass.
- The macOS wording checks still expected sentences that the getting-started
rewrite for Mac Source Ports and the rewritten v0.13.2 notes replaced. The
getting-started checks follow its new wording (same policy: GitHub packages
are an Apple Silicon/arm64 preview, no Intel/universal2 packages, Rosetta
unsupported); the v0.13.2 note restores the canonical bridge and
comparison-only phrases every release note carries.
The full smoke list now passes locally apart from nine native harnesses
that only clang 23 / GCC 16 headers reject (-Wunused-but-set-global, a
missing <cstdint>), which CI's compilers do not.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
main's 8cb58aa already restored the 0.13.2 Metal-bridge wording and the getting-started checks, so both conflicts take main's side.
The macOS runners' Apple libc++ reads <android/api-level.h> when a standard header is included with __ANDROID__ defined, so android_async and android_lifecycle failed to compile there, and android_console_input also lacked <initializer_list>. Each harness now includes its standard headers with __ANDROID__ undefined, as the console harness already did for SDL, and defines it again for the engine code. Checked with clang and LLVM libc++ plus a shim that fails any standard header read under __ANDROID__ (all three failed before, pass after), and with g++/libstdc++ and Windows clang.
|
Thanks, this is the fix every PR has been waiting on. I've pushed two commits to the branch:
I'll merge once this run is green. |
The sanitizer job's core-safety test failed in the clock-wrap case: `now + latency + jitter` overflowed int at INT_MAX. The delay line already compares due times as a wrapping clock, so the sum is now formed as unsigned. The case driver's own `now++` overflowed the same way; it now derives the clock from the elapsed step. The no-jitter mutation control follows the new expression. With ASan+UBSan, main's header reports the overflow and this one passes, and network_impairment_state still sees all six controls fail.
|
Thanks for the merge and the Android-header fix. The smoke job is green, and the platform jobs ran for the first time in days. None of the six red jobs failed a test. All six were cancelled at the 90-minute PR limit:
In the libdecor job, for example, the 408 Python checks ran one after another from 09:02 to 10:18 (76 minutes), and the native tests that follow were cut off. That's the time #191 recovers: its own run took 15–19 minutes for the same checks with 4 jobs. So this run can't go fully green with
Separately, the sanitizer job's 150 minutes from #200 didn't make it to |
Unblocks the Validation Script Smoke job. It currently fails on
main(e.g. c302254b) and on every PR, so all platform jobs are skipped. Fixing the first failure exposed three more behind it. This PR fixes all four.1. Native harnesses need headers the smoke job never downloads
android_console_input.py, added to the smoke list in 1bc4c14, required a full SDL3 tree:RuntimeError: SDL3 headers required.openxr_lifecycle.pycompiled againstsubprojects/OpenXR-SDK-*/include:fatal error: 'openxr/openxr.h' file not found. Onmainthis test was never reached.Both now get headers through a new
tools/tests/pinned_archive_headers.py, which follows the conventionsdl3_clipboard_status.pyuses for its sources:subprojects/packagecacheor an HTTPS download, checks it againstsource_hashand a size bound, and writes onlyinclude/<dir>/*.hmembers (bounded in count and size) into the check's temporary directory. The archive is never unpacked wholesale.--sdl-includestill works.A scan of all 393 smoke checks found no others reading an unprovisioned subproject.
glew,stb_vorbisandopenal-soft-prebuiltare committed to the repo.2.
validation_hardening.py: three checks were never wired inui_capture_multiplayer_rosters.py(1d0cbb8) andui_capture_system_refresh.py(6a4696c) were wired nowhere, andui_player_identity.py(c302254) was missing fromopenq4_validate.py. All three are offline and pass, and they're now wired like their neighbours.3. macOS wording checks after the documentation rewrites
macos_matrix_policy.py,macos_metal_bridge.pyandmacos_native_backend_containment.pystill expected sentences that c5f23a5 (Mac Source Ports credit) and 4054e7a (v0.13.2 notes) replaced. The stated policy hasn't changed:README.htmlchecks are unchanged.Verification (Linux x64)
-Wunused-but-set-globalunder-Werror, and a missing<cstdint>inSystemDisplay.h). CI's compilers don't raise either.sdl3_clipboard_status.pyalready uses in this job.🤖 Generated with Claude Code