From 6edd86b1606a55ce646c71c3be31650ebf5677fd Mon Sep 17 00:00:00 2001 From: meh Date: Wed, 9 Sep 2026 17:13:05 +0700 Subject: [PATCH] fix(qa): give the Linux runner fontconfig With Tauri out of the headless graph the build gets past glib and stops at The system library `fontconfig` required by crate `yeslogic-fontconfig-sys` was not found. `blitz-dom`'s `system-fonts` is deliberate and stays. The note in apps/chuzz/Cargo.toml says why: without it parley finds no face, every line shapes to zero height, and a capture comes out blank while every assertion about the tree still passes. A silently empty screenshot is worse than a build that fails, so the runner gets the library rather than the browser losing its fonts. Only fontconfig, and only on Linux. The window stack is gone, and of what is left, `aws-lc-sys` and `zstd-sys` vendor their C, `wayland-sys` dlopens, `renderdoc-sys` is header-only, and `dirs-sys` and `linux-raw-sys` are Rust. That list is from `cargo tree --target x86_64-unknown-linux-gnu` on the headless feature set, so it is what the runner actually resolves rather than what a macOS build happens to need. No version bump: this file is consumed at `@master` by every site's workflow and ships nothing. --- .github/actions/headless-host/action.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/actions/headless-host/action.yml b/.github/actions/headless-host/action.yml index 887d3e1..17c36c2 100644 --- a/.github/actions/headless-host/action.yml +++ b/.github/actions/headless-host/action.yml @@ -49,6 +49,23 @@ runs: # as the empty string, still gets a token that can read a public repo. token: ${{ inputs.token || github.token }} + # Text shaping needs a font, and on Linux parley finds one through + # fontconfig. `blitz-dom`'s `system-fonts` is deliberate here: without it + # parley finds no face, every line shapes to zero height, and a capture + # comes out blank while every assertion about the tree still passes. A + # silently empty screenshot is worse than a failed build, so the runner + # gets the library rather than the browser losing its fonts. + # + # Only fontconfig. The window stack is gone from this graph (see the `gui` + # feature in chuzz), and the remaining `-sys` crates either vendor their C + # or dlopen at runtime. + - name: Fontconfig, on Linux only + if: runner.os == 'Linux' + shell: bash + run: | + sudo apt-get update -qq + sudo apt-get install -y --no-install-recommends libfontconfig1-dev + - name: Install Rust uses: dtolnay/rust-toolchain@stable