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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user