gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1471Shell 173Rust 105Markdown 943545 Definiciones

⎇ 2f9253886ff843d9701ac61a9c3ff4f2cd43ef33 recipes/json-glib.toml TOML · 70 líneas · 4.8 KB Historia crudo

takana etapa 5a: los comentarios de las 741 recetas e852f4849 · Sergio ·

1# json-glib 1.10.8 — PROMOVIDA AL CORPUS el 2026-09-03, para `zathura`.
2#
3# ══ POR QUÉ SUBE, Y POR QUÉ SALIÓ GRATIS ═══════════════════════════════════════════════════════
4# `zathura` va al corpus para poder estar en las cuatro imágenes, y pide `json-glib-1.0`. Existían
5# DOS copias y ninguna en el corpus: `incoming-cosmic` e `incoming-gnome`. Una receta del corpus no
6# alcanza una cola hermana ⇒ había que subir una.
7#
8# Ganó la de COSMIC, y no por gusto: sus `[deps]` (glib, libffi, pcre2, zlib) resuelven ENTERAS
9# contra el catálogo padre, así que **sella el MISMO ArtifactHash desde el corpus que desde la cola**
10# —`b3:62011e81`, medido con `takana hash` antes de mover nada— o sea cache hit y UN solo artefacto,
11# no dos peleando por la misma ruta. La de GNOME no podía: arrastra `gobject-introspection`,
12# `glib-introspected`, `gi-foreign-girs` y `py3-setuptools`, que son maquinaria de GNOME.
13#
14# **La copia de `incoming-cosmic` se jubiló** en el mismo movimiento, verificado como manda el
15# repo: su único consumidor (`xdg-desktop-portal`) hashea `b3:749fbffe` ANTES y DESPUÉS de quitarla
16# ⇒ cero rebuilds. La de `incoming-gnome` SE QUEDA: es una variante deliberada (con introspección),
17# artefacto distinto, y jubilarla sí rompería a quien la usa.
18#
19# Lo de abajo es el comentario original de la receta de COSMIC, que sigue valiendo tal cual.
20#
21# json-glib 1.10.8 — segundo eslabón de LA CADENA DEL PORTAL. `xdg-desktop-portal` lo pide con
22# `dependency('json-glib-1.0')` incondicional (lo usa para el índice de portales y la configuración).
23#
24# ── POR QUÉ UNA RECETA PROPIA Y NO LA DE `incoming-gnome` ────────────────────────────────────────
25# Existe `recipes/incoming-gnome/json-glib.toml`, pero **no se puede reusar**, y el motivo no es
26# burocrático: aquella receta está en la ISLA DINÁMICA de GNOME —`-Dintrospection=enabled`,
27# `default_library=both`— porque el `.gir` de json-glib es entrada del `.gir` de
28# evolution-data-server, que gnome-shell lee desde JS. Sus `[deps]` arrastran
29# `gobject-introspection`, `glib-introspected`, `gi-foreign-girs` y `py3-setuptools`.
30#
31# Acá nadie introspecta nada: el portal es C que enlaza y ya. Traer esa receta metería toda la
32# maquinaria de introspección de GNOME en la clausura de COSMIC para no usar ni un `.typelib`. Ésta
33# es la misma librería con la introspección APAGADA, que es lo que este consumidor necesita.
34#
35# (El método para saber si una receta se puede compartir es `takana hash` desde las dos colas — así
36# se comprobó que `glib-shared` y `pcre2-shared` sí resuelven idéntico. Acá ni hace falta: las
37# `[deps]` son visiblemente distintas, así que el hash no podía coincidir.)
38#
39# `nls=disabled` por lo mismo que en la cola de GNOME: las traducciones piden un `msgfmt` completo y
40# el corpus sólo tiene gettext-tiny.
41name    = "json-glib"
42version = "1.10.8"
43license = "LGPL-2.1-or-later"
44
45[source]
46tarball = "https://download.gnome.org/sources/json-glib/1.10/json-glib-1.10.8.tar.xz"
47sha256  = "55c5c141a564245b8f8fbe7698663c87a45a7333c2a2c56f06f811ab73b212dd"
48
49[build]
50compiler = "zig-cc"
51target   = "x86_64-linux-musl"
52link     = "static"
53
54# ⚠ `--prefer-static` NO es redundante con `-Ddefault_library=static` (2026-09-08). El segundo
55# gobierna cómo se construye la librería PROPIA —y funcionaba: el artefacto trae `libjson-glib-1.0.a`—
56# pero no dice nada de con qué se enlazan los EJECUTABLES. Sin `--prefer-static`, `json-glib-format` y
57# `json-glib-validate` salían dinámicos contra `libffi.so.8`, `libz.so.1` y `libc.so`; ese `libc.so`
58# es la musl de zig, que en el host son 255 bytes de linker script ⇒ **binarios que no corren fuera
59# del sandbox**, en una receta que declara `link = "static"`. Lo cazó `scripts/static-audit.sh`, que
60# existe justamente para que la declaración y el binario no se separen. Mismo remedio que `appstream`.
61[build.phases]
62configure = "PKG_CONFIG_PATH=/usr/lib/pkgconfig meson setup output --prefix=/usr --buildtype=release --wrap-mode=nodownload --prefer-static -Ddefault_library=static -Dintrospection=disabled -Ddocumentation=disabled -Dman=false -Dtests=false -Dconformance=false -Dnls=disabled -Dinstalled_tests=false"
63compile   = "ninja -C output"
64install   = "DESTDIR=/out meson install -C output --no-rebuild"
65
66[deps]
67# La glib ESTÁTICA del corpus, que es lo que un consumidor en C puede usar sin problema — el muro de
68# la glib dinámica es de los crates `*-sys` de Rust, no de un `.c`. `libffi`/`pcre2`/`zlib` son la
69# clausura de pkg-config que declara el `.pc` de glib en `Requires.private`.
70build = ["meson", "samurai", "python3", "pkgconf", "glib", "libffi", "pcre2", "zlib"]