Tres que había clasificado como decisión legal y no lo eran. Las dos causas son distintas y las dos me las estaba perdiendo por mirar sólo el árbol: **ffmpeg → LGPL-2.1-or-later.** Su raíz trae cuatro COPYING.* y por eso el detector se planta, con razón: el árbol solo no puede decidir. Pero el `LICENSE.md` del propio ffmpeg explica la regla —«In combination the LGPL v2.1+ applies to FFmpeg» y «None of these parts are used by default, you have to explicitly pass `--enable-gpl`… In this case, FFmpeg's license changes to GPL v2+»— y la respuesta la da NUESTRA receta: no pasa `--enable-gpl` ni `--enable-version3`, y encima va con `--disable-autodetect`. O sea que la licencia sale de cruzar el árbol con los flags, no de elegir uno de los cuatro ficheros. **llvm18 y clang18 → Apache-2.0 WITH LLVM-exception.** Acá el detector veía «tres licencias distintas» en un solo `LICENSE.TXT` y se plantaba, pero el fichero ABRE diciendo «The LLVM Project is under the Apache License v2.0 with LLVM Exceptions»: lo demás es la sección legada. La regla de «varias licencias ⇒ decide un humano» es correcta como default y aquí el humano sólo tuvo que leer la primera línea. `licenses/` pasa de 48 a 49 textos: `LLVM-exception` hacía falta para poder declararla, que es el lazo de siempre —no se declara lo que no se puede entregar—. El único sin texto canónico sigue siendo `LicenseRef-qorpa-ajena-no-enumerable`, que es identificador nuestro y SPDX no publica. 97% (1135/1165); la cola baja de 27 a 24. Los 3 ArtifactHash, idénticos.
54 lines
2.1 KiB
TOML
54 lines
2.1 KiB
TOML
# 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"
|
|
license = "Apache-2.0 WITH LLVM-exception"
|
|
|
|
[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 \
|
|
-DCMAKE_CXX_FLAGS="-include cstdint" \
|
|
-DCMAKE_C_FLAGS="-include stdint.h" \
|
|
-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"]
|