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"]