Etapa G: mirada-greeter CONSTRUIDO — primera app gráfica tawasuyu sobre el stack

mirada-greeter sellado (store/41fdd015…): el greeter/login de mirada (runtime Elm Llimphi
sobre winit + wgpu) compila ENTERO para musl — 314 crates incl. wgpu/winit/naga/smithay/
llimphi-* — y enlaza dinámico. Valida la cadena completa: stack gráfico (wayland+mesa) →
app GUI tawasuyu real.

Binario: PIE dinámico, DT_NEEDED = sólo libpam.so.0 + musl; EGL/GLES/GBM/wayland/iris se
dlopen-ean en runtime (wgpu/winit), así que el rootfs debe tenerlas (mesa+wayland ya selladas).

Dos blockers resueltos en el camino:
- atspi/accesskit (a11y, vía accesskit_winit): zbus-lockstep-macros #[validate] PANICA
  («File has no extension.») al escanear xml/ de atspi-common y hacer .extension().expect()
  sobre el SUBDIR xml/schemas/ (lib.rs:147). Fix: fase compile custom (réplica de la fase
  Cargo de hammer) que setea LOCKSTEP_XML_PATH a un dir con sólo los .xml.
- 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).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-27 03:45:48 -04:00
co-authored by Claude Opus 4.8
parent 53bc5b3734
commit 11386c0a59
3 changed files with 93 additions and 4 deletions
+14 -4
View File
@@ -92,11 +92,21 @@ 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/lib/arje/mirada-greeter-llimphi` | **dynamic** | EGL/GLES/GBM (mesa) + wayland + libseat |
| `mirada-greeter` | `/usr/bin/mirada-greeter` | **dynamic** 🟢 **built** | dlopen: EGL/GLES/GBM (mesa) + wayland; link: libpam |
`mirada-greeter` es el único que enlaza Mesa dinámico ⇒ **ya DESBLOQUEADO** (Mesa 24.0.9 sellada).
Próximo paso: receta Cargo de `mirada-greeter` con deps gráficas EGL/GLES/GBM (mesa) + wayland +
libseat, link dinámico. Los otros dos (arje-splash, net-bring-up) no dependen de Mesa.
`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
dlopen-ean en runtime** (wgpu/winit) ⇒ el rootfs debe TENERLAS presentes pero no son NEEDED. Fixes de
la receta:
- **atspi/accesskit** (a11y, vía `accesskit_winit`): `zbus-lockstep-macros` `#[validate]` PANICA
(«File has no extension.») porque escanea `xml/` de atspi-common y hace `.extension().expect()` en
el SUBDIR `xml/schemas/` (zbus-lockstep-macros/src/lib.rs:147). Fix = fase `compile` custom que
apunta `LOCKSTEP_XML_PATH` a un dir con sólo los `.xml`. (Más limpio a futuro: hacer accesskit
OPCIONAL en llimphi-ui — el greeter no necesita a11y.)
- **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).
Los otros dos (arje-splash, net-bring-up) no dependen de Mesa.
## Hecho cuando