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…

fix(libuv): `--with-pic` — sin él ninguna biblioteca compartida puede enlazarlo

Lo destapó `fcitx5` al enlazar su biblioteca núcleo:

    [161/296] Linking CXX shared library bin/libFcitx5Utils.so.5.1.14
    ld.lld: error: relocation R_X86_64_32 cannot be used against local symbol; recompile with -fPIC
    >>> defined in /usr/lib/libuv.a(libuv_la-proctitle.o)

Un ejecutable puede enlazar un `.a` no-PIC; un `.so` no. Y ese `.so` no es opcional: es el núcleo de
fcitx5, contra el que enlazan todos sus addons — así que la salida de «dejar de construir el `.so`»
no aplica.

⚠ **Acá se arregla la LIBRERÍA y no el consumidor, al revés que en `gdk-pixbuf`/`libpng`, y la
diferencia es el radio — medido antes de tocar, que es la regla de yupana.** El 2026-08-21 el usuario
decidió NO cambiar `libpng` por una variante PIC: tiene dependientes en cuatro colas y es estático
por arquitectura, así que allá se desactivó el único `.so` que estorbaba (`-Dgif=disabled`). `libuv`
es el caso opuesto: **radio 1 y ninguna imagen declarada**, y ese único dependiente es el propio
fcitx5, que todavía no ha sellado. Re-sellarlo no arrastra nada.

Y hacerlo deja la `.a` usable para cualquier consumidor futuro: sin esto, el siguiente que quiera
enlazar libuv desde un `.so` paga el mismo viaje de diagnóstico. La lección que el repo ya tenía
escrita —«contar los targets `Linking` antes de tocar nada: si el no-PIC sólo estorba a UN `.so` y
ese `.so` no se quiere, el arreglo es dejar de construirlo»— se aplicó: hay UN solo target de
biblioteca compartida en todo el build de fcitx5, y es el que hace falta.

`--with-pic` es la forma de libtool y la convención de este repo (17 recetas la usan).

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

1bba684d6af32128ddcec16bde5b6a69de4fcf2c · ruwaq Sergio · (2 p'unchaw ñawpaq) · tayta 59b9fe6bb · kay commitpi sach'ata qhaway

Semántico sayk'uy

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

1 qillqakuna · +17 −1

diff --git a/recipes/libuv.toml b/recipes/libuv.toml
index ff01cb35..c859ba78 100644
--- a/recipes/libuv.toml
+++ b/recipes/libuv.toml
@@ -15,7 +15,23 @@ link     = "static"
 flags    = []
 
 [build.phases]
-configure = './autogen.sh && ./configure --build=$CBUILD --host=$CHOST --prefix=/usr --disable-shared --enable-static'
+# ⚠ `--with-pic` (2026-10-19): sin él el `libuv.a` no es PIC y **ninguna biblioteca compartida puede
+# enlazarlo**. Lo destapó `fcitx5` al enlazar su `libFcitx5Utils.so`:
+#     ld.lld: error: relocation R_X86_64_32 cannot be used against local symbol; recompile with -fPIC
+#     >>> defined in /usr/lib/libuv.a(libuv_la-proctitle.o)
+# Un ejecutable sí puede enlazar un `.a` no-PIC; un `.so` no. Y el `.so` de fcitx5 no es opcional:
+# es su núcleo, contra el que enlazan todos los addons.
+#
+# ⇒ Acá se arregla la LIBRERÍA y no el consumidor, al revés que en `gdk-pixbuf`/`libpng` (2026-08-21,
+# decisión del usuario), **y la diferencia es el radio, medido antes de tocar**: `libpng` tiene
+# dependientes en cuatro colas y es estático por arquitectura, así que allá se desactivó el único
+# `.so` que estorbaba. `libuv` tiene **radio 1 y NINGUNA imagen declarada** — el único dependiente
+# es el propio fcitx5 —, así que re-sellarlo no arrastra nada y deja la `.a` usable para cualquier
+# consumidor futuro. Sin esto, el siguiente que quiera enlazar libuv desde un `.so` paga el mismo
+# viaje.
+#
+# `--with-pic` es la forma de libtool y la convención de este repo (17 recetas la usan).
+configure = './autogen.sh && ./configure --build=$CBUILD --host=$CHOST --prefix=/usr --disable-shared --enable-static --with-pic'
 compile   = 'make'
 install   = 'make DESTDIR=/out install'