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 1574Shell 204Rust 111Markdown 993763 Definiciones

fix(fcitx5): libuuid no es PIC, y acá se arregla el consumidor — el radio lo decide

Con `libuv` ya PIC, el enlace de `libFcitx5Utils.so` avanzó hasta el siguiente archivo no-PIC:

    ld.lld: relocation R_X86_64_32 … recompile with -fPIC
    >>> libuuid_la-randutils.o … in archive /usr/lib/libuuid.a

Con `libuv` la cura fue la librería porque tenía **radio 1 y ninguna imagen**. Acá no se paga:
`util-linux` tiene **radio 79** y afecta a `escritorio-kde`, y re-sellarlo tira a deuda lo que
cuelga de él. Es exactamente el precedente de `libpng` del 2026-08-21, donde el usuario decidió no
PIC-ificar el canónico porque «es estático por diseño; eso es arquitectura del corpus». ⇒ Se arregla
el CONSUMIDOR: `-DENABLE_LIBUUID=Off`.

Y el fallback no es un parche: `uuid_p.h:103` usa `generateUUIDFallback("/proc/sys/kernel/random/uuid")`
— el UUID lo genera el KERNEL. El aviso de upstream sobre un «dummy self increment id» es para el
camino NO-Linux, que acá no se toma. Apagarlo desactiva además el frontend de ibus, que no usamos.

⚠ **Y LO QUE MEDÍ DE PASO ES MÁS IMPORTANTE QUE ESTE ARREGLO, porque puede ser una pared.** Barrí
las 31 deps de fcitx5 buscando `.a` sin PIC: **17 las traen** — `glib`, `cairo`, `pango`,
`harfbuzz`, `fontconfig`, `freetype`, `libpng`, `dbus`, `util-linux`, `libxml2`, `json-c`,
`fribidi`, `pixman`, `gettext-tiny`, `wayland`, `libxkbcommon`, `pkgconf`. **Este corpus está
construido estático-primero y sin PIC**, y fcitx5 quiere un núcleo COMPARTIDO (sus addons lo
dlopenean). Si el enlace sigue pidiendo archivos de esa lista, el coste de PIC-ificar es:

    dbus 127 · util-linux 79 · glib 62 · libpng 51 · freetype 42 · fontconfig 40 · cairo 19
    …y toca las CINCO imágenes de escritorio

Eso no es una receta: es una decisión de arquitectura del corpus, y sería del usuario. Lo que mi
barrido dice es el riesgo POTENCIAL, no que los 17 entren de verdad en el `.so` — hasta ahora sólo
aparecieron dos (libuv y libuuid), y el `.so` se llama «Utils». Se relanza para que el hecho decida:
si pasa, la pared no existía para este caso; si aparece un tercero con radio grande, hay que
plantear la decisión en vez de seguir apagando perillas.

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

fbdf94b1a2c4ffc3fbb3b4bd91debd7e449d2892 · por Sergio · (hace 2 d) · padre 9b668fe37 · ver el árbol en este commit

Delta semántico

Ninguna definición cambió: el cambio es de texto, documentación o datos.

1 archivos · +18 −1

diff --git a/recipes/fcitx5.toml b/recipes/fcitx5.toml
index ae475d16..54420ab9 100644
--- a/recipes/fcitx5.toml
+++ b/recipes/fcitx5.toml
@@ -37,6 +37,23 @@
 #                          lo dice). Los addons de prueba son un frontend falso para el test suite
 #   ENABLE_DOC=Off         doxygen no está en el corpus
 #   BUILD_SPELL_DICT=Off   construye `en_dict.fscd` para el corrector inglés — depende de enchant
+#   ENABLE_LIBUUID=Off     ⚠ ÉSTA ES UNA DECISIÓN DE ARQUITECTURA DEL CORPUS, no una perilla más.
+#                          `libuuid.a` (de util-linux) no es PIC, así que `libFcitx5Utils.so` no
+#                          puede enlazarlo:
+#                            ld.lld: relocation R_X86_64_32 … recompile with -fPIC
+#                            >>> libuuid_la-randutils.o … in archive /usr/lib/libuuid.a
+#                          Arreglar la librería —como se hizo con `libuv`, radio 1— acá NO se paga:
+#                          `util-linux` tiene **radio 79 y afecta a `escritorio-kde`**, y re-sellarlo
+#                          tira a deuda lo que cuelga de él. Es el precedente de `libpng` del
+#                          2026-08-21, donde el usuario decidió no PIC-ificar el canónico porque «es
+#                          estático por diseño; eso es arquitectura del corpus». ⇒ se arregla el
+#                          CONSUMIDOR.
+#                          Y el fallback es bueno en Linux, no un parche: `uuid_p.h:103` usa
+#                          `generateUUIDFallback("/proc/sys/kernel/random/uuid")`, o sea el UUID lo
+#                          genera el KERNEL. (El aviso del comentario de upstream sobre un «dummy
+#                          self increment» es para el camino NO-Linux, que acá no se toma.)
+#                          Apagarlo también desactiva el frontend de ibus, que no usamos: el camino
+#                          de esta distro es el de Wayland.
 #
 # ⚠ `link = "dynamic"` **y no es opcional**: fcitx5 es un daemon cuyos métodos de entrada son
 # addons que carga con `dlopen` en tiempo de ejecución (`libexec/` + `lib/fcitx5/`). Un binario
@@ -93,7 +110,7 @@ cmake -B build -G Ninja -Wno-dev \
   -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr \
   -DENABLE_X11=Off -DENABLE_ENCHANT=Off -DUSE_SYSTEMD=Off \
   -DENABLE_TEST=Off -DENABLE_TESTING_ADDONS=Off -DENABLE_DOC=Off \
-  -DBUILD_SPELL_DICT=Off
+  -DBUILD_SPELL_DICT=Off -DENABLE_LIBUUID=Off
 '''
 compile = "cmake --build build"
 # El guardián de presencia, por la regla 3: lo que tiene que quedar es el DAEMON y su directorio de