fix(packaging): check out the WASI sysroot's LLVM tree from git
All checks were successful
Flatpak / flatpak (push) Successful in 19m22s

The previous commit made the LLVM tree inside the wasi-sdk checkout a
git repository with `git init`, so that wasi-sdk's patch step would
apply. That was half the fix: wasi-sdk also runs `git rev-parse HEAD`
in that tree to write the sysroot's VERSION file, which on an empty
repository raises a traceback during configure and leaves VERSION
without its llvm lines. The build went on regardless, so the suite
passed and the published beta carries the truncated file.

Fetching the tree as a git source pinned to the release tag gives
wasi-sdk what it has upstream, a submodule checkout at a commit, and
removes the shell step instead of stacking a second workaround on it.
The llvm module keeps the release tarball: it is the same commit, and a
tarball is the cheaper download for a tree that is only compiled.
flatpak-builder keeps a mirror of the clone in its state directory, so
the fetch costs the cold run about 300 MB once.

Verified locally: no traceback, VERSION lists llvm 85ac56026243 and
llvm-version 23.1.2, the eight patch steps apply, the suite passes in
the sandbox and a wasm32-wasip1 program runs under the bundled wasmtime.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Jorijn van der Graaf 2026-10-03 19:04:47 +02:00
commit 6e9eedfd21
Signed by: jorijnvdgraaf
GPG key ID: 2937E59CDCC1BCFB

View file

@ -113,7 +113,7 @@ modules:
# wasi-sdk's sysroot-only mode, driven by the clang built above: # wasi-sdk's sysroot-only mode, driven by the clang built above:
# wasi-libc, compiler-rt builtins (installed into our clang's resource # wasi-libc, compiler-rt builtins (installed into our clang's resource
# dir, where the wasm32 driver looks for them) and libc++ for wasip1 and # dir, where the wasm32 driver looks for them) and libc++ for wasip1 and
# wasip1-threads. The llvm-project tree is the same tarball as above so # wasip1-threads. The llvm-project tree is the same release as above so
# the wasm libc++ matches the native one. # the wasm libc++ matches the native one.
buildsystem: cmake-ninja buildsystem: cmake-ninja
builddir: true builddir: true
@ -154,22 +154,20 @@ modules:
url: https://github.com/WebAssembly/wasi-libc.git url: https://github.com/WebAssembly/wasi-libc.git
commit: 2e6fb9d8ee0cdf9e431fbcabe8af3115de000a13 commit: 2e6fb9d8ee0cdf9e431fbcabe8af3115de000a13
dest: src/wasi-libc dest: src/wasi-libc
- type: archive # A git checkout, where the llvm module above unpacks the release
url: https://github.com/llvm/llvm-project/releases/download/llvmorg-23.1.2/llvm-project-23.1.2.src.tar.xz # tarball of the same tag: wasi-sdk treats src/llvm-project as the
sha256: c98bbef08a2b4c2613cd50e9aa9ae7b69b1fe6c16b2c40373bc0ab6116fdf78a # submodule it is upstream. It patches the tree with `git apply` before
dest: src/llvm-project # building libc++, and records `git rev-parse HEAD` in the sysroot's
# wasi-sdk patches its LLVM tree before building libc++ (`git apply` in # VERSION file. Unpacked from a tarball the directory is a plain
# src/llvm-project), and upstream that directory is a submodule, a
# repository of its own. Unpacked from a tarball it is a plain
# subdirectory of the wasi-sdk checkout, where git treats the patched # subdirectory of the wasi-sdk checkout, where git treats the patched
# paths as outside the current directory, skips every one of them and # paths as outside the current directory, skips every one of them and
# exits 0. LLVM 22 happened to build without the patches; LLVM 23's # exits 0. LLVM 22 happened to build without the patches; LLVM 23's
# libc++ does not compile for WASI without one of them. Making the tree # libc++ does not compile for WASI without one of them.
# a repository lets wasi-sdk's own patch step do what it does upstream, - type: git
# with whatever patch list the pinned tag carries. url: https://github.com/llvm/llvm-project.git
- type: shell tag: llvmorg-23.1.2
commands: commit: 85ac560262434c9ccfc0c183ec22d4138ed647fb
- git init -q src/llvm-project dest: src/llvm-project
- type: file - type: file
path: wasi-host-toolchain.cmake path: wasi-host-toolchain.cmake