pcre2: --disable-jit — el JIT rompía el enlace static-PIE de qtbase (landmine del modelo)
qtbase falló al linkear: ld.lld 'relocation R_X86_64_64 cannot be used against local symbol' en libpcre2-16.a(pcre2_jit_compile.o). El JIT de PCRE2 emite relocaciones absolutas en .rodata (sus tablas de código generado) que son incompatibles con PIE — y TODO binario static musl de hammer se enlaza PIE. No es un problema de Qt: es un landmine para el modelo entero; cualquier binario PIE que linkee pcre2 con JIT lo pisa. Fix raíz: --disable-jit. El regex queda un pelo más lento y la API NO cambia (pcre2_jit_compile devuelve error si no hay JIT, los consumidores lo manejan). Rehashea pcre2 y sus dependientes, pero ya estaban en deuda (lo re-sellé este ciclo con el arreglo static). Destraba qtbase → la raíz del árbol KDE (↑117). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Delta semántico
Ninguna definición cambió: el cambio es de texto, documentación o datos.
1 archivos · +6 −1
- recipes/pcre2.toml +6 −1
diff --git a/recipes/pcre2.toml b/recipes/pcre2.toml
index cf431efd..12d66f85 100644
--- a/recipes/pcre2.toml
+++ b/recipes/pcre2.toml
@@ -32,7 +32,12 @@ compile = '''
--prefix=/usr \
--disable-shared --enable-static \
--enable-pcre2-16 --enable-pcre2-32 \
- --enable-jit \
+ --disable-jit \
+ `# JIT DESACTIVADO (2026-07-17): pcre2_jit_compile.o emite R_X86_64_64 contra símbolos locales en` \
+ `# .rodata (tablas del JIT). Al enlazar libpcre2-16.a en qtbase —PIE, como TODO binario static` \
+ `# musl de hammer— ld.lld lo rechaza ("relocation cannot be used against local symbol"). El JIT es` \
+ `# un landmine para el modelo static-PIE entero, no sólo Qt. Sin JIT el regex es un pelo más lento` \
+ `# y la API no cambia (pcre2_jit_compile devuelve error si no hay JIT). Destraba qtbase → el árbol KDE.` \
--enable-pcre2grep-libz \
--disable-symvers
make LDFLAGS="-all-static -no-pie" -j"$(nproc)"