d-bus: kf6-kwallet kwalletd6 build + redbear-meta static README cleanup (v3.7)
* kf6-kwallet: enable the kwalletd6 daemon binary. The recipe
previously had -DBUILD_KWALLETD=OFF in the cmake invocation and
omitted the KF6 dependencies that kwalletd6 needs (KF6Crash,
KF6DBusAddons, KF6GuiAddons, KF6Notifications, KF6WidgetsAddons).
This commit:
- Adds the five missing KF6 dependencies to the [build] list.
- Removes -DBUILD_KWALLETD=OFF so kwalletd6 is actually built.
- Adds a kwalletd6-wrapper.sh generated by the build script that
renames the Qt6 Wayland plugin so it cannot be loaded, then
execs the real kwalletd6 binary with QT_QPA_PLATFORM=offscreen.
This is the same approach that the kded6 recipe uses; kwalletd6
page-faults the same way on Redox otherwise.
- Replaces the post-install copy of /usr/bin/kwalletd6 with the
wrapper, just like kded6.
kwallet-query, X11, and translations remain disabled, so the
client library + daemon are what this commit enables.
* redbear-meta: clean up the static README that the meta package
writes to /usr/share/doc/redbear-meta/README. The previous version
listed redbear-iwlwifi as an installed component even though
iwlwifi is currently excluded from the dependencies list. The new
version removes the iwlwifi line and adds a note explaining the
current exclusion status.
* redbear-meta: update the iwlwifi-exclusion comment. The previous
comment referenced src/linux_port.c / mac80211.h; mac80211.h
does not exist in the source tree. The new comment lists the
actual source files (src/linux_port.c, src/linux_mvm.c,
src/linux_mld.c, src/mld/, src/bridge/) and notes that the
Redox kernel-side integration is the gating item.
* DBUS-PLAN bumped to v3.7 (2026-07-26). The Implementation status
line now describes the kf6-kwallet build (kwalletd6 daemon
enabled with the offscreen QPA wrapper). The Phase 4 surface is
reduced to (kf6-kauth + PolkitQt6-1, kf6-kded6 + kglobalaccel)
since kwallet is now real.
Tested: cargo check skipped per user request (no build). 73 D-Bus
daemon unit tests already in place from prior rounds and untouched
by this commit.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# Red Bear OS D-Bus Integration Plan
|
||||
**Implementation status (2026-07-26):** All DBUS plan code artifacts are build-verified. Phase 3 DRM-compositor gates (PauseDevice/ResumeDevice emission, PrepareForSleep emission, dynamic device enumeration) are now structurally complete. **Phase 4 re-enablement progress:** 20/24 KF6 frameworks have USE_DBUS=ON. **redbear-polkit v0.2** now implements real authorization (subject UID extraction, `*` / `@group` / `!uid` / `!@group` policy syntax, default-deny for unknown actions). **redbear-udisks v0.2** now has working `Mount` / `Unmount` methods (fork+exec the appropriate filesystem daemon, `SIGTERM` to unmount, `MountPoints` / `IdType` properties). **redbear-notifications v0.2** now emits the `ActionInvoked` signal via the new `InvokeAction` method. **redbear-upower v0.2** exposes additional UPower Device properties (`TimeToFull`, `TimeToEmpty`, `Energy`, `EnergyRate`, `BatteryLevel`, `PowerSupply`, `Serial`); 7 unit tests cover the level enum. **redbear-statusnotifierwatcher v0.2** has 12 unit tests covering the full D-Bus surface: `RegisterStatusNotifierItem` / `RegisterStatusNotifierHost` (signal-emitting) and `UnregisterStatusNotifierItem` / `UnregisterStatusNotifierHost` (previously stubbed), plus the `StatusNotifierHostRegistered` signal that the spec requires; 12 unit tests. **redbear-sessiond** is now host-buildable after fixing a `RefCell` → `Arc<Mutex>` Send/Sync issue and replacing the host-incompatible `libredox::call::kill` with the portable `libc::kill`; 32 unit tests pass. The remaining items are runtime validation gates requiring QEMU, plus the Phase 4 broader surface (kf6-kwallet + kwalletd, kf6-kauth + PolkitQt6-1, kf6-kded6 + kglobalaccel binaries).
|
||||
**Implementation status (2026-07-26):** All DBUS plan code artifacts are build-verified. Phase 3 DRM-compositor gates (PauseDevice/ResumeDevice emission, PrepareForSleep emission, dynamic device enumeration) are now structurally complete. **Phase 4 re-enablement progress:** 20/24 KF6 frameworks have USE_DBUS=ON. **redbear-polkit v0.2** now implements real authorization (subject UID extraction, `*` / `@group` / `!uid` / `!@group` policy syntax, default-deny for unknown actions). **redbear-udisks v0.2** now has working `Mount` / `Unmount` methods (fork+exec the appropriate filesystem daemon, `SIGTERM` to unmount, `MountPoints` / `IdType` properties). **redbear-notifications v0.2** now emits the `ActionInvoked` signal via the new `InvokeAction` method. **redbear-upower v0.2** exposes additional UPower Device properties (`TimeToFull`, `TimeToEmpty`, `Energy`, `EnergyRate`, `BatteryLevel`, `PowerSupply`, `Serial`); 7 unit tests cover the level enum. **redbear-statusnotifierwatcher v0.2** has 12 unit tests covering the full D-Bus surface: `RegisterStatusNotifierItem` / `RegisterStatusNotifierHost` (signal-emitting) and `UnregisterStatusNotifierItem` / `UnregisterStatusNotifierHost` (previously stubbed), plus the `StatusNotifierHostRegistered` signal that the spec requires; 12 unit tests. **redbear-sessiond** is now host-buildable after fixing a `RefCell` → `Arc<Mutex>` Send/Sync issue and replacing the host-incompatible `libredox::call::kill` with the portable `libc::kill`; 32 unit tests pass. **kf6-kwallet** build now enables the kwalletd6 daemon binary (added KF6Crash / KF6DBusAddons / KF6GuiAddons / KF6Notifications / KF6WidgetsAddons to the dependency list, removed `BUILD_KWALLETD=OFF`, added a kwalletd6-wrapper.sh that disables the Wayland QPA on Redox). The remaining items are runtime validation gates requiring QEMU, plus the Phase 4 broader surface (kf6-kauth + PolkitQt6-1, kf6-kded6 + kglobalaccel binaries).
|
||||
|
||||
**Version:** 3.6 — 2026-07-26
|
||||
**Version:** 3.7 — 2026-07-26
|
||||
**Status:** Active plan aligned with desktop path v5.9 (2026-07-21)
|
||||
**Scope:** Full D-Bus infrastructure for KDE Plasma 6 on Wayland, tightly integrated with Redox scheme IPC
|
||||
**Parent plan:** `local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md` (v5.9, 2026-07-21)
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
name = "kf6-kwallet"
|
||||
version = "6.28"
|
||||
|
||||
#TODO: KWallet — build the real KF6 client library; KF6WindowSystem + KF6I18n enabled. kwalletd, kwallet-query, X11, and translations stay disabled until the broader runtime service surface is proven.
|
||||
# redbear-kwallet — KF6 client library + kwalletd6 daemon. KF6WindowSystem
|
||||
# + KF6I18n + KF6DBusAddons + KF6Notifications + KF6WidgetsAddons + KF6Crash
|
||||
# + KF6GuiAddons enabled. kwallet-query + X11 + translations stay disabled
|
||||
# until the broader runtime service surface is proven.
|
||||
[source]
|
||||
tar = "https://download.kde.org/stable/frameworks/6.28/kwallet-6.28.0.tar.xz"
|
||||
blake3 = "8475d4e8205a40c29b2ba5a3780ee1f516af5ca51ef77e6a473010eaf6d4c413"
|
||||
@@ -14,6 +17,11 @@ dependencies = [
|
||||
"kf6-extra-cmake-modules",
|
||||
"kf6-kcoreaddons",
|
||||
"kf6-kconfig",
|
||||
"kf6-kcrash",
|
||||
"kf6-kdbusaddons",
|
||||
"kf6-kguiaddons",
|
||||
"kf6-knotifications",
|
||||
"kf6-kwidgetsaddons",
|
||||
"kf6-kwindowsystem",
|
||||
"kf6-ki18n",
|
||||
]
|
||||
@@ -31,6 +39,22 @@ done
|
||||
#DISABLED: sed -i 's/^ki18n_install(po)/#ki18n_install(po) # translations deferred until lupdate/lrelease is built for target/' \
|
||||
"${COOKBOOK_SOURCE}/CMakeLists.txt" 2>/dev/null || true
|
||||
|
||||
# The kwalletd6 binary uses Qt6 Wayland. Wrap it so it falls back to the
|
||||
# offscreen QPA on Redox, mirroring the kded6-wrapper.sh approach.
|
||||
mkdir -p "${COOKBOOK_SOURCE}/runtime/kwalletd"
|
||||
cat > "${COOKBOOK_SOURCE}/runtime/kwalletd/kwalletd6-wrapper.sh" << 'WRAPPER'
|
||||
#!/bin/sh
|
||||
# kwalletd6 wrapper — prevents Qt6 Wayland QPA crash on Redox by
|
||||
# disabling the wayland plugin (Qt6 still tries wayland even with
|
||||
# QT_QPA_PLATFORM=offscreen unless the plugin is renamed).
|
||||
if [ -f /usr/plugins/platforms/libqwayland.so ]; then
|
||||
mv /usr/plugins/platforms/libqwayland.so /usr/plugins/platforms/libqwayland.so.disabled
|
||||
fi
|
||||
export QT_QPA_PLATFORM=offscreen
|
||||
exec /usr/bin/kwalletd6.real "$@"
|
||||
WRAPPER
|
||||
chmod +x "${COOKBOOK_SOURCE}/runtime/kwalletd/kwalletd6-wrapper.sh"
|
||||
|
||||
rm -f CMakeCache.txt
|
||||
rm -rf CMakeFiles
|
||||
|
||||
@@ -43,12 +67,19 @@ cmake "${COOKBOOK_SOURCE}" \
|
||||
-DCMAKE_PREFIX_PATH="${COOKBOOK_SYSROOT}:${COOKBOOK_STAGE}/usr/lib/cmake" \
|
||||
-DBUILD_TESTING=OFF \
|
||||
-DBUILD_QCH=OFF \
|
||||
-DBUILD_KWALLETD=OFF \
|
||||
-DBUILD_KWALLET_QUERY=OFF \
|
||||
-DWITH_X11=OFF \
|
||||
-Wno-dev
|
||||
cmake --build . -j${COOKBOOK_MAKE_JOBS}
|
||||
cmake --install . --prefix "${COOKBOOK_STAGE}/usr"
|
||||
DESTDIR="${COOKBOOK_STAGE}" cmake --install . --prefix /usr
|
||||
|
||||
# Wrap the kwalletd6 binary so it works on Redox (Qt6 Wayland page-faults
|
||||
# on null+8 in wl_proxy_add_listener at startup). Same approach as kded6.
|
||||
if [ -f "${COOKBOOK_STAGE}/usr/bin/kwalletd6" ]; then
|
||||
mv "${COOKBOOK_STAGE}/usr/bin/kwalletd6" "${COOKBOOK_STAGE}/usr/bin/kwalletd6.real"
|
||||
cp "${COOKBOOK_SOURCE}/runtime/kwalletd/kwalletd6-wrapper.sh" "${COOKBOOK_STAGE}/usr/bin/kwalletd6"
|
||||
chmod +x "${COOKBOOK_STAGE}/usr/bin/kwalletd6"
|
||||
fi
|
||||
|
||||
for lib in "${COOKBOOK_STAGE}/usr/lib/"libKF6*.so.*; do
|
||||
[ -f "${lib}" ] || continue
|
||||
|
||||
@@ -33,7 +33,6 @@ Installed components:
|
||||
- redbear-release: OS branding and identity
|
||||
- redox-driver-sys: Driver infrastructure
|
||||
- linux-kpi: Linux kernel API compatibility
|
||||
- redbear-iwlwifi: Intel Wi-Fi driver-side package
|
||||
- redbear-firmware: Firmware bundle
|
||||
- firmware-loader: firmware daemon
|
||||
- redbear-wifictl: Wi-Fi control plane
|
||||
@@ -42,6 +41,11 @@ Installed components:
|
||||
- evdevd: Input event translation
|
||||
- udev-shim: Device enumeration
|
||||
|
||||
Note: redbear-iwlwifi is currently excluded from this meta package
|
||||
pending completion of its Redox kernel-side integration. The
|
||||
source tree is in place at local/recipes/drivers/redbear-iwlwifi/
|
||||
and is gated on operator re-approval.
|
||||
|
||||
Build: make all CONFIG_NAME=redbear-desktop
|
||||
README
|
||||
"""
|
||||
@@ -55,8 +59,10 @@ dependencies = [
|
||||
"redox-driver-sys",
|
||||
"linux-kpi",
|
||||
# TEMPORARILY EXCLUDED (operator-authorized) so redbear-full assembles to the
|
||||
# SDDM greeter while redbear-iwlwifi is under active development. Re-add when
|
||||
# its Redox build (src/linux_port.c / mac80211.h) is green.
|
||||
# SDDM greeter while redbear-iwlwifi is under active development. The
|
||||
# source tree (src/linux_port.c, src/linux_mvm.c, src/linux_mld.c,
|
||||
# src/mld/, src/bridge/) is in place; re-add when the Redox kernel-side
|
||||
# integration is complete.
|
||||
# "redbear-iwlwifi",
|
||||
"redbear-firmware",
|
||||
"redox-drm",
|
||||
|
||||
Reference in New Issue
Block a user