diff --git a/local/docs/DESKTOP-STACK-CURRENT-STATUS.md b/local/docs/DESKTOP-STACK-CURRENT-STATUS.md new file mode 100644 index 00000000..9988db6b --- /dev/null +++ b/local/docs/DESKTOP-STACK-CURRENT-STATUS.md @@ -0,0 +1,129 @@ +# Red Bear OS Desktop Stack — Current Status + +## Purpose + +This document is the **current build/runtime truth summary** for the Red Bear desktop stack. + +It is intentionally narrower than the historical Wayland and KDE roadmap docs. Its job is to answer: + +- what the current desktop stack actually builds, +- what the tracked desktop profiles currently expose, +- what is only build-visible, +- what is runtime-proven, +- and what still blocks a trustworthy Wayland/KDE session claim. + +Use this document as the current-state summary. Use `docs/03-WAYLAND-ON-REDOX.md` and +`docs/05-KDE-PLASMA-ON-REDOX.md` mainly as design history, rationale, and deeper porting notes. + +## Current State Summary + +The Red Bear desktop stack is no longer blocked on basic Qt/Wayland package availability. + +The repo currently proves: + +- `libwayland` builds successfully against the current relibc/Red Bear compatibility surface +- Qt6 core modules build (`qtbase`, `qtdeclarative`, `qtsvg`, `qtwayland`) +- the current relibc overlay and its fresh-source reapply workflow are strong enough to support the + rebuilt Qt/Wayland stack +- D-Bus builds and is wired into desktop-facing profiles +- `seatd` builds and is wired into the KDE-facing runtime profile +- the `redbear-wayland`, `redbear-full`, and `redbear-kde` profiles exist as real tracked product + surfaces + +The repo does **not** yet prove a generally trustworthy desktop runtime. + +The main gap is no longer “can we build the packages?” The main gap is “which parts of the desktop +stack are runtime-trusted rather than just build-visible?” + +## Status Matrix + +| Area | Current state | What that means | +|---|---|---| +| `libwayland` | **builds** | relibc/Wayland-facing compatibility is materially better than before | +| Qt6 core stack | **builds** | `qtbase`, `qtdeclarative`, `qtsvg`, `qtwayland` are in-tree build surfaces | +| KF6 frameworks | **mixed but strong build progress** | many frameworks build; some higher-level pieces still rely on bounded or reduced recipes | +| KWin / Plasma session | **experimental / incomplete runtime** | recipe/config wiring exists, but runtime trust still trails build success | +| Mesa / hardware graphics path | **partial** | software path exists; hardware-validated Wayland graphics path still lags | +| Input stack | **build-visible and partly wired** | `evdevd`, `libevdev`, `libinput`, `seatd` are present, but runtime trust is still narrower than full desktop support | +| D-Bus session/system plumbing | **builds / wired into profiles** | present in desktop-facing profiles, but not equal to full desktop integration completeness | + +## Profile View + +### `redbear-wayland` + +Role: + +- narrow runtime validation profile for Wayland bring-up + +Current truth: + +- it is the current first-class profile for a bounded Wayland runtime path +- it should be used for small-scope compositor/runtime validation, not broad desktop claims + +### `redbear-full` + +Role: + +- broader desktop/network/session plumbing profile + +Current truth: + +- it carries D-Bus and broader desktop integration pieces +- it is stronger than `redbear-wayland` for general integration, but still not the same as a stable + KDE session claim + +### `redbear-kde` + +Role: + +- KDE/Plasma session-surface profile + +Current truth: + +- it carries the KWin/session wiring and the KDE-facing package set +- it should still be described as experimental until runtime evidence catches up with build success + +## Current Blockers + +### 1. Runtime trust still trails build success + +The project now has real build-visible desktop progress, but build success still exceeds runtime +confidence. + +That gap is the main thing older docs sometimes blur. + +### 2. Graphics/runtime validation is still thinner than package progress + +The software-rendered stack is much further along than the hardware-validated stack. + +The desktop stack therefore should not over-claim hardware-ready Wayland/KDE support yet. + +### 3. KDE build progress is ahead of session maturity + +KDE package and framework progress is real, but the session surface should still be described as an +experimental bring-up target rather than a broadly working desktop. + +### 4. Input and seat management are present but not yet a final confidence story + +`libinput`, `seatd`, and related runtime pieces matter, but they should still be treated as part of +the runtime-proof gap rather than as already-settled desktop infrastructure. + +## Canonical Document Roles + +Use the desktop-related docs this way: + +- `local/docs/DESKTOP-STACK-CURRENT-STATUS.md` — current build/runtime truth summary +- `local/docs/QT6-PORT-STATUS.md` — Qt/KF6 package-level build/status truth +- `docs/03-WAYLAND-ON-REDOX.md` — historical Wayland implementation path + deeper rationale +- `docs/05-KDE-PLASMA-ON-REDOX.md` — historical KDE implementation path + deeper rationale +- `local/docs/PROFILE-MATRIX.md` — profile role and support-language reference + +## Bottom Line + +The current Red Bear desktop stack is in a transition phase: + +- no longer blocked on basic Qt/Wayland package availability, +- materially stronger on relibc/Wayland-facing compatibility than before, +- but still short of a broad runtime-trusted desktop claim. + +That is the current truth this repo should present. diff --git a/local/docs/PROFILE-MATRIX.md b/local/docs/PROFILE-MATRIX.md index f45ae564..94ef9d19 100644 --- a/local/docs/PROFILE-MATRIX.md +++ b/local/docs/PROFILE-MATRIX.md @@ -12,14 +12,21 @@ target instead of a vague feature list. - **validated** — behavior has been tested on the claimed profile - **experimental** — available for bring-up, but not support-promised +Subsystem plans may add narrower intermediate labels when `boots` is too coarse. In particular, the +USB plan uses: + +- **enumerates** — runtime surfaces can discover controllers, ports, or descriptors +- **usable** — a specific controller/class path works in a limited real scenario + ## Tracked Profiles | Profile | Intent | Key Fragments | Current support language | |---|---|---|---| -| `redbear-minimal` | Console + storage + wired-network baseline | `minimal.toml`, `redbear-legacy-base.toml`, `redbear-device-services.toml`, `redbear-netctl.toml` | builds / primary validation baseline / DHCP boot profile enabled | -| `redbear-desktop` | Main Red Bear desktop integration profile without KDE-specific session wiring | `desktop.toml`, `redbear-netctl.toml` | builds | -| `redbear-full` | Expanded graphics/input/Qt integration target | `desktop.toml`, `redbear-legacy-base.toml`, `redbear-legacy-desktop.toml`, `redbear-device-services.toml`, `redbear-netctl.toml` | builds / experimental runtime path | -| `redbear-kde` | KDE Plasma bring-up profile | `desktop.toml`, `redbear-legacy-base.toml`, `redbear-legacy-desktop.toml`, `redbear-device-services.toml`, `redbear-netctl.toml` | builds / experimental desktop path | +| `redbear-minimal` | Console + storage + wired-network baseline | `minimal.toml`, `redbear-legacy-base.toml`, `redbear-device-services.toml`, `redbear-netctl.toml` | builds / primary validation baseline / DHCP boot profile enabled / input-runtime substrate wired | +| `redbear-desktop` | Main Red Bear desktop integration profile without KDE-specific session wiring | `desktop.toml`, `redbear-legacy-base.toml`, `redbear-device-services.toml`, `redbear-netctl.toml` | builds / input-runtime substrate wired / runtime reporting installed | +| `redbear-wayland` | Phase 4 Wayland runtime validation profile | `wayland.toml` | builds / boots in QEMU / experimental graphics-runtime path | +| `redbear-full` | Phase 5 desktop/network plumbing profile | `desktop.toml`, `redbear-legacy-base.toml`, `redbear-legacy-desktop.toml`, `redbear-device-services.toml`, `redbear-netctl.toml` | builds / boots in QEMU / D-Bus system bus wired / experimental runtime path | +| `redbear-kde` | Phase 6 KDE session-surface profile | `desktop.toml`, `redbear-legacy-base.toml`, `redbear-legacy-desktop.toml`, `redbear-device-services.toml`, `redbear-netctl.toml` | builds / experimental desktop path / D-Bus+seatd+KWin session surface wired | | `redbear-live` | Live and recovery image layered on desktop | `redbear-desktop.toml` | builds | ## Profile Notes @@ -29,21 +36,33 @@ target instead of a vague feature list. - First place to validate repository discipline and profile reproducibility. - Should stay smaller and less assumption-heavy than the graphics profiles. - Enables the shared `wired-dhcp` netctl profile by default for the Phase 2 VM/wired baseline. +- Ships the shared firmware/input runtime service prerequisites so the early substrate can be tested on the smallest profile as well. ### `redbear-desktop` - Carries the standard Red Bear desktop-facing package additions. - Inherits desktop behavior but avoids the heavier KDE session-specific wiring. +- Now includes the shared firmware/input runtime service fragment used by the wider desktop bring-up path. +- Also includes `redbear-info`, making the desktop profile the main runtime-reporting integration environment. + +### `redbear-wayland` + +- Wraps the repo's existing `wayland.toml` into a first-class Red Bear build target. +- Serves as the Phase 4 runtime-validation surface for `orbital-wayland` and `smallvil`. +- Current verified path: QEMU/UEFI boot to login prompt plus guest-side `redbear-phase4-wayland-check`, with `smallvil` reaching xkbcommon initialization and EGL platform selection on Redox. ### `redbear-full` -- Used for broader integration work that combines graphics, input, and Qt runtime pieces. +- Used for broader desktop/session plumbing after the narrower `redbear-wayland` validation slice. +- Current Phase 5 role: carry D-Bus system-bus plumbing together with the native Red Bear network stack. +- Current verified path: QEMU/UEFI boot to login prompt plus guest-side `redbear-phase5-network-check`, with functional VirtIO networking and `DBUS_SYSTEM_BUS=present`. - Should not be described as fully supported until runtime validation is evidence-backed. ### `redbear-kde` - Dedicated profile for Plasma/KWin session bring-up. - Keep KDE-specific service wiring here instead of leaking it into the generic desktop profile. +- Current Phase 6 role: carry the KWin session launch surface and its D-Bus/seatd dependencies in one image. ### `redbear-live` diff --git a/local/docs/QT6-PORT-STATUS.md b/local/docs/QT6-PORT-STATUS.md index 05536ea5..6ededf8e 100644 --- a/local/docs/QT6-PORT-STATUS.md +++ b/local/docs/QT6-PORT-STATUS.md @@ -118,9 +118,9 @@ Plus: QML debug plugins, QtQuick/QML modules staged. | Vulkan | `-DFEATURE_vulkan=OFF` | No Vulkan runtime | Port Mesa Vulkan ICD → enable | | OpenSSL | `-DFEATURE_openssl=OFF` | OpenSSL3 port in WIP but not validated | Validate openssl3 recipe → enable | | D-Bus | `-DFEATURE_dbus=OFF` | No D-Bus on Redox | Port libdbus → enable | -| Process | `-DFEATURE_process=OFF` | relibc POSIX completeness for QProcess | Test QProcess on Redox → enable | -| Shared Memory | `-DFEATURE_sharedmemory=OFF` | `QSharedMemory` uses `shm_open()`/`shmget()` | Add `shm_open`/`shmget` to relibc | -| System Semaphore | `-DFEATURE_systemsemaphore=OFF` | `QSystemSemaphore` uses `sem_open()`/`semget()` | Add POSIX semaphores to relibc | +| Process | `-DFEATURE_process=ON` | relibc now provides a bounded `waitid()` path and qtbase configures, builds, and stages with process support enabled | Validate QProcess on Redox | +| Shared Memory | `-DFEATURE_sharedmemory=ON` | relibc now provides `shm_open()` plus bounded SysV shared-memory surfaces and qtbase configures, builds, and stages with shared memory enabled | Validate QSharedMemory on Redox | +| System Semaphore | `-DFEATURE_systemsemaphore=ON` | relibc now provides `sem_open()`/`sem_close()`/`sem_unlink()` and qtbase configures, builds, and stages with system semaphore support enabled | Validate QSystemSemaphore on Redox | | qmake | `-DFEATURE_qmake=OFF` | Build tool, not needed with CMake | Enable if downstream needs qmake | | SQL | `-DFEATURE_sql=OFF` | User-agreed scope exclusion | Add sqlite/odbc → enable | | Print Support | `-DFEATURE_printsupport=OFF` | User-agreed scope exclusion | Port cups → enable | @@ -187,7 +187,7 @@ Plus: QML debug plugins, QtQuick/QML modules staged. | Gap | Impact | relibc File to Modify | |-----|--------|----------------------| -| `resolv.h` | Present in relibc | `recipes/core/relibc/source/src/header/resolv/` | +| `resolv.h` | Present in relibc as a minimal source-visible header | `recipes/core/relibc/source/src/header/resolv/` | | `in6_pktinfo` / `ipv6_mreq` | Present in relibc | `recipes/core/relibc/source/src/header/netinet_in/mod.rs` | | `SIOCGIF*` ioctls | Present for the current Redox `eth0` model | `recipes/core/relibc/source/src/header/sys_ioctl/redox/mod.rs` | | `::ioctl` path | Present in relibc Redox ioctl implementation | `recipes/core/relibc/source/src/header/sys_ioctl/` | @@ -199,9 +199,22 @@ Plus: QML debug plugins, QtQuick/QML modules staged. |-----|--------|---------------| | D-Bus IPC | QtDBus, KDE components | QtDBus | | GPU display validation | Hardware-accelerated rendering | QtOpenGL | -| `shm_open()` / `shmget()` | Shared memory | QSharedMemory | -| `sem_open()` / `semget()` | POSIX semaphores | QSystemSemaphore | -| `fork()`/`exec()` POSIX completeness | QProcess internals | QProcess | +| broader shared-memory validation beyond the existing `shm_open()` path | Shared memory | QSharedMemory | +| broader semaphore/system-IPC validation beyond the new `sem_open()` path | POSIX semaphores | QSystemSemaphore | +| process/runtime validation beyond the new bounded `waitid()` path | QProcess internals | QProcess | + +Recent relibc implementation progress in this repo now also includes: + +- source-visible `signalfd`, `timerfd`, `eventfd`, `open_memstream`, `F_DUPFD_CLOEXEC`, and `MSG_NOSIGNAL` +- a bounded `waitid()` path in relibc, replacing the old Qt-side waitid stub workaround +- a bounded `eth0`-backed `net_if` / `ifaddrs` path in relibc +- a minimal source-visible `resolv.h` surface in relibc +- bounded `sys/ipc.h` / `sys/shm.h` surfaces for the `IPC_PRIVATE` shared-memory workflow + +Current downstream build proof in this repo now includes: + +- `libwayland` cooking successfully against the updated relibc surfaces +- qtbase configuring, building, and staging with `process`, `sharedmemory`, and `systemsemaphore` enabled | Fontconfig | Advanced font selection | QtGui (bundled FreeType works for basic) | --- @@ -325,8 +338,10 @@ Phase 1 ✅ (qtbase + qtdeclarative + qtsvg) 1. **QML JIT disabled** — `QT_FEATURE_qml_jit` does not compile for Redox. QML still works via the interpreter path, just without JIT acceleration. Non-blocking for basic QML apps. -2. **QtNetwork disabled** — DNS resolver and IPv6 multicast gaps in relibc. HTTP/WebSocket - unavailable until relibc networking is completed. QML network access also affected. +2. **QtNetwork disabled** — relibc now exposes bounded resolver compatibility (`resolv.h`, + `arpa/nameser.h`, `res_query`, `res_search`), but DNS/runtime semantics and IPv6 multicast + coverage are still incomplete. HTTP/WebSocket remain unavailable until relibc networking is + validated more broadly. QML network access is also affected. 3. **No GPU hardware acceleration** — Qt6 OpenGL/EGL and Mesa EGL+GBM now build, but they are still validated only on the software/LLVMpipe path. True hardware acceleration (radeonsi or equivalent) still requires kernel DMA-BUF fd passing and real hardware validation. diff --git a/local/docs/REDBEAR-INFO-RUNTIME-REPORT.md b/local/docs/REDBEAR-INFO-RUNTIME-REPORT.md index 155c88e9..9e9cd9d8 100644 --- a/local/docs/REDBEAR-INFO-RUNTIME-REPORT.md +++ b/local/docs/REDBEAR-INFO-RUNTIME-REPORT.md @@ -13,7 +13,7 @@ It is meant to answer: - what services or schemes are actually active, - what integrations passed a safe read-only runtime probe, - whether networking is configured, including IP, DNS, and default route, -- whether key hardware discovery surfaces (PCI, USB, DRM, RTL8125) are visible. +- whether key hardware discovery surfaces (PCI, USB, DRM, RTL8125, VirtIO NICs) are visible. ## Output model @@ -36,9 +36,15 @@ are hardware-validated at runtime. - **Networking** — stack state, connected flag, interface, MAC, IP/CIDR, DNS, default route, active `netctl` profile, visible `network.*` schemes - **Hardware** — PCI device count, USB controller count, DRM card count, RTL8125 PCI visibility +- **Hardware** — PCI device count, USB controller count, DRM card count, RTL8125 PCI visibility, + VirtIO NIC visibility for VM baselines - **Integrations** — tools, daemons, and integration paths such as `lspci`, `lsusb`, `netctl`, `pcid-spawner`, `smolnetd`, `firmware-loader`, `udev-shim`, `evdevd`, `redox-drm`, and the - native RTL8125 path + native RTL8125 and VirtIO networking paths + +For Phase 3 runtime validation, `udev-shim` is expected at `/usr/bin/udev-shim` and `evdevd` is +expected at both `/usr/bin/evdevd` and `/usr/lib/drivers/evdevd` so service execution and runtime +reporting use the same binary identity. ## Commands