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…
licencias: 936 de 1141 (82%) — detección por evidencia, con sus dos imprecisiones declaradas
1# ibus 1.5.34 — el bus de métodos de entrada (teclados de chino/japonés/coreano, emoji, Unicode).
2# De acá sale el typelib `IBus-1.0`.
3#
4# POR QUÉ ENTRA, y es el caso más claro de la tanda: gnome-shell lo importa desde JavaScript **sin
5# condicional** (`js/misc/dependencies.js`: `import 'gi://IBus?version=1.0'`), aunque el usuario no
6# use ningún método de entrada. El panel de teclado del shell habla con ibus siempre. Dep de RUNTIME
7# invisible al grafo de build — el mismo patrón que AccountsService, Gdm, Geoclue y GWeather.
8#
9# LO QUE SE CONSTRUYE ES LA LIBRERÍA Y EL BUS, NO EL ESCRITORIO DE ibus. Casi todos los
10# `--disable-*` de abajo apagan piezas que dependen de cosas que esta distro no tiene y que el shell
11# no consulta:
12# --disable-gtk2/3/4 los módulos de método de entrada para GTK. GTK3 no está en el
13# corpus (decisión de X11-al-tacho) y el de GTK4 no hace falta:
14# GTK4 habla `text-input` de Wayland directo con el compositor.
15# ⚠ OJO CON EL TEXTO DE AYUDA DE UPSTREAM: dice `--enable-gtk4`
16# y `--enable-wayland`, lo que sugiere que están APAGADAS por
17# defecto. No lo están: `enable_gtk4=yes` y `enable_wayland=yes`
18# son los defaults reales (configure.ac:277 y :299). Sin
19# `--disable-gtk4` explícito el configure corta pidiendo gtk4.
20# La ayuda miente; el default manda.
21#
22# ⚠ `--enable-wayland` VA PRENDIDA, y no por gusto. Empezó apagada —el módulo Wayland es para que el
23# demonio de ibus hable con un compositor, y el shell implementa `text-input` por su cuenta— pero con
24# `--disable-wayland` el build MUERE igual: `tools/main.c` incluye `<wayland-client.h>` y llama
25# `wl_display_connect`/`wl_display_disconnect` **sin ningún `#ifdef`** (:1260), mientras que el
26# `WAYLAND_LIBS` que resolvería esos símbolos sólo se agrega si la opción está encendida. Es un bug
27# de upstream en su propia configuración «sin Wayland». Prenderla es más honesto que parchear el
28# `tools/`: esta distro ES Wayland. Arrastra `libxkbcommon`, que su PKG_CHECK pide junto a
29# `wayland-client`.
30# --disable-xim el servidor XIM. Es X11 puro.
31# --disable-setup `ibus-setup`, una GUI en Python+GTK3.
32# --disable-python2 / --disable-python-library / --disable-dbus-python-check
33# bindings de Python 2. No hay Python 2 y no va a haber.
34# --disable-dconf --enable-memconf ibus guarda su configuración en dconf por defecto; dconf no
35# está en el corpus (ya lo esquivó gdm por la misma razón).
36# `memconf` es el backend EN MEMORIA que trae upstream para
37# exactamente este caso: la config no persiste entre sesiones,
38# que para un escritorio sin métodos de entrada configurados es
39# la diferencia entre nada y nada.
40# --disable-systemd-services acá PID1 es arje-zero.
41# --disable-appindicator pide dbusmenu-glib/dbusmenu-gtk3 (bandeja legacy de Ubuntu).
42# --disable-libnotify sirve para que el DEMONIO avise «se cambió el método de
43# entrada» por notificación de escritorio. libnotify no está en
44# el corpus, y las notificaciones del escritorio las sirve el
45# propio gnome-shell.
46# --disable-engine el motor `simple` (mapas de teclado de teclas muertas). Va
47# junto con emoji-dict: son datos y lógica de método de entrada,
48# no la librería.
49# --disable-emoji-dict el diccionario de emoji se compila desde los XML de CLDR y
50# `/usr/share/unicode/emoji`, datos que no están en el corpus.
51# Se pierde el selector de emoji de ibus, no el typelib.
52# --disable-unicode-dict su hermano: el índice de nombres de caracteres se compila desde
53# los ficheros UCD (`NamesList.txt`, `Blocks.txt` de
54# `/usr/share/unicode/ucd`). Apagar emoji-dict NO lo apaga —son
55# dos opciones distintas, y el configure aborta por la segunda
56# después de pasar la primera.
57# --disable-tests --disable-gtk-doc --disable-vala
58#
59# Las comprobaciones de X11/XFixes y de libevdev/libudev son BLANDAS en el configure.ac
60# (:778 y :785 no abortan, sólo definen un condicional), así que no hace falta apagarlas ni
61# satisfacerlas: se resuelven en "no" solas.
62#
63# ══ LA DEP QUE NO SE VE VENIR: `x11-compose-data` ══════════════════════════════════════════════
64# ibus COMPILA la tabla de teclas muertas de X11 dentro de libibus. `gen-internal-compose-table`
65# (src/gencomposetable.c:70) lee un fichero `Compose` en tiempo de build y lo convierte en un
66# GResource que entra en `ibusresources.c`; ese paso es INCONDICIONAL en su Makefile.am:310 y no hay
67# `--disable-` que lo evite. Sin datos el build muere con
68# `Failed to open file "/X11/locale/en/Compose"`.
69#
70# Los datos viven en el tarball de libX11 —por historia, no por necesidad técnica— así que hay una
71# receta aparte, `x11-compose-data`, que extrae SÓLO los ficheros de locale y no compila una línea
72# de X11. Es la tensión de un escritorio Wayland-only con un mundo Unix cuya tabla de composición
73# sigue publicándose dentro de X11, y queda escrita ahí.
74#
75# También pide `iso-codes` (nombres de idioma para el selector de método de entrada), que ya estaba.
76#
77# ISLA DINÁMICA: el typelib nombra `libibus-1.0.so.5` y gjs la dlopea.
78name = "ibus"
79version = "1.5.34"
80license = "LGPL-2.1"
81
82[source]
83tarball = "https://github.com/ibus/ibus/releases/download/1.5.34/ibus-1.5.34.tar.gz"
84sha256 = "12a72210ce5250f8a66df562a75e034e67b2bce74c4df2983dc86d1154894943"
85
86[build]
87compiler = "zig-cc"
88target = "x86_64-linux-musl"
89link = "dynamic"
90
91[build.phases]
92configure = '''
93set -e
94PKG_CONFIG_PATH=/usr/lib/pkgconfig ./configure --prefix=/usr \
95 --enable-introspection --enable-memconf \
96 --disable-gtk2 --disable-gtk3 --disable-gtk4 --enable-wayland \
97 --disable-xim --disable-dconf \
98 --disable-setup --disable-python2 --disable-python-library \
99 --disable-dbus-python-check --disable-systemd-services \
100 --disable-appindicator --disable-libnotify --disable-engine \
101 --disable-emoji-dict --disable-unicode-dict --disable-tests \
102 --disable-gtk-doc --disable-vala --disable-nls
103'''
104compile = "make"
105install = "DESTDIR=/out make install"
106
107[deps]
108build = ["make", "pkgconf", "python3", "py3-setuptools", "gobject-introspection", "gi-foreign-girs", "glib", "glib-introspected", "iso-codes", "x11-compose-data", "wayland", "wayland-protocols", "libxkbcommon", "dbus-shared", "libffi", "pcre2", "zlib-shared", "expat"]