CI: fix first-build header ordering and stage libzstd.a for Android - #240
Merged
Conversation
Failure 1 (flutter-builds Linux/Windows): the plugin CMake configure runs before the in-build hook step extracts the Filament headers from the R2 artifact and writes generated_headers.cmake, so DART_PKG_HEADERS is empty and the plugin compile fails on bluevk/BlueVK.h. Fire the build hooks out of band first by running the thermion_flutter unit tests before the Windows/Linux example builds (macOS already did this), so the header dir and generated_headers.cmake exist before configure. Also register generated_headers.cmake as a configure dependency in the Linux plugin CMakeLists (Windows already had it) and install the EGL/libc++ dev packages the hook link and plugin link stage need on Linux. Failure 2 (Android link): build_android.sh skipped *zstd* libs when copying Filament archives, so the R2 artifact ships without libzstd.a and thermion_dart fails to link with 'unable to find library -lzstd' (libfilamat.a has undefined zstd symbols as of Filament 1.75.0 — see zip_android.sh). Copy all archives including libzstd.a in both the release and debug blocks. Co-Authored-By: Claude <noreply@anthropic.com>
The Ninja generator rejects the build: 'generated_headers.cmake is defined as an output multiple times' — flutter's linux configure processes the plugin scope in a way that registers the file twice, so build.ninja becomes invalid and the configure fails. The out-of-band hook priming step in run-flutter-builds.yml is the actual ordering fix; the Windows CMakeLists keeps the property (VS generator, verified green). Co-Authored-By: Claude <noreply@anthropic.com>
nmfisher
force-pushed
the
asb/fix-ci-builds
branch
from
August 15, 2026 04:56
5b198f9 to
c717a0d
Compare
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.
Fixes two CI failures on
filament-v1.75.0.Failure 1 — flutter-builds Linux/Windows:
bluevk/BlueVK.hnot foundThe plugin CMake configure runs before the in-build hook step that extracts the Filament headers from the R2 artifact and writes
.dart_tool/generated_headers.cmake. On a fresh checkout the firstflutter build windows/flutter build linuxtherefore configures with an emptyDART_PKG_HEADERSand the plugin compile fails onbluevk/BlueVK.h(ninja even reports "File modified during build" because the hook writes the file mid-build).Fix: fire the build hooks out of band first by running the
thermion_flutterunit tests before the Windows/Linux example builds — the macOS job already did this. The artifact header dir andgenerated_headers.cmakethen exist before configure. Also:generated_headers.cmakeas a configure dependency in the Linux plugin CMakeLists (Windows already had it), so cmake auto-reconfigures once the hook writes itlibegl1/libegl1-mesa-dev/libc++-dev/libc++abi-devto the Linux deps (same setrun-dart-tests.ymlinstalls) for the hook link and the previously unreached plugin link stage (-l:libc++.a,-lEGL)Failure 2 — Android link:
unable to find library -lzstdscripts/build_android.shskipped*zstd*archives when copying Filament libs, so the R2 android artifact ships withoutlibzstd.a, whilethermion_dartlinks-lzstdexplicitly (libfilamat.ahas undefined zstd symbols as of Filament 1.75.0 — see the note inzip_android.sh). Removed the skip in both the release and debug copy blocks solibzstd.ais staged.The Build Filament workflow is triggered on this branch (android only, upload to R2) to rebuild the R2 android artifact with
libzstd.aincluded.🤖 Generated with Claude Code
Verified status (run 31863717801)
Both remaining failures are unrelated to this PR's code changes:
unable to find library -lzstd. This uses the old R2 android artifact, which predates thelibzstd.astaging fix here. The "Build Filament" rebuild (run 31860021416) is currently running and will publish a new R2 android artifact that includeslibzstd.a; macOS should pass once it completes and is re-run.df0389d4onfilament-v1.75.0— output/golden sets don't match. Will be resolved by rebasing onfilament-v1.75.0, not by changes in this PR.