# anthy-unicode 1.0.0.20260213 — el motor de conversión kana→kanji para japonés. # # ══ PARA QUÉ ═══════════════════════════════════════════════════════════════════════════════════ # El japonés se escribe tecleando la pronunciación en kana y eligiendo entre los kanji que suenan # igual. Eso es una conversión con diccionario y estadística, y es lo que hace esta biblioteca. Es # la única dep nueva que `fcitx5-anthy` necesita. # # ══ ⚠ POR QUÉ `anthy-unicode` Y NO EL `anthy` CLÁSICO ══════════════════════════════════════════ # El `anthy` original vive en sourceforge.jp y **Alpine lo re-hospeda** porque el origen no es # fiable (`source="https://dev.alpinelinux.org/archive/anthy/anthy-9100h.tar.gz"`). Es el mismo # punto feo que `noto-fonts-cjk`, y acá se puede evitar: `anthy-unicode` es el fork mantenido # (fujiwarat), **lo prefiere el propio consumidor** —`fcitx5-anthy/CMakeLists:21` prueba # `anthy-unicode` primero y sólo cae a `anthy` si no está— y publica tarballs de GitHub a partir de # un tag, sin depender de que un tercero siga sirviendo el fichero. # # ══ MESON Y NO AUTOTOOLS, Y ESO EVITA LOS DOS PROBLEMAS DE `libhangul` ═════════════════════════ # El tarball trae los dos caminos. Se usa meson por dos razones medidas sobre el árbol, no por # gusto: # # 1. **Genera el `.pc`.** `meson.build:109` instala `anthy-unicode.pc` en `libdir/pkgconfig`. # `fcitx5-anthy` lo busca con `pkg_check_modules`, así que sin `.pc` no compila — y eso es # exactamente lo que pasó con `libhangul`, cuyo camino de cmake ignora su propia plantilla y # hubo que sustituirla a mano en el `install`. # 2. **Sus `.a` son PIC por defecto** (`b_staticpic` de meson vale `true`), y este `.a` se enlaza # dentro de `libanthy.so`, el addon que el daemon carga con `dlopen`. Se pone explícito igual: # la lección del 19-oct costó 7365 errores y una decisión de arquitectura, y una receta nueva # que va a ser enlazada desde un `.so` no debería depender de un default. # # `-Demacs=disabled`: compila ficheros `.el` con emacs, que no está en el corpus y no hace falta # para convertir kana. Su `value: 'auto'` lo intentaría y lo saltaría, pero un `auto` que depende de # qué hay en el sandbox es una fuente de no-determinismo entre máquinas: se fija. name = "anthy-unicode" version = "1.0.0.20260213" license = "LGPL-2.1-or-later" [source] tarball = "https://github.com/fujiwarat/anthy-unicode/archive/refs/tags/1.0.0.20260213/anthy-unicode-1.0.0.20260213.tar.gz" sha256 = "136469e2288658a80684b3f05a868b596a835c4adcf3de97ab657423c0132a55" [build] compiler = "zig-cc" target = "x86_64-linux-musl" link = "static" flags = [] [build.phases] configure = "PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release --default-library=static -Db_staticpic=true -Demacs=disabled --wrap-mode=nodownload" compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output" # Guardián: la `.a`, su `.pc` y el DICCIONARIO. Los tres, y el tercero es el que se olvida — # `libhangul` enseñó ayer que un motor de idioma lleva datos con la ruta HORNEADA en el binario, así # que un artefacto con la biblioteca y sin el diccionario sella con contenido y no convierte nada. install = ''' set -e PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild [ -f /out/usr/lib/libanthy-unicode.a ] || [ -f /out/usr/lib/libanthy.a ] || { echo "anthy-unicode: no quedó la .a — NO sello" >&2; ls /out/usr/lib 2>/dev/null >&2; exit 1; } [ -f /out/usr/lib/pkgconfig/anthy-unicode.pc ] || { echo "anthy-unicode: falta anthy-unicode.pc — el consumidor lo busca con pkg_check_modules y no lo encontraría" >&2; exit 1; } n=$(find /out/usr/share/anthy-unicode /out/usr/share/anthy -type f 2>/dev/null | wc -l) [ "$n" -gt 0 ] || { echo "anthy-unicode: CERO ficheros de diccionario — la biblioteca cargaría y no convertiría nada" >&2; exit 1; } echo "anthy-unicode: .a + .pc + $n fichero(s) de diccionario" ''' [deps] build = ["meson", "samurai", "python3", "pkgconf", "gettext-tiny"]