fix(fcitx5): `ENABLE_TESTING_ADDONS=Off` dejaba un marco que no puede tener motores
`fcitx5-hangul` —el primer motor— murió con:
CMake Error at /usr/lib/cmake/Fcitx5Module/Fcitx5ModuleConfig.cmake:22 (find_package):
Could not find a package configuration file provided by "Fcitx5ModuleTestFrontend"
Causa: yo había puesto `ENABLE_TESTING_ADDONS=Off`. Su `option()` dice «Build testing frontend, im
and ui addons», que **se lee como «cosas de test, fuera»** y así lo razoné en el comentario de la
receta. Pero esa perilla, además de los addons, instala el **módulo de cmake que los consumidores
piden**: `fcitx5-hangul` hace `find_package(Fcitx5Module REQUIRED COMPONENTS TestFrontend)` en su
`CMakeLists:15`, **sin condición**. Así que no es opcional desde fuera: todo motor de fcitx5 lo
exige, y apagarlo deja un marco al que no se le puede enchufar ningún idioma — sellado, con 17
addons, y estructuralmente incapaz de recibir el decimoctavo.
⇒ **La lección es más general que esta receta: una perilla que se llama «testing» puede publicar
INTERFAZ, y la descripción del `option()` no lo dice.** Medir qué deja de instalarse, no leer cómo
se llama. Es pariente de «un directorio vacío como sonda»: el nombre no es el hecho.
Coste medido antes de tocar: **radio 1** — sólo `fcitx5-hangul` cuelga de fcitx5, y todavía no ha
sellado, así que re-sellarlo no arrastra nada.
De paso, lo que ya funcionó: **`libhangul` SELLÓ** (`b3:cf9e172c…`) con el `.pc` sustituido de la
plantilla de upstream, y sus dos guardianes nuevos pasaron — ningún `@marcador@` crudo y la cabecera
en `include/hangul-1.0` donde el `.pc` promete.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Delta semántico
Ninguna definición cambió: el cambio es de texto, documentación o datos.
1 archivos · +16 −3
- recipes/fcitx5.toml +16 −3
diff --git a/recipes/fcitx5.toml b/recipes/fcitx5.toml
index 3a8eb736..dde447e6 100644
--- a/recipes/fcitx5.toml
+++ b/recipes/fcitx5.toml
@@ -33,8 +33,21 @@
# ENABLE_ENCHANT=Off predicción de palabras por diccionario: no la pide nadie y trae enchant2
# USE_SYSTEMD=Off acá el init es `arje-zero`. Upstream dice que cae a libuv/libdbus, que SÍ
# están — dejarlo en Auto haría que el build busque algo que no existe
-# ENABLE_TEST=Off y `ENABLE_TESTING_ADDONS=Off`, que es su requisito (su propio `option()`
-# lo dice). Los addons de prueba son un frontend falso para el test suite
+# ENABLE_TEST=Off el test suite de fcitx5 no se corre acá.
+# ENABLE_TESTING_ADDONS=On ⚠ **ESTABA EN Off Y ROMPÍA A SUS CONSUMIDORES — corregido 2026-10-20.**
+# Su `option()` dice «Build testing frontend, im and ui addons», que se lee
+# como «cosas de test, fuera», y así lo puse. Pero además de los addons
+# instala el MÓDULO DE CMAKE que los consumidores piden: `fcitx5-hangul`
+# hace `find_package(Fcitx5Module REQUIRED COMPONENTS TestFrontend)` en su
+# CMakeLists:15, **sin condición**, y murió con
+# Could not find … "Fcitx5ModuleTestFrontend" …
+# Fcitx5ModuleTestFrontendConfig.cmake
+# O sea que no es opcional desde fuera: todo motor de fcitx5 lo exige, y
+# apagarlo deja un marco que no puede tener motores. La lección es más
+# general que esta receta: **una perilla que se llama «testing» puede
+# publicar interfaz, y la descripción del `option()` no lo dice.** Medir
+# qué deja de instalarse, no leer cómo se llama.
+# Coste: re-sellar fcitx5, radio 1 (sólo fcitx5-hangul cuelga de él).
# ENABLE_DOC=Off doxygen no está en el corpus
# BUILD_SPELL_DICT=Off construye `en_dict.fscd` para el corrector inglés — depende de enchant
# ENABLE_LIBUUID=Off ⚠ ÉSTA ES UNA DECISIÓN DE ARQUITECTURA DEL CORPUS, no una perilla más.
@@ -125,7 +138,7 @@ cmake -B build -G Ninja -Wno-dev \
-DCMAKE_C_COMPILER="$ZW/cc" -DCMAKE_CXX_COMPILER="$ZW/cxx" -DCMAKE_ASM_COMPILER="$ZW/cc" \
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr \
-DENABLE_X11=Off -DENABLE_ENCHANT=Off -DUSE_SYSTEMD=Off \
- -DENABLE_TEST=Off -DENABLE_TESTING_ADDONS=Off -DENABLE_DOC=Off \
+ -DENABLE_TEST=Off -DENABLE_TESTING_ADDONS=On -DENABLE_DOC=Off \
-DBUILD_SPELL_DICT=Off -DENABLE_LIBUUID=Off \
-DPKG_CONFIG_ARGN=--static
'''