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…

⎇ main recipes/fcitx5-pinyin-stroke.toml TOML · 60 líneas · 3.4 KB Historia crudo

recetas: el chino entero, y SIN tocar nada de GNOME 0359f7dc3 · Sergio ·

1# fcitx5-pinyin-stroke — la tabla de TRAZOS: buscar un carácter dibujando su orden de escritura.
2#
3# ══ POR QUÉ ESTA RECETA EXISTE ═════════════════════════════════════════════════════════════════
4# El addon `pinyinhelper` de `fcitx5-chinese-addons` baja DOS tarballs de datos en tiempo de build
5# (`modules/pinyinhelper/CMakeLists.txt`), y lo hace **sin ninguna perilla que lo apague**: el
6# módulo entra incondicionalmente desde `modules/CMakeLists.txt`. El sandbox de takana no tiene red,
7# así que eso mata el build.
8#
9# ⚠ **Y no alcanza con pre-colocar el `.mb`: hay que entender la macro.** `fcitx5_download` genera
10# un script que mira `if (NOT EXISTS <destino>)` antes de bajar — o sea que **sí** se salta la
11# descarga si el fichero ya está y el sha coincide (leído en
12# `Fcitx5Download.cmake.in` de nuestro propio artefacto de fcitx5, no supuesto). Pero el destino es
13# el **TARBALL** dentro del directorio de build, y una receta de takana tiene UNA sola fuente que se
14# extrae antes de que corran las fases: el tarball no queda a mano para copiarlo.
15#
16# ⇒ Entonces el reparto es: esta receta trae el dato ya extraído e instalado, y
17# `fcitx5-chinese-addons` **parchea** su `pinyinhelper/CMakeLists.txt` para no bajar nada y apuntar
18# al fichero que esta receta deja. Es la misma forma que `sonic` con espeak-ng: una dep existe para
19# que el consumidor no salga a la red.
20#
21# ══ QUÉ ES EL DATO ═════════════════════════════════════════════════════════════════════════════
22# `py_stroke.mb` asocia cada carácter con su secuencia de trazos (horizontal, vertical, gancho…).
23# Sirve para **encontrar un carácter cuya pronunciación no sabés**, que es exactamente el caso en
24# el que un método por pinyin no te sirve de nada. Es un dato tabular, no se compila: se copia.
25#
26# El sha256 es el que `fcitx5-chinese-addons` declara en su propio CMakeLists, así que está pineado
27# contra lo que el proyecto afirma y no contra lo que el servidor sirva hoy. Comprobado que coinciden.
28name    = "fcitx5-pinyin-stroke"
29version = "20250329"
30license = "GPL-2.0-or-later"
31
32[source]
33tarball = "https://download.fcitx-im.org/data/py_stroke-20250329.tar.gz"
34sha256  = "c1a7ca7225d3614ab83353fc827503006a980447762018f53760425d7b5303a6"
35# `py_stroke.mb` está en la raíz del tarball (comprobado con `tar -tf`), sin directorio contenedor.
36strip_components = 0
37
38[build]
39compiler = "zig-cc"
40target   = "x86_64-linux-musl"
41link     = "static"
42flags    = []
43
44[build.phases]
45configure = 'true'
46compile   = 'true'
47# Guardián con piso de tamaño: el dato son cientos de KB. Un `.mb` vacío o truncado deja el addon
48# cargando una tabla de trazos sin trazos — buscarías un carácter y no saldría ninguno.
49install = '''
50set -e
51[ -f py_stroke.mb ] || { echo "fcitx5-pinyin-stroke: el tarball no dejó py_stroke.mb en la raíz" >&2; ls -la >&2; exit 1; }
52n=$(stat -c%s py_stroke.mb)
53[ "$n" -gt 102400 ] || { echo "fcitx5-pinyin-stroke: py_stroke.mb son sólo $n bytes — esperaba >100 KiB" >&2; exit 1; }
54mkdir -p /out/usr/share/fcitx5/pinyinhelper
55cp py_stroke.mb /out/usr/share/fcitx5/pinyinhelper/
56echo "fcitx5-pinyin-stroke: py_stroke.mb $n B en /usr/share/fcitx5/pinyinhelper"
57'''
58
59[deps]
60build = []