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 1506Shell 193Rust 108Markdown 983676 Definiciones

⎇ 66fe516c8d30b0b74e43a185c2a7e3da00365e8a recipes/anthy-unicode.toml TOML · 63 líneas · 4.3 KB Historia crudo

receta: el SEGUNDO método de entrada — japonés, y cuesta una receta, no dos 98edf488b · Sergio ·

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