docs: redbear-full SDDM bring-up campaign tracker

Phase status for making redbear-full compile + run to the SDDM Wayland greeter:
build-system llvm fix, Mesa EGL gate persisted, VirGL priority (all done);
Rust components (redox-drm, redbear-compositor) compile-verified; remaining =
full C/C++ cook campaign (mesa/qt6/kf6/kwin/sddm) + Qt6 null+8 runtime validation
+ boot. Records upstream cherry-pick candidates and component homes.
This commit is contained in:
2026-07-24 13:22:47 +09:00
parent a00c13e5c7
commit 343a3cde9e
+45
View File
@@ -0,0 +1,45 @@
# redbear-full → SDDM Wayland greeter: bring-up campaign
**Goal:** make `redbear-full` compile and wire every component so a run shows the
**SDDM Wayland login prompt**, on either **VirGL** (QEMU virtio-gpu) or **Intel**.
**Runtime chain:** `redox-drm``/scheme/drm/card0` → Mesa (GBM/EGL/llvmpipe) →
KWin (Wayland, `KWIN_DRM_DEVICES=/scheme/drm/card0`) → SDDM greeter (Qt6/Wayland).
Greeter service = `21_sddm.service`; seat = `seatd`.
Grounded in four investigations (2026-07-24): Mesa port, DRM provider, build
efficiency, upstream forks. Key correction to stale memory: the Mesa EGL/DRI
`with_dri` gate is already solved in-tree (redox added to `system_has_kms_drm`);
the frontier has moved to Qt6-on-Wayland (see `QT6-WAYLAND-NULL8-DIAGNOSIS.md`).
## Component homes
- `redox-drm` (DRM provider, `/scheme/drm/card0`): `local/recipes/gpu/redox-drm/` — cargo. Built-in AMD+Intel+VirtIO KMS drivers; ioctl ABI matches KWin + redbear-compositor.
- `mesa` (EGL/GBM/llvmpipe): `local/recipes/libs/mesa/` (26.1.4) + `local/patches/mesa/`.
- Qt6: `local/recipes/qt/{qtbase,qtdeclarative,qtwayland}` + `local/patches/qtbase/`.
- KF6/KWin/SDDM: `local/recipes/kde/`.
- Compositor: `local/recipes/wayland/redbear-compositor/` — cargo.
- Config: `config/redbear-full.toml`; driver match table `local/config/drivers.d/30-graphics.toml`.
## Phase status
| Phase | Item | Status |
|---|---|---|
| 0 | **Build system:** stop llvm21/toolchain re-cook on every relibc/base bump (`TOOLCHAIN_PRESERVE` + `REDBEAR_FORCE_TOOLCHAIN_RECOOK` escape) | **DONE** `f6b09ff7` |
| 1a | **Mesa EGL gate persisted** as tracked patch `08-meson-redox-kms-drm.patch` (was untracked in-place edit, lost on re-extract) | **DONE** `74d5e01b` |
| 1b | Mesa build — clear next blockers (libdrm dep now required; GBM backend; wayland-scanner: patch 07 is stale vs 26.1.4 layout, recipe uses `$WAYLAND_SCANNER` env — verify) | **TODO** (needs cook) |
| 2 | **VirGL determinism:** redox-drm wins virtio-gpu bind (priority-61 vendor 0x1AF4) so KWin gets a real `card0` instead of virtio-gpud's VT scanout | **DONE** `a00c13e5` |
| R | Rust components compile-verified: `redox-drm` ✓, `redbear-compositor` ✓ (x86_64-redox) | **DONE** |
| 3 | Full build campaign: mesa → libdrm → qt6 → kf6 → kwin → sddm; fix each compile failure | **TODO** (needs cook) |
| 4 | Qt6 Wayland `null+8`: candidate patch wired (`qtwaylandscanner-null-guard-listeners.patch`) but NOT runtime-validated in isolation; root cause (why proxy NULL) open — see `QT6-WAYLAND-NULL8-DIAGNOSIS.md` §7 runbook | **TODO** (runtime) |
| 5 | Boot redbear-full (QEMU virtio-gpu, `-m 4G`) → observe SDDM greeter on framebuffer | **TODO** |
## Upstream cherry-pick candidates (enabling, not required yet)
From the upstream-forks sweep — fetch + cherry-pick only if we hit these runtime bugs (they touch operator-active kernel/relibc, so coordinate):
- kernel `eaf50894..486a7818`: **futex-on-shared-memory CoW fix** (Mesa/Wayland shared buffers), poll-hang, read_with_timeout.
- relibc `9867c155..707169e2`: **ld.so lazy PLT relocation** (dlopen of libEGL/libgbm), poll/epoll timeout, UDS-connect outside rootfs.
- base `59cf8189..488da6a1`: ramfs hosting AF_UNIX sockets (Wayland `$XDG_RUNTIME_DIR/wayland-0`).
## Build notes / deficiencies fixed
- Full builds re-cooked llvm21 (~1-2h) on every base/relibc bump — fixed in Phase 0.
- Mesa source/ is an untracked build artifact; durable Mesa changes MUST be patches (Phase 1a).
- More build-system deficiencies expected during the cook campaign — fix comprehensively as found.