Con `atk` arreglado, atuq llegó más lejos y murió igual, ahora con Pango:
GLib-GObject-CRITICAL: cannot register existing type 'PangoFontMap'
… decenas de líneas … tipo '<invalid>'
MISMO CUADRO, CULPABLE DISTINTO Y MÁS GRANDE. `gtk3` produce DOS objetos compartidos —libgtk-3.so y
libgdk-3.so— y libxul declara NEEDED las dos, así que se cargan siempre juntas. Con las variantes
ESTÁTICAS de sus deps, cada una se llevaba adentro su propia copia. Medido con el mismo instrumento
que cazó a atk, `nm -D --defined-only`, preguntando quién DEFINE cada símbolo:
pango_font_map_get_type → libgdk-3.so, libgtk-3.so, libgailutil-3.so
cairo_create → libgdk-3.so, libgtk-3.so
gdk_pixbuf_get_type → libgdk-3.so, libgtk-3.so
hb_buffer_create → libgdk-3.so, libgtk-3.so, libgailutil-3.so
Y se comprobó el otro lado: libxul NO embebe ninguna —enlaza libgtk-3/libgdk-3 como debe—, así que
la duplicación es toda interna del par GTK3.
Cuatro variantes nuevas: harfbuzz-shared, cairo-shared, gdk-pixbuf-shared, pango-shared. Sólo cambia
el modo de librería; se conservan todos los switches del canónico para no arrastrar deps nuevas.
DOS DEUDAS ANOTADAS, NO OLVIDADAS: `fribidi` y `pixman` siguen estáticos —no existe variante— pero
quedan embebidos en UNA sola .so cada uno, así que no hay copia que colisione; y `libepoxy` sí queda
en las dos, y se deja porque no registra tipos de GObject ni mantiene estado global. Si algún día
otra .so del mismo proceso los embebe, vuelve el cuadro.
`firefox` swapea las mismas cuatro: declarar las ESTÁTICAS junto a un gtk3 que trae las compartidas
son dos artefactos peleando por el mismo `pango.pc`, que es la otra forma conocida de este fallo.
Y `xkeyboard-config` SUBE AL CORPUS. Existía idéntica en las cuatro colas de escritorio (un solo md5
entre las cuatro, verificado antes de mover) y atuq, que vive en el corpus, no podía alcanzar
ninguna: sibling-first y después el catálogo padre, nunca una cola hermana. Sin sus datos el
navegador ni pinta («xkbcommon: failed to add default include path /usr/share/X11/xkb»). Mismo hash
en el corpus que en las colas ⇒ cero rebuilds, y las copias de las colas se quedan donde están.
39 lines
2.1 KiB
TOML
39 lines
2.1 KiB
TOML
# ══ PROMOVIDA AL CORPUS DESDE LAS COLAS (2026-09-05) ═══════════════════════════════════════════
|
|
# Esta receta existía IDÉNTICA en las cuatro colas de escritorio (incoming-{kde,gnome,wlr,cosmic}):
|
|
# un solo md5 entre las cuatro, verificado antes de mover. Sube al corpus por la misma razón que
|
|
# `mpv`: una receta resuelve sibling-first y después el catálogo PADRE, nunca una cola hermana, así
|
|
# que lo que comparten varias imágenes tiene que vivir acá o no lo alcanzan.
|
|
#
|
|
# Lo destapó `atuq`, que vive en el corpus y por eso no podía llegar a ninguna de las cuatro copias.
|
|
# El síntoma es el mismo que ya cita el perfil de sway en `targets.toml`, y el navegador ni siquiera
|
|
# llega a pintar:
|
|
# xkbcommon: ERROR: failed to add default include path /usr/share/X11/xkb
|
|
#
|
|
# Las copias de las colas se dejan donde están A PROPÓSITO: resuelven sibling-first, o sea que
|
|
# siguen usando la suya, con el MISMO ArtifactHash ⇒ cero rebuilds y cero riesgo para las cuatro
|
|
# imágenes ya cerradas. Barrerlas es otra unidad de trabajo, no un efecto colateral de ésta.
|
|
# xkeyboard-config 2.44 — datos de layouts de teclado XKB + `xkeyboard-config.pc` (variable xkb_base).
|
|
# plasma-desktop lo EXIGE en ConfigureChecks (pkg_get_variable xkb_base) y kwin/Qt-wayland lo usan en
|
|
# runtime (/usr/share/X11/xkb; sin él: "xkbcommon: failed to add default include path /usr/share/X11/xkb").
|
|
# Meson, sin compilación real (instala datos + .pc). nls off (evita gettext); sin libxml2 (validación).
|
|
name = "xkeyboard-config"
|
|
version = "2.44"
|
|
license = "MIT"
|
|
|
|
[source]
|
|
tarball = "https://www.x.org/releases/individual/data/xkeyboard-config/xkeyboard-config-2.44.tar.xz"
|
|
sha256 = "54d2c33eeebb031d48fa590c543e54c9bcbd0f00386ebc6489b2f47a0da4342a"
|
|
|
|
[build]
|
|
compiler = "zig-cc"
|
|
target = "x86_64-linux-musl"
|
|
link = "dynamic"
|
|
|
|
[build.phases]
|
|
configure = "meson setup output --prefix=/usr -Dnls=false -Dcompat-rules=false"
|
|
compile = "ninja -C output"
|
|
install = "DESTDIR=/out ninja -C output install"
|
|
|
|
[deps]
|
|
build = ["meson", "samurai", "python3", "pkgconf"]
|