From 428ad80b2405299de354872a4c426d67500ed90c Mon Sep 17 00:00:00 2001 From: Sergio Date: Wed, 26 Aug 2026 18:03:46 +0000 Subject: [PATCH] =?UTF-8?q?wlr:=20fuentes=20y=20XKB=20DECLARADAS=20en=20el?= =?UTF-8?q?=20perfil=20=E2=80=94=20la=20captura=20sale=20bit=20a=20bit=20i?= =?UTF-8?q?d=C3=A9ntica?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `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) Claude-Session: https://claude.ai/code/session_016v9ozVm44p6DB7EMXeZK4o --- docs/state/targets.toml | 6 ++++++ recipes/incoming-wlr/dejavu-fonts.toml | 22 ++++++++++++++++++++ recipes/incoming-wlr/xkeyboard-config.toml | 24 ++++++++++++++++++++++ scripts/wlr/sway-headless.sh | 15 +++++++------- 4 files changed, 60 insertions(+), 7 deletions(-) create mode 100644 recipes/incoming-wlr/dejavu-fonts.toml create mode 100644 recipes/incoming-wlr/xkeyboard-config.toml diff --git a/docs/state/targets.toml b/docs/state/targets.toml index b0c70c65..9efc8656 100644 --- a/docs/state/targets.toml +++ b/docs/state/targets.toml @@ -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 diff --git a/recipes/incoming-wlr/dejavu-fonts.toml b/recipes/incoming-wlr/dejavu-fonts.toml new file mode 100644 index 00000000..4522df39 --- /dev/null +++ b/recipes/incoming-wlr/dejavu-fonts.toml @@ -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 = [] diff --git a/recipes/incoming-wlr/xkeyboard-config.toml b/recipes/incoming-wlr/xkeyboard-config.toml new file mode 100644 index 00000000..ea61893c --- /dev/null +++ b/recipes/incoming-wlr/xkeyboard-config.toml @@ -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"] diff --git a/scripts/wlr/sway-headless.sh b/scripts/wlr/sway-headless.sh index d8309e1d..2b7243ca 100755 --- a/scripts/wlr/sway-headless.sh +++ b/scripts/wlr/sway-headless.sh @@ -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`: