From 343a3cde9e20612e2345c74a9c8076751934e7fb Mon Sep 17 00:00:00 2001 From: vasilito Date: Fri, 24 Jul 2026 13:22:47 +0900 Subject: [PATCH] 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. --- local/docs/REDBEAR-FULL-SDDM-BRINGUP.md | 45 +++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 local/docs/REDBEAR-FULL-SDDM-BRINGUP.md diff --git a/local/docs/REDBEAR-FULL-SDDM-BRINGUP.md b/local/docs/REDBEAR-FULL-SDDM-BRINGUP.md new file mode 100644 index 0000000000..b95ed3fb28 --- /dev/null +++ b/local/docs/REDBEAR-FULL-SDDM-BRINGUP.md @@ -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.