recetas: girara, xxhash y json-glib al corpus — la cadena de zathura, medida
⚠ CORRIGE UNA CREENCIA DEL REPO: zathura NO está bloqueada por GTK3. Upstream VACIÓ girara — en 2026.07.18 su árbol son siete .c (datastructures, input-history, log, template, utils) y su meson.build no menciona GTK ni una vez. Toda la UI se mudó adentro de zathura, que hoy pide GTK4 >= 4.12, y gtk4 4.18.6 está en el corpus. El plan de apps daba a zathura por «verificar si su cadena es GTK4 y no GTK3»: lo es. Las tres piezas que faltaban, medidas con scripts/provee.py --desde corpus: - girara: sella al primer intento; sus tres deps (glib/gobject/gio) salen del mismo artefacto glib. -Ddocs=disabled porque ese target es doxygen y produce HTML de API. - xxhash 0.8.3 (zathura lo usa para la caché de páginas). DISPATCH=0 no es preferencia, el build se cae sin eso: Makefile:58-62 hace `$(CC) -dumpmachine | grep x86_64` y enciende DISPATCH solo por detección de arquitectura — una perilla auto que hace depender el artefacto de dónde se construyó. Con ella, xxh_x86dispatch.c muere porque pide AVX-512 con -mavx512f a secas y el clang de zig ya exige además -mevex512 («AVX vector argument of type __m512i without evex512 enabled changes the ABI»). No se arregla subiendo flags: esa variante sólo la usa el despacho en runtime, que es justo lo que no queremos. Apaga las dos cosas de una. - json-glib PROMOVIDA al corpus, y salió GRATIS por la misma razón que pipewire: la variante de COSMIC resuelve sus deps enteras contra el catálogo padre ⇒ mismo ArtifactHash desde las dos partes (b3:62011e81, medido antes de mover nada). La de GNOME no podía: arrastra gobject-introspection, glib-introspected, gi-foreign-girs y py3-setuptools. La copia de incoming-cosmic se jubila, verificado como manda el repo: su único consumidor (xdg-desktop-portal) hashea b3:749fbffe ANTES y DESPUÉS ⇒ cero rebuilds. La de incoming-gnome SE QUEDA: variante deliberada, artefacto distinto. Falta todavía el backend de PDF, que es el hueco real: incoming-kde/poppler va con -DENABLE_GLIB=OFF ⇒ publica libpoppler.so pero NO poppler-glib, y encima sólo se alcanza desde su cola. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XB2iEmxeLZgzqNfhWChrLo
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
# girara 2026.07.18 — utilidades comunes de zathura. **YA NO ES UN TOOLKIT.**
|
||||
#
|
||||
# ══ LO QUE HAY QUE SABER ANTES DE LEER NADA MÁS ════════════════════════════════════════════════
|
||||
# La memoria del repo tenía a girara anotada como muro de GTK3, y el plan de apps daba a zathura por
|
||||
# bloqueada por eso. **Está desactualizado y hay que decirlo fuerte**: upstream VACIÓ girara. En
|
||||
# 2026.07.18 el árbol `girara/` son siete `.c` —datastructures, input-history, log, template,
|
||||
# utils— y el `meson.build` no menciona GTK ni una vez. Toda la UI (sesión, pestañas, statusbar,
|
||||
# completado) se mudó adentro de zathura, que hoy pide **GTK4 >= 4.12**, y GTK4 sí está en el corpus.
|
||||
# O sea: el muro de GTK3 que bloqueaba a zathura NO EXISTE. Medido, no recordado.
|
||||
#
|
||||
# Sus tres deps son glib, gobject y gio, las tres del mismo artefacto `glib` del corpus.
|
||||
#
|
||||
# `-Ddocs=disabled` porque ese target es doxygen y lo que produce es HTML de API, no algo que vaya
|
||||
# a una imagen. Los tests se compilan igual (su `meson.build` no está detrás de una opción) pero no
|
||||
# se instalan; no vale la pena parchear el árbol para ahorrar dos ejecutables que no se sellan.
|
||||
#
|
||||
# Fuente por commit git (ADR 0006): `2026.07.18` es un objeto TAG ⇒ éste es su commit pelado.
|
||||
name = "girara"
|
||||
version = "2026.07.18"
|
||||
license = "Zlib"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/pwmt/girara.git"
|
||||
commit = "c5faf7f92442804e3e7eabebc1ed82e0d9d9d6a8"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
configure = "PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release -Ddefault_library=static -Ddocs=disabled"
|
||||
compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
|
||||
install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild"
|
||||
|
||||
# `.pc Requires` → `[deps].build`: glib-2.0 arrastra pcre2 y libffi, y gio pide además zlib.
|
||||
[deps]
|
||||
build = [
|
||||
"meson", "samurai", "python3", "pkgconf", "linux-headers",
|
||||
"glib", "pcre2", "libffi", "zlib",
|
||||
]
|
||||
@@ -1,3 +1,23 @@
|
||||
# json-glib 1.10.8 — PROMOVIDA AL CORPUS el 2026-09-03, para `zathura`.
|
||||
#
|
||||
# ══ POR QUÉ SUBE, Y POR QUÉ SALIÓ GRATIS ═══════════════════════════════════════════════════════
|
||||
# `zathura` va al corpus para poder estar en las cuatro imágenes, y pide `json-glib-1.0`. Existían
|
||||
# DOS copias y ninguna en el corpus: `incoming-cosmic` e `incoming-gnome`. Una receta del corpus no
|
||||
# alcanza una cola hermana ⇒ había que subir una.
|
||||
#
|
||||
# Ganó la de COSMIC, y no por gusto: sus `[deps]` (glib, libffi, pcre2, zlib) resuelven ENTERAS
|
||||
# contra el catálogo padre, así que **sella el MISMO ArtifactHash desde el corpus que desde la cola**
|
||||
# —`b3:62011e81`, medido con `hammer hash` antes de mover nada— o sea cache hit y UN solo artefacto,
|
||||
# no dos peleando por la misma ruta. La de GNOME no podía: arrastra `gobject-introspection`,
|
||||
# `glib-introspected`, `gi-foreign-girs` y `py3-setuptools`, que son maquinaria de GNOME.
|
||||
#
|
||||
# **La copia de `incoming-cosmic` se jubiló** en el mismo movimiento, verificado como manda el
|
||||
# repo: su único consumidor (`xdg-desktop-portal`) hashea `b3:749fbffe` ANTES y DESPUÉS de quitarla
|
||||
# ⇒ cero rebuilds. La de `incoming-gnome` SE QUEDA: es una variante deliberada (con introspección),
|
||||
# artefacto distinto, y jubilarla sí rompería a quien la usa.
|
||||
#
|
||||
# Lo de abajo es el comentario original de la receta de COSMIC, que sigue valiendo tal cual.
|
||||
#
|
||||
# json-glib 1.10.8 — segundo eslabón de LA CADENA DEL PORTAL. `xdg-desktop-portal` lo pide con
|
||||
# `dependency('json-glib-1.0')` incondicional (lo usa para el índice de portales y la configuración).
|
||||
#
|
||||
@@ -0,0 +1,48 @@
|
||||
# xxHash 0.8.3 — hash no criptográfico extremadamente rápido. Entra como dep de `zathura`, que lo
|
||||
# usa para la caché de páginas renderizadas (`dependency('libxxhash')`).
|
||||
#
|
||||
# Un solo `.c`, Makefile con `DESTDIR`/`PREFIX` de manual y un `libxxhash.pc.in` que el propio
|
||||
# Makefile instancia. Pero SÍ trae una perilla que mira la máquina, y no está donde uno la buscaría:
|
||||
#
|
||||
# ══ `DISPATCH=0` — Y NO ES UNA PREFERENCIA, EL BUILD SE CAE SIN ESTO ═══════════════════════════
|
||||
# `Makefile:58-62` hace `$(CC) -dumpmachine | grep x86_64` y, si acierta, pone `DISPATCH ?= 1`. O
|
||||
# sea que el despacho vectorial en runtime **se enciende solo** por detección de arquitectura: es
|
||||
# exactamente la clase de perilla `auto` que hace depender el artefacto de dónde se construyó.
|
||||
# Con ella encendida se compila `xxh_x86dispatch.c`, y ahí muere:
|
||||
#
|
||||
# error: always_inline function '_mm512_add_epi64' requires target feature 'evex512', but would
|
||||
# be inlined into 'XXH3_accumulate_512_avx512' compiled without support for 'evex512'
|
||||
# error: AVX vector argument of type '__m512i' without 'evex512' enabled changes the ABI
|
||||
#
|
||||
# El fichero pide AVX-512 con `-mavx512f` a secas, y el clang que trae zig ya exige además
|
||||
# `-mevex512` para los vectores de 512 bits. **No se arregla subiendo flags**: la variante AVX-512
|
||||
# de xxHash sólo la usa el despacho en runtime, y esta distro no quiere un binario que elija
|
||||
# implementación según el `cpuid` del que lo compiló. `DISPATCH=0` apaga las dos cosas de una.
|
||||
# `LIBXXH_DISPATCH` —el equivalente para la `.so`— no tiene default, así que ya venía apagado.
|
||||
#
|
||||
# El target por defecto (`lib xxhsum_and_links`) es justo lo que pide `install`: la `.a`, la `.so`,
|
||||
# el CLI `xxhsum` y sus cuatro symlinks (xxh32sum/xxh64sum/xxh128sum/xxh3sum). Se dejan: son 20 KB y
|
||||
# `xxhsum` es una herramienta de verdad, del mismo tamaño de utilidad que `sha256sum`.
|
||||
#
|
||||
# Fuente por commit git (ADR 0006): `v0.8.3` es un tag LIVIANO ⇒ éste es su commit.
|
||||
name = "xxhash"
|
||||
version = "0.8.3"
|
||||
license = "BSD-2-Clause"
|
||||
|
||||
[source]
|
||||
repo = "https://github.com/Cyan4973/xxHash.git"
|
||||
commit = "e626a72bc2321cd320e953a0ccf1584cad60f363"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "dynamic"
|
||||
flags = []
|
||||
|
||||
[build.phases]
|
||||
configure = "true"
|
||||
compile = "make PREFIX=/usr CC=hammer-zig-cc DISPATCH=0"
|
||||
install = "make install PREFIX=/usr DESTDIR=/out CC=hammer-zig-cc DISPATCH=0"
|
||||
|
||||
[deps]
|
||||
build = ["make", "pkgconf"]
|
||||
Reference in New Issue
Block a user