mesa: receta llvm18 + mesa-llvmpipe para el escritorio KDE en VM

llvmpipe necesita libLLVM (softpipe no bindea el GBM/EGL que kwin exige). El LLVM 22 del
sandbox no compila con mesa 24.0.9 ⇒ sellamos LLVM 18.1.8 desde fuente (rango soportado),
patrón gcc-de-gueto + static-libstdc++. mesa-llvmpipe = mesa-swrast con -Dllvm=enabled.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-19 15:00:48 -04:00
co-authored by Claude Opus 4.8
parent dafd97be79
commit ebb3fcdb0e
2 changed files with 79 additions and 0 deletions
+50
View File
@@ -0,0 +1,50 @@
# LLVM 18.1.8 — sólo libLLVM (sin clang) para el JIT de llvmpipe (mesa-llvmpipe → escritorio KDE en VM).
# Ver [[kde-metal-qemu-desktop]]: kwin exige GBM/EGL de software COMPLETO; softpipe no bindea, llvmpipe sí,
# y llvmpipe necesita libLLVM. El LLVM 22 del sandbox Alpine NO compila con mesa 24.0.9 (dep detection
# rota) ⇒ sellamos un LLVM 18 (rango que mesa 24.0.9 soporta) desde fuente.
#
# Patrón gcc-de-gueto (idéntico a cmake.toml): C++ a escala ⇒ g++ del sandbox (Alpine, musl) con
# -static-libstdc++ -static-libgcc ⇒ libLLVM.so.18 queda con NEEDED sólo libc.musl (inyectable a la
# imagen QEMU como el loader musl). BUILD_LLVM_DYLIB=ON ⇒ una sola libLLVM.so compartida (lo que
# mesa linkea). Sólo el target X86 (host), sin tests/docs/bindings ⇒ recorta el monstruo.
#
# Worker GORDO (TYPE=ccx63): LLVM es de las compilaciones más pesadas; el link del DYLIB pide MUCHA RAM.
name = "llvm18"
version = "18.1.8"
[source]
tarball = "https://github.com/llvm/llvm-project/releases/download/llvmorg-18.1.8/llvm-project-18.1.8.src.tar.xz"
sha256 = "0b58557a6d32ceee97c8d533a59b9212d87e0fc4d2833924eb6c611247db2f2a"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
[build.phases]
configure = '''
CC=gcc CXX='g++ -static-libstdc++ -static-libgcc' \
cmake -S llvm -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr \
-DLLVM_TARGETS_TO_BUILD=X86 \
-DLLVM_BUILD_LLVM_DYLIB=ON \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_ENABLE_PROJECTS="" \
-DLLVM_ENABLE_TERMINFO=OFF \
-DLLVM_ENABLE_ZLIB=OFF \
-DLLVM_ENABLE_ZSTD=OFF \
-DLLVM_ENABLE_LIBXML2=OFF \
-DLLVM_ENABLE_LIBEDIT=OFF \
-DLLVM_ENABLE_BINDINGS=OFF \
-DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_INCLUDE_BENCHMARKS=OFF \
-DLLVM_INCLUDE_DOCS=OFF
'''
compile = "ninja -C build"
install = "DESTDIR=/out ninja -C build install"
[deps]
build = ["cmake", "samurai", "python3", "pkgconf"]