From 2d2a390bfd0880eea9aca05fe0b30580c8dd06ff Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Sun, 16 Aug 2026 22:54:34 -0700 Subject: [PATCH] Use clang-18 from apt.llvm.org for the wasm build on 22.04 runners clang-15 got past the C23 [[noreturn]] error but still fails compiling sqlite-wasm-rs for wasm32: its stdint.h falls through to host glibc headers (bits/libc-header-start.h not found). clang-18 handles wasm32 as freestanding and compiles it (it is what ubuntu-24.04 uses). 22.04's repos stop at clang-15, so install 18 from apt.llvm.org. Runners stay on 22.04 to keep the glibc floor. --- .github/workflows/release-app.yml | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release-app.yml b/.github/workflows/release-app.yml index 10ddf2cd..c20901b5 100644 --- a/.github/workflows/release-app.yml +++ b/.github/workflows/release-app.yml @@ -102,13 +102,19 @@ jobs: if: matrix.os == 'ubuntu' run: | sudo apt-get update - sudo apt-get install -y cmake ninja-build libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev libnss3 patchelf xdg-utils clang-15 llvm-15 + sudo apt-get install -y cmake ninja-build libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev libnss3 patchelf xdg-utils # crates/yaak-web compiles SQLite to wasm via sqlite-wasm-rs, whose C shim - # uses C23 [[noreturn]]. Ubuntu 22.04's default clang-14 rejects it; clang-15 - # from the same repos accepts it. Only the wasm build uses this compiler, so - # the shipped binary keeps 22.04's glibc floor. - echo "CC_wasm32_unknown_unknown=/usr/bin/clang-15" >> "$GITHUB_ENV" - echo "AR_wasm32_unknown_unknown=/usr/bin/llvm-ar-15" >> "$GITHUB_ENV" + # uses C23 [[noreturn]] and expects a freestanding wasm32 target. Ubuntu + # 22.04 ships only clang <=15: 14 rejects the attribute, and 15 falls + # through to host glibc headers ("bits/libc-header-start.h" not found). + # clang-18 handles it (it is what ubuntu-24.04 uses). Install it from + # apt.llvm.org since 22.04's repos stop at 15. Only the wasm build uses + # this compiler, so the shipped binary keeps 22.04's glibc floor. + wget -qO /tmp/llvm.sh https://apt.llvm.org/llvm.sh + chmod +x /tmp/llvm.sh + sudo /tmp/llvm.sh 18 + echo "CC_wasm32_unknown_unknown=/usr/bin/clang-18" >> "$GITHUB_ENV" + echo "AR_wasm32_unknown_unknown=/usr/bin/llvm-ar-18" >> "$GITHUB_ENV" - name: Install Protoc for plugin-runtime uses: arduino/setup-protoc@v3