fix(fcitx5-hangul): mi guardián era demasiado literal y paró un build que había salido bien
El motor **compiló y se instaló entero** —`[21/21] Linking CXX shared module bin/libhangul.so`, el
`.conf`, los datos de símbolos, las traducciones, los iconos— y mi guardián lo rechazó:
fcitx5-hangul: no quedó el addon hangul.so — NO sello un motor que el daemon no puede cargar
Pedía `hangul.so` y el build instala **`libhangul.so`**. La convención de fcitx5 es `lib<nombre>.so`
y estaba a la vista en su propio artefacto —`libclassicui.so`, `libclipboard.so`, `libdbus.so`— o
sea que la supuse en vez de mirarla, teniéndola a un `ls` de distancia.
⇒ **Un guardián demasiado literal rechaza trabajo bueno, que es la otra forma de ser inútil.** He
pasado el día cazando lo contrario —cosas selladas con contenido y sin función— y acá produje el
error simétrico. Ahora busca por SUBCADENA (`*hangul*.so`) dentro del directorio de addons, que es
lo que de verdad importa, y sigue exigiendo el `hangul.conf` por nombre exacto porque ése sí lo fija
fcitx5. Si falla, lista `/usr/lib` para que el siguiente vea qué hay en vez de adivinar.
Lo que el intento SÍ demostró, y es lo que importa: con `fcitx5` reconstruido con
`ENABLE_TESTING_ADDONS=On` (radio 1), el motor **atraviesa el configure, compila y enlaza** —
incluido el `.so` contra `libhangul.a`, que nació PIC justamente para esto. Las piezas instaladas:
usr/lib/fcitx5/libhangul.so
usr/share/fcitx5/addon/hangul.conf
usr/share/fcitx5/hangul/symbol.txt
+ metainfo y 12 traducciones
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Semantic delta
No definition changed: this change is text, documentation or data.
1 files · +14 −6
- recipes/fcitx5-hangul.toml +14 −6
diff --git a/recipes/fcitx5-hangul.toml b/recipes/fcitx5-hangul.toml
index 86b96701..e26fff2c 100644
--- a/recipes/fcitx5-hangul.toml
+++ b/recipes/fcitx5-hangul.toml
@@ -65,17 +65,25 @@ cmake -B build -G Ninja -Wno-dev \
compile = "cmake --build build"
# El guardián pide el `.so` del addon Y su `.conf`. Las dos piezas hacen falta y por razones
# distintas: sin el `.so` no hay motor; sin el `.conf` en `share/fcitx5/addon/` el daemon no sabe
-# que existe y no lo carga nunca — sellaría con contenido, reproducible e inerte, que es
-# exactamente lo que la regla 3 persigue.
+# que existe y no lo carga nunca — sellaría con contenido, reproducible e inerte, que es lo que la
+# regla 3 persigue.
+#
+# ⚠ **Y NO SE CODIFICA EL NOMBRE EXACTO DEL FICHERO, porque mi primera versión lo hizo y dio un
+# FALSO POSITIVO.** Pedía `hangul.so` y el build instala **`libhangul.so`**: la convención de fcitx5
+# es `lib<nombre>.so` —estaba a la vista en su propio artefacto (`libclassicui.so`,
+# `libclipboard.so`, `libdbus.so`…)— y yo la supuse en vez de mirarla. El build había salido BIEN y
+# el guardián lo paró: un guardián demasiado literal rechaza trabajo bueno, que es la otra forma de
+# ser inútil. Se busca por SUBCADENA dentro del directorio de addons, que es lo que de verdad
+# importa (que haya un módulo de hangul ahí), y se exige el `.conf` por su nombre porque ése sí lo
+# fija fcitx5.
install = '''
set -e
DESTDIR=/out cmake --install build
-so=$(find /out/usr/lib/fcitx5 -name 'hangul.so' 2>/dev/null | head -1)
-[ -n "$so" ] || { echo "fcitx5-hangul: no quedó el addon hangul.so — NO sello un motor que el daemon no puede cargar" >&2; exit 1; }
+so=$(find /out/usr/lib/fcitx5 -name '*hangul*.so' 2>/dev/null | head -1)
+[ -n "$so" ] || { echo "fcitx5-hangul: no hay ningún *hangul*.so en /usr/lib/fcitx5 — NO sello un motor que el daemon no puede cargar" >&2; ls -R /out/usr/lib 2>/dev/null | head -20 >&2; exit 1; }
[ -f /out/usr/share/fcitx5/addon/hangul.conf ] || { echo "fcitx5-hangul: falta share/fcitx5/addon/hangul.conf — sin él el daemon no sabe que el addon existe" >&2; exit 1; }
-echo "fcitx5-hangul: addon $so + su .conf · $(ls /out/usr/share/fcitx5/inputmethod/*.conf 2>/dev/null | wc -l) método(s) de entrada declarado(s)"
+echo "fcitx5-hangul: addon $(basename "$so") + hangul.conf · datos: $(ls /out/usr/share/fcitx5/hangul/ 2>/dev/null | tr '\n' ' ')"
'''
-
[deps]
# `fcitx5` provee las cabeceras y los `.cmake` de `Fcitx5Core`/`Fcitx5Utils`; `libhangul`, el motor.
# El resto es el cierre de `.pc` que el enlace de un `.so` necesita — la lección de ayer: declarar