# ── ⚠ HAY DOS `gmp` EN EL CORPUS, Y ES A PROPÓSITO (verificado 2026-09-01) ───────────────────── # `incoming-cosmic/gmp.toml` (ésta) y `incoming-kde/gmp.toml` emiten el MISMO nombre de artefacto y # sellan en direcciones distintas. NO es un duplicado rancio que haya que unificar — son dos # variantes deliberadas, y la diferencia está en las dos líneas que importan: # # KDE link=dynamic --enable-shared --enable-cxx ⇒ libgmp.so + libgmpxx.so # COSMIC link=static --disable-shared ⇒ libgmp.a, sin C++ # # Y las dos citan a libqalculate como consumidor con conclusiones opuestas sobre `gmpxx.h`: acá se # apaga a propósito para no arrastrar el runtime de C++; allá se activa porque el libqalculate de # la campaña KDE exige `gmpxx.h`. Las dos están selladas y las dos son correctas para su frente. # # ⚠ LO QUE SÍ CUESTA, Y CUÁNDO. Compartir nombre hace ambigua la clasificación de `store-gc.sh`: un # artefacto rancio de UNA de las dos puede caer como SUPERADO porque la OTRA tiene sellado vigente, # y ahí se perdería el único ejemplar. La condición es precisa: **sólo corre riesgo si el hash # vigente de una de las dos NO está sellado**. Medido el 2026-09-01: las dos selladas ⇒ exposición # CERO. Antes de podar con nombres compartidos, comprobar eso, no el nombre. # # `mpfr` tiene exactamente el mismo par (KDE dynamic / COSMIC static) por la misma razón. # ⇒ Si algún día molesta de verdad, la salida NO es unificar sino renombrar la dinámica a # `gmp-shared`, que es la convención que el corpus ya usa (zlib-shared, cairo-shared…). Cuesta # re-hashear: `yupana radio` da 7 sellados de KDE que caen a deuda (2 si se renombrara ésta). No se hizo por eso. # gmp — aritmética de precisión arbitraria. Entra al corpus por abajo del lanzador: el plugin de la # calculadora de pop-launcher llama al binario `qalc`, `qalc` es libqalculate, y libqalculate corta el # configure con «libgmp not found» si no está. O sea que la cadena de una tecla del escritorio baja # hasta la aritmética de enteros grandes — y ese es justo el tipo de dep que no se ve venir mirando # el paquete de arriba. # # ── `--disable-assembly` NO ES PEREZA ─────────────────────────────────────────────────────────── # GMP trae rutinas en ensamblador por microarquitectura y su `configfsf.guess` elige una mirando la # CPU de QUIEN COMPILA. Eso es exactamente lo que este lab no puede permitir: hornearía la ISA del # laptop en el artefacto y el hash dejaría de significar lo mismo en la granja (el mismo modo de # falla que `-mcpu=baseline` corrige en el wrapper de zig). Con `--disable-assembly` GMP usa su # implementación en C portable: más lenta, y a nadie le importa — acá la usa una calculadora de # escritorio, no un criptosistema. # Además zig/clang no digiere varias de esas rutinas (`.align` y sintaxis de gas antigua), así que # la alternativa realista tampoco era «assembly sí». name = "gmp" version = "6.3.0" # licencia: README del tarball pineado — mismo sha256 que recipes/gmp.toml license = "LGPL-3.0-or-later OR GPL-2.0-or-later" [source] tarball = "https://gmplib.org/download/gmp/gmp-6.3.0.tar.xz" sha256 = "a3c2b80201b89e68616f4ad30bc66aee4927c3ce50e33929ca819d5c43538898" [build] compiler = "zig-cc" target = "x86_64-linux-musl" link = "static" flags = [] [build.phases] # `--enable-cxx` va APAGADO: libqalculate usa la API C de GMP (`__gmpz_init` es lo que su configure # busca), y `libgmpxx` arrastraría el runtime de C++ a un paquete que no lo necesita — justo la deuda # que la campaña «matar gcc» viene pagando en el resto del árbol. configure = ''' ./configure \ --build=$CBUILD --host=$CHOST \ --prefix=/usr \ --disable-shared --enable-static \ --disable-assembly \ --enable-fat=no ''' compile = 'make -j"$(nproc)"' install = 'make DESTDIR=/out install' [deps] build = ["make", "m4"]