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>
This commit is contained in:
2026-06-27 07:06:41 -04:00
co-authored by Claude Opus 4.8
parent 254c5a9cc7
commit 673bdde69f
4 changed files with 91 additions and 0 deletions
+15
View File
@@ -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) | | `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 | | `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-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 `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 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 - **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). `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. Los otros dos (arje-splash, net-bring-up) no dependen de Mesa.
## Hecho cuando ## Hecho cuando
+24
View File
@@ -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"]
+30
View File
@@ -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"]
+22
View File
@@ -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"]