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…
recetas: el chino entero, y SIN tocar nada de GNOME
1# libime-table — los diccionarios de los métodos de entrada POR TABLA (wubi, cangjie, zhengma…).
2#
3# Hermana de `libime-lm` y `libime-dict`; la nota larga del por qué está en `libime-lm.toml`.
4#
5# ══ QUÉ SON, Y POR QUÉ NO SE SALTAN ════════════════════════════════════════════════════════════
6# El pinyin se teclea por pronunciación; los métodos por TABLA se teclean por **forma** del
7# carácter, y son lo que usa mucha gente que escribe rápido o que escribe cantonés. Son ocho
8# tablas, y cada `.txt` se compila a un `.main.dict` con la misma herramienta:
9#
10# libime_tabledict <tabla.txt> <tabla.main.dict>
11#
12# db.txt erbi.txt qxm.txt wanfeng.txt wbpy.txt wbx.txt zrm.txt cj.txt
13#
14# ⚠ **Si esta receta no existiera, `fcitx5-chinese-addons` publicaría igual su método por tabla y no
15# tendría ni una tabla que cargar** — la figura de «sellado, con contenido, reproducible y sin la
16# función que promete» que este catálogo persigue. Por eso entra junto con las otras dos y no
17# después.
18#
19# ⚠ **`libime_tabledict` es una CUARTA herramienta, y mi guardián de `libime` sólo exigía tres.**
20# Había escrito el control contra las herramientas que necesitaban `libime-lm` y `libime-dict`
21# (`libime_slm_build_binary`, `libime_prediction`, `libime_pinyindict`) sin mirar el `data/` completo
22# de upstream, que usa también `LibIME::tabledict`. Es la misma clase de defecto que los cuatro
23# guardianes demasiado estrictos del 20-oct, con el signo contrario: **un guardián escrito contra lo
24# que yo iba a usar, no contra lo que el paquete promete.** Arreglado allá.
25#
26# Los `.main.dict` caen en `/usr/share/libime/` (`LIBIME_INSTALL_PKGDATADIR`), con el nombre que sale
27# de sustituir `.txt` por `.main.dict`, que es lo que hace el `foreach` de upstream.
28name = "libime-table"
29version = "20240108"
30license = "LGPL-2.1-or-later"
31
32[source]
33tarball = "https://download.fcitx-im.org/data/table-20240108.tar.zst"
34sha256 = "3e9d87b04a393f131723472c8eaa860dd23c378a3d4f6a9005513b2a95b3614b"
35# Los ocho `.txt` están en la raíz del tarball (comprobado con `tar -tf`).
36strip_components = 0
37
38[build]
39compiler = "zig-cc"
40target = "x86_64-linux-musl"
41link = "static"
42flags = []
43
44[build.phases]
45# La lista es EXPLÍCITA y no un glob, por el mismo motivo que upstream la escribe a mano: si el
46# tarball trajera un `.txt` más, un glob lo compilaría en silencio y el artefacto cambiaría de
47# contenido sin que nadie lo decidiera; y si trajera uno menos, el glob no se queja.
48configure = '''
49set -e
50falta=""
51for f in db erbi qxm wanfeng wbpy wbx zrm cj; do
52 [ -f "$f.txt" ] || falta="$falta $f.txt"
53done
54[ -z "$falta" ] || { echo "libime-table: el tarball no trae:$falta — upstream cambió el juego de tablas" >&2; ls -la >&2; exit 1; }
55echo "libime-table: las 8 tablas presentes"
56'''
57compile = '''
58set -e
59for f in db erbi qxm wanfeng wbpy wbx zrm cj; do
60 libime_tabledict "$f.txt" "$f.main.dict"
61done
62'''
63install = '''
64set -e
65mkdir -p /out/usr/share/libime
66n=0
67for f in db erbi qxm wanfeng wbpy wbx zrm cj; do
68 cp "$f.main.dict" /out/usr/share/libime/
69 t=/out/usr/share/libime/$f.main.dict
70 [ -s "$t" ] || { echo "libime-table: $f.main.dict quedó vacío — ese método por tabla no tendría nada que cargar" >&2; exit 1; }
71 n=$((n+1))
72done
73[ "$n" -eq 8 ] || { echo "libime-table: salieron $n de 8 tablas" >&2; exit 1; }
74echo "libime-table: $n tabla(s) compiladas en /usr/share/libime"
75'''
76
77[deps]
78build = ["libime"]