json-glib: --prefer-static — declaraba static y sus binarios no corrían fuera del sandbox

'-Ddefault_library=static' gobierna cómo se construye la librería PROPIA, y eso funcionaba: el
artefacto trae libjson-glib-1.0.a. Pero no dice nada de con qué se enlazan los EJECUTABLES, así
que json-glib-format y json-glib-validate salían dinámicos contra libffi.so.8, libz.so.1 y
libc.so — y ese libc.so es la musl de zig, 255 bytes de linker script en el host. O sea binarios
que NO CORREN fuera del sandbox, en una receta que declara link=static. Mismo remedio que
appstream, que ya llevaba --prefer-static.

Medido antes y después:
  json-glib-format    dinámico, 3 NEEDED  →  ESTÁTICO, 0 NEEDED
  json-glib-validate  dinámico, 3 NEEDED  →  ESTÁTICO, 0 NEEDED
  libjson-glib-1.0.a  igual (los consumidores no cambian de forma)

Y la prueba del consumidor, que es la que vale: json-glib-format sobre un JSON real corre EN EL
HOST y devuelve {"a":1}. (El ruido de libgvfsdbus.so en stderr es glib intentando dlopen
módulos GIO desde un binario estático: inocuo, la salida sale bien.)

Cascada reconstruida en orden de onda, con el cierre transitivo sacado de yupana y no de un grep
—que no veía a zathura ni a zathura-pdf-poppler por tener el array de deps multilínea, y la regla
del repo es justamente ésa—: zathura, incoming-cosmic/xdg-desktop-portal, zathura-pdf-poppler.

Verificado después, no antes:
  static-audit   MIENTEN 0 de 690    toda receta que declara link=static lo cumple
  los 5 grafos   deuda 0
  repro          REPRODUCEN 3 · DERIVA 0 · NO-DETERMINISMO 0

⚠ incoming-gnome/json-glib NO se toca: declara link="dynamic" a propósito porque el shell de
GNOME dlopea .so reales para introspección. No miente — es honesta, y su radio de 10 no se paga.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014QPJteswQvP1L7zSBrQQe2
This commit is contained in:
Sergio
2026-09-08 19:26:12 +00:00
co-authored by Claude Opus 5
parent 381780aab4
commit 7892d50842
7 changed files with 25 additions and 21 deletions
+3 -3
View File
@@ -7813,7 +7813,7 @@
"cls": "gui",
"queue": "corpus",
"foreign": false,
"hash": "b3:62011e81feaa393ded214a5d5ee1533a72093e1d833acb4debf3c9fe305e5335",
"hash": "b3:e346cb599d070d407a853725cec97e6cd1b0a0a647b6767612093120050a5fa7",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
@@ -16975,7 +16975,7 @@
"cls": "c",
"queue": "corpus",
"foreign": false,
"hash": "b3:9c5eac9263563cbf359ba7c0e6bb6346747a46a6172baa3de8842df6f6ada829",
"hash": "b3:685efcac30d6821ac9ac0a0f492815b2a469c3360bb3a3c1a6637b3258193dd5",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,
@@ -17017,7 +17017,7 @@
"cls": "c",
"queue": "corpus",
"foreign": false,
"hash": "b3:ef4062c5a1a5f9b2c8190b4d7d5576afa2a7485f3c7329366dd73d3360d88231",
"hash": "b3:04c8b7bac22a303d7e4edaebcf91833277e52a2fdcf0a741d165176c9b49afd8",
"state": "sealed",
"blocked_by": [],
"unblocks": 0,