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