wlr: fuentes y XKB DECLARADAS en el perfil — la captura sale bit a bit idéntica

`dejavu-fonts` y `xkeyboard-config` entran en `recipes/incoming-wlr/` y en las raíces de
`escritorio-sway`. La clausura pasa de 123 a 125 y ambas ya estaban selladas: cero builds.

POR QUÉ TENÍAN QUE SER RAÍCES Y NO PODÍAN LLEGAR POR CLAUSURA. Son DATOS, no binarios: ninguna
receta depende de una fuente ni de un mapa de teclado para COMPILAR. El grafo puede seguir todas las
aristas que quiera y no va a alcanzarlas nunca. Si no se declaran, no están — y el perfil sigue
dando 100%, porque mide la clausura de las raíces declaradas.

Copias BYTE-IDÉNTICAS a las de incoming-kde, a propósito. Ya había tres copias iguales de
xkeyboard-config (kde, gnome, cosmic) y dos de dejavu-fonts (kde, cosmic); ésta es la cuarta. No se
consolidan al corpus ahora porque eso toca las colas de otros tres frentes que otros agentes
trabajan. Mantenerlas idénticas deja esa consolidación como un `git mv` trivial en vez de un merge:
cuatro ficheros iguales se unifican de un tirón, cuatro casi-iguales exigen revisión.

VERIFICADO de punta a punta, no por el log: rootfs rehidratado DESDE CERO con sólo lo que la
clausura declara (123/123), y `sway-headless.sh` sin una línea de inyección manual de fuentes ni
XKB. Cero errores de xkbcommon, cero de fcft. La captura resultante tiene el MISMO sha256 que la de
ayer con todo inyectado a mano — 1280x720, 383 colores. La declaración es exactamente equivalente a
la inyección, y el pipeline reproduce.

Queda como deuda real (no de declaración): libz.so.1 / libexpat.so.1 / libffi.so.8, que sway pide
por estar enlazado dinámico y el corpus sólo produce como `.a`. Y `fonts.conf` NO era deuda: lo trae
el propio artefacto de fontconfig.

Perfil: escritorio-sway 123/125. Los 2 que faltan son strace (choca con los linux-headers del lab) y
rsync (404 de upstream), ninguno del escritorio.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016v9ozVm44p6DB7EMXeZK4o
This commit is contained in:
Sergio
2026-08-26 18:03:46 +00:00
co-authored by Claude Opus 5
parent fd2dc39a83
commit 428ad80b24
4 changed files with 60 additions and 7 deletions
+6
View File
@@ -179,6 +179,12 @@ paquetes = [
# bindings C++, que es deuda aparcada por diseño. Medido, no supuesto.)
"foot", # emulador de terminal (misma familia que fcft/tllist, ya en la clausura)
"fuzzel", # lanzador de aplicaciones
# ── DATOS, no binarios: nadie los declara como dep de build, así que SÓLO entran como raíces ──
# Ninguna receta depende de una fuente ni de un mapa de teclado para COMPILAR, de modo que la
# clausura no puede alcanzarlos por más aristas que siga. Si no están acá, no están.
"dejavu-fonts", # sin UNA fuente, foot muere con «monospace::size=8: failed to match font»
"xkeyboard-config", # sin datos XKB: «xkbcommon: ERROR: failed to add default include path
# /usr/share/X11/xkb», y sway no completa el seat
"swaybg", # fondo de escritorio
"swaylock", # bloqueo de pantalla (con PAM: linux-pam SÍ está en el corpus)
"swayidle", # apagado por inactividad
+22
View File
@@ -0,0 +1,22 @@
# dejavu-fonts 2.37 — fuentes TTF. Qt ya no trae fuentes ("QFontDatabase: Cannot find font directory");
# sin ellas el escritorio renderiza sin texto legible. Data-only: copia los .ttf a /usr/share/fonts.
name = "dejavu-fonts"
version = "2.37"
license = "MIT"
[source]
tarball = "https://github.com/dejavu-fonts/dejavu-fonts/releases/download/version_2_37/dejavu-fonts-ttf-2.37.tar.bz2"
sha256 = "fa9ca4d13871dd122f61258a80d01751d603b4d3ee14095d65453b4e846e17d7"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "dynamic"
[build.phases]
configure = "true"
compile = "true"
install = "mkdir -p /out/usr/share/fonts/dejavu && cp ttf/*.ttf /out/usr/share/fonts/dejavu/"
[deps]
build = []
@@ -0,0 +1,24 @@
# 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"]
+8 -7
View File
@@ -23,13 +23,14 @@
# produce los `.a`. `libz.so.1` está como artefacto aparte (`zlib-shared`); las otras dos hoy
# sólo existen en `.dev-fs/alpine`. Sin ellas sway ni arranca: «Error relocating /usr/bin/sway:
# XML_ParserFree: symbol not found».
# · xkeyboard-config — «xkbcommon: ERROR: failed to add default include path /usr/share/X11/xkb».
# Sway sigue vivo pero no completa el seat. HAY receta, en incoming-{kde,gnome,cosmic}; en la
# cola de wlr no, así que el perfil no la alcanza.
# · dejavu-fonts — el rootfs no tiene UNA fuente. `foot` muere con «monospace::size=8: failed to
# match font». Misma historia: la receta existe en incoming-{kde,cosmic} y no en la de wlr.
# · /etc/passwd y /etc/fonts/fonts.conf — sin el primero yambar hace getpwuid y falla; sin el
# segundo fontconfig no mira /usr/share/fonts aunque las fuentes estén.
# · /etc/passwd — sin él yambar hace getpwuid y falla. (`fonts.conf` NO hace falta: lo trae el
# propio artefacto de fontconfig; el problema eran las fuentes, no su configuración.)
#
# YA NO hace falta inyectar `xkeyboard-config` ni `dejavu-fonts`: desde el 2026-08-26 están
# DECLARADAS como raíces de `escritorio-sway` y las recetas viven en `recipes/incoming-wlr/`. Antes
# existían sólo en las colas de kde/gnome/cosmic, así que el perfil no las alcanzaba y el escritorio
# arrancaba sin datos XKB y sin una sola fuente. Prueba de que la declaración es equivalente a la
# inyección manual: la captura resultante es **bit a bit idéntica**, mismo sha256.
#
# ── BASH NO CORRE EN ESTE ROOTFS, Y ASÍ ES COMO SE VE ──────────────────────────────────────────
# `/bin/bash` está enlazado dinámico contra ncurses y el corpus sólo produce `libncurses.a`: