tawasuyu

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 1572Shell 203Rust 109Markdown 993728 Sutichaykuna

medición: fcitx5 no falta por la receta — falta una decisión de arquitectura del corpus

Dije que si aparecía un tercer archivo no-PIC con radio grande plantearía la decisión en vez de
seguir apagando perillas. Apareció, así que paro acá y lo dejo medido.

Cinco builds. La receta está escrita, **el configure pasa limpio y el compilador termina**: muere al
ENLAZAR, con **7365** errores `relocation … recompile with -fPIC`.

La causa es estructural y no de fcitx5: produce **OCHO bibliotecas compartidas**
(libFcitx5Utils/Core/Config + los addons classicui, clipboard, dbus, dbusfrontend, emoji) porque sus
métodos de entrada se cargan con `dlopen`. Y **este corpus es estático-primero y sin PIC**, así que
un `.a` del catálogo no entra en un `.so`.

Dos de los tres se resolvieron en el camino, cada uno por el lado que el radio mandaba:

    libuv       radio 1,  ninguna imagen   ⇒ se PIC-ificó la LIBRERÍA (--with-pic)
    util-linux  radio 79, escritorio-kde   ⇒ se apagó en el CONSUMIDOR (ENABLE_LIBUUID=Off; el
                                             fallback de upstream lee /proc/sys/kernel/random/uuid)

El tercero no se puede esquivar: `libpng16.a` + `libfreetype.a` + `libfontconfig.a` los pide
`libclassicui.so`, que **es la barra de candidatos** — la interfaz del IME. Apagarla sería sellar un
daemon sin cara, la figura de `crun` sin podman otra vez.

⇒ **La decisión, con su coste medido**: publicar el trío de fuentes con `--with-pic` cuesta **40
recetas** (la unión de sus dependientes transitivos; no 133, se solapan) y rearma las **cinco
imágenes de escritorio**. Es la misma decisión que el operador tomó en NEGATIVO para `libpng` el
2026-08-21 —«es estático por diseño; eso es arquitectura del corpus»—, y el contexto cambió: allá
era para salvar UN `.so` que no se quería, acá desbloquea una capacidad entera y a cualquier app
futura que necesite enlazar desde un `.so`.

Queda en `MUROS` del censo, al lado de `kitty`: dos huecos que no son recetas ausentes sino
capacidades que la distro no publica. Lo que SÍ queda en firme de estos cinco viajes, pase lo que
pase con la decisión: el cierre de `.pc` con su método de verificación corregido, `rm -rf build` (las
recetas cmake del repo no eran idempotentes sobre un árbol reusado) y `libuv` PIC.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

57cd6aab98d5f9f11cf797cc62cd0beb87f487eb · ruwaq Sergio · (2 p'unchaw ñawpaq) · tayta fbdf94b1a · kay commitpi sach'ata qhaway

Semántico sayk'uy

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

2 qillqakuna · +24 −5

diff --git a/docs/state/distro-huecos.json b/docs/state/distro-huecos.json
index 1bdd1778..fcab75d1 100644
--- a/docs/state/distro-huecos.json
+++ b/docs/state/distro-huecos.json
@@ -37,7 +37,6 @@
   {
    "categoria": "escribir en esos idiomas",
    "faltan": [
-    "fcitx5",
     "anthy",
     "libpinyin",
     "hangul",
@@ -45,7 +44,9 @@
    ],
    "items": [
     {
-     "estado": "falta",
+     "estado": "tiene-sin-viajar",
+     "muro": "corpus-estatico-sin-pic",
+     "muro_porque": "MEDIDO el 2026-10-19 construyéndolo cinco veces. La receta está escrita, el configure pasa limpio y el compilador termina: muere al ENLAZAR, con **7365** errores `relocation … recompile with -fPIC`. fcitx5 produce OCHO bibliotecas compartidas (libFcitx5Utils/Core/Config + los addons classicui, clipboard, dbus, dbusfrontend, emoji) porque sus métodos de entrada se cargan con dlopen; y este corpus es ESTÁTICO-PRIMERO Y SIN PIC, así que un `.a` del catálogo no entra en un `.so`. Dos se resolvieron en el camino —`libuv` PIC-ificado (radio 1) y `ENABLE_LIBUUID=Off` por el fallback del kernel (util-linux es radio 79)— y el tercero no se puede esquivar: `libpng16.a` + `libfreetype.a` + `libfontconfig.a` los pide `libclassicui.so`, que ES la barra de candidatos, o sea la interfaz del IME. ⇒ NO falta una receta: falta decidir si el trío de fuentes se publica con `--with-pic`. Coste medido: **40 recetas en la unión de sus dependientes transitivos** (no 133: se solapan) y las CINCO imágenes de escritorio rearman. Es la misma decisión que el operador tomó en NEGATIVO para `libpng` el 2026-08-21 —«es estático por diseño; eso es arquitectura del corpus»—, pero el contexto cambió: allá era para salvar UN `.so` que no se quería; acá desbloquea una capacidad entera y a cualquier app futura que necesite enlazar desde un `.so`.",
      "nombre": "fcitx5",
      "parientes": []
     },
@@ -1374,10 +1375,10 @@
   }
  ],
  "en_alguna_imagen": 604,
- "recetas_alcanzables": 1378,
+ "recetas_alcanzables": 1379,
  "resumen": {
-  "falta": 149,
-  "tiene-sin-viajar": 3,
+  "falta": 148,
+  "tiene-sin-viajar": 4,
   "tiene-y-viaja": 18
  },
  "schema": "takana-censo-distro/1"
diff --git a/scripts/censo-distro.py b/scripts/censo-distro.py
index 92b2f3ca..815daa2c 100755
--- a/scripts/censo-distro.py
+++ b/scripts/censo-distro.py
@@ -183,6 +183,24 @@ CUBIERTOS = {
 # censo mentía por omisión al contarlas juntas. Sólo entran acá los muros MEDIDOS, con el dato que
 # los prueba; lo demás se queda sin anotar, que es más honesto que adivinar.
 MUROS = {
+    'fcitx5': ('corpus-estatico-sin-pic',
+               "MEDIDO el 2026-10-19 construyéndolo cinco veces. La receta está escrita, el "
+               "configure pasa limpio y el compilador termina: muere al ENLAZAR, con **7365** "
+               "errores `relocation … recompile with -fPIC`. fcitx5 produce OCHO bibliotecas "
+               "compartidas (libFcitx5Utils/Core/Config + los addons classicui, clipboard, dbus, "
+               "dbusfrontend, emoji) porque sus métodos de entrada se cargan con dlopen; y este "
+               "corpus es ESTÁTICO-PRIMERO Y SIN PIC, así que un `.a` del catálogo no entra en un "
+               "`.so`. Dos se resolvieron en el camino —`libuv` PIC-ificado (radio 1) y "
+               "`ENABLE_LIBUUID=Off` por el fallback del kernel (util-linux es radio 79)— y el "
+               "tercero no se puede esquivar: `libpng16.a` + `libfreetype.a` + `libfontconfig.a` "
+               "los pide `libclassicui.so`, que ES la barra de candidatos, o sea la interfaz del "
+               "IME. ⇒ NO falta una receta: falta decidir si el trío de fuentes se publica con "
+               "`--with-pic`. Coste medido: **40 recetas en la unión de sus dependientes "
+               "transitivos** (no 133: se solapan) y las CINCO imágenes de escritorio rearman. Es "
+               "la misma decisión que el operador tomó en NEGATIVO para `libpng` el 2026-08-21 "
+               "—«es estático por diseño; eso es arquitectura del corpus»—, pero el contexto "
+               "cambió: allá era para salvar UN `.so` que no se quería; acá desbloquea una "
+               "capacidad entera y a cualquier app futura que necesite enlazar desde un `.so`."),
     'kitty': ('sin-opengl-de-escritorio',
               "setup.py:804 hace pkg_config('gl', '--libs') y data-types.h:25 exige OpenGL >= 3.x "
               "core. Medido en el store: NADIE publica `gl.pc` ni `libGL.so` — mesa da egl.pc, "