Files
takana/recipes/atk.toml
T
Sergio 7c58f6b62e plataforma Gecko: atk + GTK3 Wayland-only — la base que comparten Firefox, Waterfox y Zen
GTK3 no existía en NINGUNA cola y es el único toolkit de Gecko en Linux. Como
Waterfox y Zen son forks de Gecko, los tres navegadores consumen exactamente esta
misma pieza: una receta sostiene a los tres. Por eso va al CORPUS y no a una cola
—una receta resuelve sibling-first y después el catálogo padre, nunca una cola
hermana—, que es la lección de mpv y justo lo que OBS no pudo cumplir al quedar
atado a incoming-kde por Qt6. La plataforma nace bien puesta para que los tres
navegadores no repitan ese error.

Al medir el cierre antes de escribir, TODO estaba ya en el corpus salvo `atk`. Un
ladrillo chico destrabando una pieza grande: por eso atk fue primero.

WAYLAND-ONLY de verdad, no de intención: -Dx11_backend=false. A diferencia de OBS
—que exigía find_package(X11) incondicional— GTK3 sí deja apagarlo, y eso saca
libX11/libXext/libXi/libXrandr/… del cierre. Esa cadena vive sólo en incoming-kde
y meterla en el corpus la pondría en las CINCO imágenes.
Verificado en el artefacto: los .pc son gdk-wayland-3.0 y gtk+-wayland-3.0 (no hay
gdk-x11-3.0), libgtk-3.so.0 no enlaza X11 ni xcb, y libgdk-3.so trae NEEDED
libwayland-client/cursor/egl + libxkbcommon.

⚠ Consecuencia escrita en la receta: un Firefox contra este GTK3 no correrá como
cliente X11 ni bajo Xwayland. Bajo Wayland nativo sí. Es la postura de la distro
aplicada al navegador, no un accidente.

Las deps van a las variantes -shared EN LUGAR DE las estáticas, nunca junto a
ellas: libgtk-3.so es un objeto compartido y un .a sin PIC adentro da
`relocation R_X86_64_32 against png_default_write_data`. Se sustituye y no se suma
porque ambas variantes instalan los MISMOS .pc y cabeceras — declarar las dos
serían dos artefactos peleando por lib/pkgconfig/glib-2.0.pc.
2026-09-04 17:51:08 +00:00

45 lines
2.8 KiB
TOML

# ATK 2.38.0 — la capa de accesibilidad de GTK. Primer ladrillo de la PLATAFORMA GECKO.
#
# ══ POR QUÉ ENTRA AHORA: ES LO ÚNICO QUE LE FALTA A GTK3 ═══════════════════════════════════════
# Firefox —y con él Waterfox y Zen, que son forks de Gecko— sólo tiene un toolkit en Linux: GTK3.
# GTK3 no existía en ninguna cola, y al medir su cierre resultó que **todo lo demás YA está en el
# corpus** (glib, cairo, pango, gdk-pixbuf, libepoxy, harfbuzz, fribidi, libxml2, wayland,
# wayland-protocols, libxkbcommon). El único hueco era éste. Un ladrillo chico destrabando una pieza
# grande: por eso va primero.
#
# ══ AL CORPUS, Y NO A UNA COLA — LA REGLA QUE OBS NO PUDO CUMPLIR ══════════════════════════════
# Las tres —Firefox, Waterfox, Zen— comparten esta plataforma entera, y una app compartida sólo se
# alcanza desde el CORPUS: una receta resuelve sibling-first y después el catálogo padre, nunca una
# cola hermana. Es exactamente la lección que dejó mpv, y lo contrario de lo que le pasó a OBS, que
# quedó atado a `incoming-kde` porque Qt6 vive sólo ahí. La plataforma Gecko nace bien puesta para
# que los tres navegadores no repitan ese error.
#
# ══ SÓLO GObject, SIN X11 NI GI ════════════════════════════════════════════════════════════════
# `-Dintrospection=false`: la introspección exige gobject-introspection y sólo la usan los bindings
# dinámicos (gjs/PyGObject). GTK3 la consume en C, y un consumidor en C no la necesita. Es también
# lo que evita repetir la torre de [[gnome-introspection-dinamica]] sin razón.
# `-Ddocs=false`: gtk-doc no está en el corpus y la documentación no entra al artefacto.
name = "atk"
version = "2.38.0"
license = "LGPL-2.1-or-later"
[source]
tarball = "https://download.gnome.org/sources/atk/2.38/atk-2.38.0.tar.xz"
sha256 = "ac4de2a4ef4bd5665052952fe169657e65e895c5057dffb3c2a810f6191a0c36"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
# DINÁMICO: GTK3 es una librería compartida y ATK entra en su cierre; un `.a` no-PIC dentro de
# `libgtk-3.so` es el cuadro de gdk-pixbuf otra vez.
link = "dynamic"
flags = []
[build.phases]
configure = "PYTHONPATH=/usr/lib/python3.12/site-packages meson setup output --prefix=/usr --buildtype=release -Ddefault_library=shared -Dintrospection=false -Ddocs=false"
compile = "PYTHONPATH=/usr/lib/python3.12/site-packages ninja -C output"
install = "PYTHONPATH=/usr/lib/python3.12/site-packages DESTDIR=/out meson install -C output --no-rebuild"
[deps]
build = ["meson", "samurai", "python3", "pkgconf", "glib", "pcre2", "libffi", "zlib"]