Etapa G: mirada-compositor CONSTRUIDO — stack de sesión gráfica COMPLETO
mirada-compositor sellado (store/d8fd9ca…): el compositor Wayland teselante sobre smithay 0.7, que maneja DRM/GBM/EGL/libseat/libinput directo y hospeda a mirada-greeter como cliente. Compila ~255 crates incl. smithay para musl; PIE dinámico. Cierra la cadena de sesión gráfica de tawasuyu sobre hammer: Mesa(iris) + wayland + stack de entrada + compositor + greeter, todo sellado. smithay (default features) enlaza por -sys: drm-sys→libdrm, gbm-sys→mesa, libseat-sys→seatd, input-sys→libinput, libudev-sys→libudev-zero, + xkbcommon→libxkbcommon y pixman (link directo). Dos libs nuevas para cerrar el link: - libxkbcommon 1.7.0 (meson, sin x11/wayland/docs/tools): smithay la enlaza, no sólo dlopen. - pixman 0.44.2 (meson, sin tests/demos): composición CPU de smithay. foreign-av NO enlaza ffmpeg (spawnea el binario en runtime) ⇒ no hizo falta construir ffmpeg. NEEDED del binario: libgbm/libseat/libudev/libinput/libpixman-1/libxkbcommon + musl (libdrm/EGL/ wayland se dlopen-ean). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Delta semántico
Ninguna definición cambió: el cambio es de texto, documentación o datos.
4 archivos · +91 −0
- docs/14-mesa-stack.md +15 −0
- recipes/libxkbcommon.toml +24 −0
- recipes/mirada-compositor.toml +30 −0
- recipes/pixman.toml +22 −0
diff --git a/docs/14-mesa-stack.md b/docs/14-mesa-stack.md
index 0ca61338..6561b1cd 100644
--- a/docs/14-mesa-stack.md
+++ b/docs/14-mesa-stack.md
@@ -93,6 +93,7 @@ Modeladas sobre `recipes/arje-zero.toml` (fuente = monorepo tawasuyu a commit fi
| `arje-splash` | `/usr/lib/arje/arje-splash` | static-musl | sólo DRM dumb-buffer (sin Mesa) |
| `net-bring-up` | `/usr/lib/arje/net-bring-up` | static-musl | ninguna |
| `mirada-greeter` | `/usr/bin/mirada-greeter` | **dynamic** 🟢 **built** | dlopen: EGL/GLES/GBM (mesa) + wayland; link: libpam |
+| `mirada-compositor` | `/usr/bin/mirada-compositor` | **dynamic** 🟢 **built** | link: gbm/seat/udev/input/pixman/xkbcommon; dlopen: EGL/wayland/drm |
`mirada-greeter` 🟢 **CONSTRUIDO Y SELLADO** (Cargo, 314 crates incl. todo el stack wgpu/winit/llimphi
para musl; PIE dinámico). DT_NEEDED real = sólo `libpam.so.0` + musl; **EGL/GLES/GBM/wayland/iris se
@@ -106,6 +107,20 @@ la receta:
- **PAM**: auth-core → `pam`/`pam-sys` hace bindgen sobre `security/pam_appl.h` ⇒ nueva receta
`linux-pam` 1.6.1 (libpam.so + headers, build limpio en musl con gcc de Alpine).
+`mirada-compositor` 🟢 **CONSTRUIDO Y SELLADO** (Cargo, ~255 crates incl. smithay 0.7 para musl; PIE
+dinámico). Es el compositor que maneja DRM/GBM/EGL/libseat/libinput directo y dentro del cual corre
+`mirada-greeter` como cliente. smithay (default features) enlaza `drm-sys`→libdrm, `gbm-sys`→mesa,
+`libseat-sys`→seatd, `input-sys`→libinput, `libudev-sys`→**libudev-zero** (libudev sin udevd, encaja
+con el no-systemd de arje), + `xkbcommon`→**libxkbcommon** y **pixman** (link, no dlopen). Por eso el
+**stack de entrada** nuevo: `libinput` + `libevdev` + `mtdev` (config.sub viejo parcheado al moderno) +
+`libudev-zero` + `libxkbcommon` + `pixman`. `foreign-av` NO enlaza ffmpeg (spawnea el binario en
+runtime) ⇒ no hizo falta construir ffmpeg. NEEDED del binario: libgbm/libseat/libudev/libinput/
+libpixman-1/libxkbcommon + musl.
+
+**El stack de sesión gráfica está COMPLETO**: Mesa(iris) + wayland + el stack de entrada +
+mirada-compositor + mirada-greeter, todo sellado. Falta el ensamblado del rootfs (todas las `.so` +
+config/módulos PAM + datos xkb de xkeyboard-config) y arrancar la sesión.
+
Los otros dos (arje-splash, net-bring-up) no dependen de Mesa.
## Hecho cuando
diff --git a/recipes/libxkbcommon.toml b/recipes/libxkbcommon.toml
new file mode 100644
index 00000000..67602edb
--- /dev/null
+++ b/recipes/libxkbcommon.toml
@@ -0,0 +1,24 @@
+# libxkbcommon 1.7.0 — manejo de keymaps XKB. La enlaza mirada-compositor (smithay, crate xkbcommon).
+# Proyecto meson. Recorte: sin X11, sin docs, sin las utilidades wayland, sin xkbregistry (libxml2),
+# sin tools. Sólo libxkbcommon core. bison para el parser de keymaps.
+# (En runtime usa los datos de xkeyboard-config; no es dep de build.)
+name = "libxkbcommon"
+version = "1.7.0"
+
+[source]
+tarball = "https://github.com/xkbcommon/libxkbcommon/archive/refs/tags/xkbcommon-1.7.0.tar.gz"
+sha256 = "20d5e40dabd927f7a7f4342bebb1e8c7a59241283c978b800ae3bf60394eabc4"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "dynamic"
+zig_version = "0.13.0"
+
+[build.phases]
+configure = "meson setup output --prefix=/usr --buildtype=release -Denable-x11=false -Denable-docs=false -Denable-wayland=false -Denable-xkbregistry=false -Denable-tools=false"
+compile = "ninja -C output"
+install = "DESTDIR=/out ninja -C output install"
+
+[deps]
+build = ["meson", "samurai", "python3", "pkgconf", "bison"]
diff --git a/recipes/mirada-compositor.toml b/recipes/mirada-compositor.toml
new file mode 100644
index 00000000..c596f69f
--- /dev/null
+++ b/recipes/mirada-compositor.toml
@@ -0,0 +1,30 @@
+# mirada-compositor — el compositor Wayland teselante de mirada (sobre smithay). Es el Cuerpo que
+# maneja DRM/GBM/EGL/libseat/libinput directo y dentro del cual corre `mirada-greeter` como cliente.
+# Cierra la cadena de sesión gráfica de tawasuyu.
+#
+# Receta Cargo (patrón arje-zero/mirada-greeter): monorepo tawasuyu al commit fijado 9967b02c (reusa
+# el árbol vendoreado). `-p mirada-compositor`, link DINÁMICO (smithay enlaza libdrm/gbm/seat/input
+# + dlopen de EGL/wayland/xkbcommon).
+#
+# Sin la fase custom del greeter: mirada-compositor NO usa llimphi-ui ⇒ no arrastra accesskit/atspi
+# (nada de LOCKSTEP_XML_PATH). auth-core → PAM sí (linux-pam). `foreign-av` NO enlaza ffmpeg: spawnea
+# el BINARIO ffmpeg en runtime (sólo si wallpaper=video), así que no hace falta construir ffmpeg.
+#
+# Build-deps que smithay (default features) enlaza por -sys/pkg-config: drm-sys→libdrm, gbm-sys→mesa,
+# libseat-sys→seatd, input-sys→libinput, libudev-sys→libudev-zero. wayland-server.pc → libffi/expat.
+name = "mirada-compositor"
+version = "0.0.1"
+
+[source]
+repo = "gitea@git.tawasuyu.net:tawasuyu/tawasuyu.git"
+commit = "9967b02cf597df6d065edbad8d6669b5653d4928"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "dynamic"
+flags = ["-p", "mirada-compositor"]
+
+[deps]
+# libxkbcommon (smithay lo enlaza, no sólo dlopen) + pixman (composición CPU de smithay).
+build = ["mesa", "wayland", "wayland-protocols", "libdrm", "seatd", "linux-pam", "libinput", "libudev-zero", "libevdev", "mtdev", "libxkbcommon", "pixman", "expat", "zlib", "zstd", "libffi", "pkgconf"]
diff --git a/recipes/pixman.toml b/recipes/pixman.toml
new file mode 100644
index 00000000..c2de5d9e
--- /dev/null
+++ b/recipes/pixman.toml
@@ -0,0 +1,22 @@
+# pixman 0.44.2 — rasterizado de píxeles por software. La enlaza mirada-compositor (smithay lo usa
+# para composición/recorte en CPU). Proyecto meson, sin deps externas. Sin tests/demos/gtk.
+name = "pixman"
+version = "0.44.2"
+
+[source]
+tarball = "https://gitlab.freedesktop.org/pixman/pixman/-/archive/pixman-0.44.2/pixman-pixman-0.44.2.tar.gz"
+sha256 = "1ac33e229549f6341a677d530d1944431139d222ecad1554818788ae9ef32f6f"
+
+[build]
+compiler = "zig-cc"
+target = "x86_64-linux-musl"
+link = "dynamic"
+zig_version = "0.13.0"
+
+[build.phases]
+configure = "meson setup output --prefix=/usr --buildtype=release -Dtests=disabled -Ddemos=disabled -Dgtk=disabled"
+compile = "ninja -C output"
+install = "DESTDIR=/out ninja -C output install"
+
+[deps]
+build = ["meson", "samurai", "python3", "pkgconf"]