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…

pass: quito wl-clipboard de runtime — metía wayland y un binario ROTO en cli

Error mío de ayer, encontrado con `vigia-sonames.py --imagen` y medido antes
de tocar nada.

Declaré `wl-clipboard` como dep de runtime porque `pass -c` llama a `wl-copy`,
que es cierto. Lo que no pensé es que **las deps de runtime se propagan al
cierre de IMAGEN**, y `pass` vive en `cli`:

    wayland ← wl-clipboard ← pass

Resultado medido: 5 nodos y ~3 MB de más en `cli` y `servidor`
(wl-clipboard, wayland, wayland-protocols, libffi) y con ellos un enlace
COLGANTE — el `wayland-scanner` del artefacto de wayland pide `libexpat.so.1`,
que en esos perfiles no existe, así que viajaba un binario que no puede
cargar. Comprobado en los dos sentidos: el cierre de `cli` pasa de 175 nodos
con wayland a 171 sin él, y `pass` sigue dentro.

⚠ Y era incorrecto por el fondo, no sólo por el aviso del vigía: `cli` y
`servidor` NO tienen servidor gráfico, así que `wl-copy` no podría funcionar
ahí ni con la dep puesta. Estaba pagando 3 MB y un binario roto por una
función imposible en esa capa.

⇒ Quien tenga sesión Wayland declara `wl-clipboard` en su perfil
(escritorio-sway ya lo hace). Donde no esté, el resto de `pass` va perfecto y
`-c` muere con el mensaje de upstream, que es lo correcto.

La lección, que vale más que el arreglo: **una dep de runtime no es sólo «lo
que el programa invoca»; es lo que VIAJA en todas las imágenes que lo
declaren.** Antes de poner una, mirar qué arrastra en el perfil más chico que
la va a llevar.

Nota: el aviso que me puso sobre la pista lo daba el vigía SIN la bandera
`--imagen`, que mide el cierre de build y es más ruidoso; con `--imagen`
persistía, y eso fue lo que confirmó que era real y no ruido del instrumento.

478b3bd3e9611c67abb419420bbb3c61215d366a · ruwaq Sergio · (22 h ñawpaq) · tayta badb250f8 · kay commitpi sach'ata qhaway

Semántico sayk'uy

Mana ima sutichaypas t'ikrakurqanchu: qillqalla, yachachiylla utaq willaylla t'ikrakurqan.

2 qillqakuna · +30 −1

diff --git a/docs/state/targets.toml b/docs/state/targets.toml
index 5bf96277..170b6dad 100644
--- a/docs/state/targets.toml
+++ b/docs/state/targets.toml
@@ -383,6 +383,13 @@ paquetes = [
   # ⚠ `pass -c` (copiar al portapapeles) necesita `wl-clipboard`, que hoy sólo declara
   # `escritorio-sway`. En las otras imágenes el resto de `pass` funciona y `-c` muere con un
   # mensaje claro, que es el comportamiento de upstream, no una avería nuestra.
+  #
+  # Y NO se declara como dep de runtime de `pass` a propósito — lo hice y hubo que deshacerlo el
+  # mismo día: las deps de runtime se propagan al cierre de IMAGEN, así que metía
+  # `wayland ← wl-clipboard ← pass` en esta capa, o sea 5 nodos y ~3 MB, **más un binario roto**
+  # (el `wayland-scanner` del artefacto de wayland pide `libexpat.so.1`, que acá no existe; lo
+  # denunció `vigia-sonames.py --imagen`). Y encima para nada: sin servidor gráfico `wl-copy` no
+  # puede funcionar en `cli` ni en `servidor`. ⇒ Lo declara quien tiene sesión Wayland.
   "pass", "qrencode",
   # ── LA DOCUMENTACIÓN DEL SISTEMA (2026-10-21) ────────────────────────────────────────────────
   # `man-pages` son 18 MB y 3.153 páginas, y cierran un hueco que el censo describía MAL. No era
diff --git a/recipes/pass.toml b/recipes/pass.toml
index 7d69eb9e..34b8bbb6 100644
--- a/recipes/pass.toml
+++ b/recipes/pass.toml
@@ -127,4 +127,26 @@ build = ["make", "bash", "gnupg", "tree", "util-linux", "coreutils", "pinentry"]
 # `bash` porque el shebang es bash y no sh; `pinentry` porque sin él gpg no puede pedir la frase de
 # paso en un uso interactivo real.
 runtime = ["bash", "gnupg", "pinentry", "tree", "util-linux", "coreutils", "git",
-           "wl-clipboard", "qrencode"]
+           "qrencode"]
+# ⚠ **`wl-clipboard` NO está acá, y la razón es un error que cometí y medí el mismo día.**
+# Lo declaré como runtime porque `pass -c` llama a `wl-copy`, que es cierto. El problema es que las
+# deps de runtime se propagan al CIERRE DE IMAGEN, y `pass` vive en `cli`:
+#
+#     wayland ← wl-clipboard ← pass
+#
+# ⇒ metía 5 nodos y ~3 MB en `cli` y `servidor` (`wl-clipboard`, `wayland`, `wayland-protocols`,
+# `libffi`), y con ellos un enlace COLGANTE que el vigía de sonames denunció: el `wayland-scanner`
+# del artefacto de wayland pide `libexpat.so.1`, que en esos perfiles no existe ⇒ binario roto
+# viajando en la imagen. Comprobado: sin `pass`, `cli` no tocaba nada de eso.
+#
+# Y es incorrecto por el fondo, no sólo por el aviso: **`cli` y `servidor` no tienen servidor
+# gráfico**, así que `wl-copy` no podría funcionar ahí ni con la dep puesta. Declararla era pagar
+# 3 MB y un binario roto por una función imposible en esa capa.
+#
+# ⇒ Quien tenga sesión Wayland declara `wl-clipboard` en SU perfil (`escritorio-sway` ya lo hace) y
+# ahí `pass -c` funciona. Donde no esté, el resto de `pass` va perfecto y `-c` muere con el mensaje
+# de upstream («Error: No X11 or Wayland display detected»), que es el comportamiento correcto.
+#
+# La lección general: **una dep de runtime no es sólo «lo que el programa invoca»; es lo que VIAJA
+# en todas las imágenes que lo declaren.** Antes de poner una, mirar qué arrastra en el perfil más
+# chico que la va a llevar.