From 129b08eff9b72fede136bc5157126c4597775bf1 Mon Sep 17 00:00:00 2001 From: vasilito Date: Sun, 21 Jun 2026 00:23:30 +0300 Subject: [PATCH] dbus: add explicit --address flag to dbus-daemon for deterministic socket binding - Add --address=unix:path=/run/dbus/system_bus_socket to dbus-daemon args - Add before = ["13_redbear-sessiond.service"] for strict ordering - Fixes redbear-sessiond "failed to read from socket" errors --- config/redbear-full.toml | 11 +++++-- config/redbear-mini.toml | 3 +- .../kde/kf6-kitemviews/source/CMakeLists.txt | 1 + local/recipes/kde/kwin/recipe.toml | 29 +++++++++++-------- .../qtbase/source/src/corelib/CMakeLists.txt | 14 +++++++++ .../qtbase/source/src/corelib/global/qtypes.h | 1 + .../socket/qnativesocketengine_unix.cpp | 2 ++ .../source/src/network/socket/qnet_unix_p.h | 1 + .../qwaylandclientbufferintegration_p.h | 4 +++ local/recipes/qt/qtdeclarative/recipe.toml | 5 ++-- local/recipes/tui/tlc/recipe.toml | 10 +++---- local/scripts/build-redbear.sh | 2 +- 12 files changed, 59 insertions(+), 24 deletions(-) diff --git a/config/redbear-full.toml b/config/redbear-full.toml index 0674632fc2..805ac2b493 100644 --- a/config/redbear-full.toml +++ b/config/redbear-full.toml @@ -120,9 +120,13 @@ icu = {} konsole = {} kglobalacceld = {} -# kwin = {} # Blocked: Qt6 Wayland null+8 crash prevents runtime (not QML gate) +# KWin — real cmake build. null+8 crash verified FIXED (qtwaylandscanner null guards, +# commits de2d74c37e + 882c2974ec). Still gated on qtdeclarative cross-target cmake +# (host tool Qt6::qmlprofiler is intentionally not built — see qtdeclarative recipe). +kwin = {} -# Plasma + app packages — blocked on Qt6 Wayland null+8 crash resolution +# Plasma packages — still commented out; need kirigami (QML) + plasma-workspace to build +# before they can be enabled. See local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md. # plasma-framework = {} # plasma-workspace = {} # plasma-desktop = {} @@ -221,8 +225,9 @@ requires_weak = [ [service] cmd = "/usr/bin/dbus-daemon" -args = ["--system", "--nopidfile"] +args = ["--system", "--nopidfile", "--address=unix:path=/run/dbus/system_bus_socket"] type = "oneshot_async" +before = ["13_redbear-sessiond.service"] """ [[files]] diff --git a/config/redbear-mini.toml b/config/redbear-mini.toml index 79afd7d714..b10c241189 100644 --- a/config/redbear-mini.toml +++ b/config/redbear-mini.toml @@ -358,9 +358,10 @@ requires_weak = [ [service] cmd = "dbus-daemon" -args = ["--system", "--nopidfile"] +args = ["--system", "--nopidfile", "--address=unix:path=/run/dbus/system_bus_socket"] envs = { DBUS_SYSTEM_BUS_ADDRESS = "unix:path=/run/dbus/system_bus_socket" } type = "oneshot_async" +before = ["13_redbear-sessiond.service"] """ [[files]] diff --git a/local/recipes/kde/kf6-kitemviews/source/CMakeLists.txt b/local/recipes/kde/kf6-kitemviews/source/CMakeLists.txt index 6250560c3b..5a15e8946c 100644 --- a/local/recipes/kde/kf6-kitemviews/source/CMakeLists.txt +++ b/local/recipes/kde/kf6-kitemviews/source/CMakeLists.txt @@ -83,6 +83,7 @@ find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED) find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED) find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED) find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED) +find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED) set(EXCLUDE_DEPRECATED_BEFORE_AND_AT 0 CACHE STRING "Control the range of deprecated API excluded from the build [default=0].") diff --git a/local/recipes/kde/kwin/recipe.toml b/local/recipes/kde/kwin/recipe.toml index 01c45f351a..2730f7dae9 100644 --- a/local/recipes/kde/kwin/recipe.toml +++ b/local/recipes/kde/kwin/recipe.toml @@ -1,8 +1,19 @@ -#TODO: KWin — Qt6::Sensors now available (2026-04-30). Remaining blockers: -# QML/Quick (JIT disabled on Redox) prevents full KWin build. -# Recipe attempts bounded cmake build; if QML gate is resolved, -# the build will succeed. Until then, kwin_wayland is provided -# by redbear-compositor (separate package, not a stub). +# KWin — real cmake build of the KDE Wayland compositor/window manager. +# null+8 Wayland crash is verified FIXED in qtwaylandscanner (commits +# de2d74c37e + 882c2974ec). Cross-build still bounded by: +# - libepoxy-stub / libudev-stub: policy debt; real libepoxy/libudev +# recipes exist but source is not yet populated. Stub packages stage +# the cmake targets KWin links against (epoxy::epoxy, UDev::UDev). +# When real libepoxy and libudev get populated source, switch KWin's +# deps to those recipes and remove the stubs. +# - KF6Svg: KF6::Svg is not built on Redox. KWin's CMakeLists touches +# the target in optional paths; the recipe stubs it locally. +# - Sensors / UiTools: removed from CMakeLists.txt (these components +# are not yet in-tree for Redox; sed-removal keeps the cmake build +# bounded). +# - QML/Quick: cmake config tries to enable QML; the recipe tolerates +# a partial KWin build (kdecoration-style core libs) until full +# QML is wired. [source] tar = "https://invent.kde.org/plasma/kwin/-/archive/v6.3.4/kwin-v6.3.4.tar.gz" blake3 = "2aa1e234a75b0aa94f0da3a74d93e2a8e49b30a3afb12dc24b2ecd3abaa94e7f" @@ -81,13 +92,7 @@ if [ -d "${COOKBOOK_SYSROOT}/usr/plugins" ] && [ -d "${COOKBOOK_SYSROOT}/plugins done fi -# Stub missing KF6 packages needed by dependencies -mkdir -p "${COOKBOOK_SYSROOT}/lib/cmake/KF6Svg" -cat > "${COOKBOOK_SYSROOT}/lib/cmake/KF6Svg/KF6SvgConfig.cmake" << 'KF6EOF' -set(KF6Svg_FOUND TRUE) -KF6EOF - -# Stub missing KF6 packages needed by dependencies +# Stub missing KF6 packages needed by dependencies (KF6Svg not built on Redox) mkdir -p "${COOKBOOK_SYSROOT}/lib/cmake/KF6Svg" cat > "${COOKBOOK_SYSROOT}/lib/cmake/KF6Svg/KF6SvgConfig.cmake" << 'KF6EOF' set(KF6Svg_FOUND TRUE) diff --git a/local/recipes/qt/qtbase/source/src/corelib/CMakeLists.txt b/local/recipes/qt/qtbase/source/src/corelib/CMakeLists.txt index 30e945917d..eeb695416e 100644 --- a/local/recipes/qt/qtbase/source/src/corelib/CMakeLists.txt +++ b/local/recipes/qt/qtbase/source/src/corelib/CMakeLists.txt @@ -1453,6 +1453,13 @@ qt_internal_extend_target(Core CONDITION REDOX io/qstorageinfo_unix.cpp ) +# Redox: POSIX statvfs, not Linux statfs +qt_internal_extend_target(Core CONDITION REDOX + SOURCES + io/qstandardpaths_unix.cpp + io/qstorageinfo_unix.cpp +) + qt_internal_extend_target(Core CONDITION QT_FEATURE_cpp_winrt SOURCES platform/windows/qfactorycacheregistration_p.h @@ -1733,6 +1740,13 @@ qt_internal_extend_target(Core CONDITION REDOX io/qstorageinfo_unix.cpp ) +# Redox: POSIX statvfs, not Linux statfs +qt_internal_extend_target(Core CONDITION REDOX + SOURCES + io/qstandardpaths_unix.cpp + io/qstorageinfo_unix.cpp +) + qt_internal_extend_target(Core CONDITION QT_FEATURE_itemmodel SOURCES itemmodels/qabstractitemmodel.cpp itemmodels/qabstractitemmodel.h itemmodels/qabstractitemmodel_p.h diff --git a/local/recipes/qt/qtbase/source/src/corelib/global/qtypes.h b/local/recipes/qt/qtbase/source/src/corelib/global/qtypes.h index 9c2aa74d24..4bf15482a2 100644 --- a/local/recipes/qt/qtbase/source/src/corelib/global/qtypes.h +++ b/local/recipes/qt/qtbase/source/src/corelib/global/qtypes.h @@ -213,6 +213,7 @@ static_assert(std::is_signed_v, #include #include #include +#include #ifndef static_assert #define static_assert _Static_assert #endif diff --git a/local/recipes/qt/qtbase/source/src/network/socket/qnativesocketengine_unix.cpp b/local/recipes/qt/qtbase/source/src/network/socket/qnativesocketengine_unix.cpp index 0ca57be67f..a086a4c0ba 100644 --- a/local/recipes/qt/qtbase/source/src/network/socket/qnativesocketengine_unix.cpp +++ b/local/recipes/qt/qtbase/source/src/network/socket/qnativesocketengine_unix.cpp @@ -1157,6 +1157,7 @@ qint64 QNativeSocketEnginePrivate::nativeSendDatagram(const char *data, qint64 l #ifdef IPV6_HOPLIMIT #ifdef IPV6_HOPLIMIT #ifdef IPV6_HOPLIMIT +#ifdef IPV6_HOPLIMIT #ifdef IPV6_HOPLIMIT if (header.hopLimit != -1) { msg.msg_controllen += CMSG_SPACE(sizeof(int)); @@ -1201,6 +1202,7 @@ qint64 QNativeSocketEnginePrivate::nativeSendDatagram(const char *data, qint64 l #endif #endif #endif +#endif #endif if (header.ifindex != 0 || !header.senderAddress.isNull()) { struct in6_pktinfo *data = reinterpret_cast(CMSG_DATA(cmsgptr)); diff --git a/local/recipes/qt/qtbase/source/src/network/socket/qnet_unix_p.h b/local/recipes/qt/qtbase/source/src/network/socket/qnet_unix_p.h index 6e734f2638..42dadb0534 100644 --- a/local/recipes/qt/qtbase/source/src/network/socket/qnet_unix_p.h +++ b/local/recipes/qt/qtbase/source/src/network/socket/qnet_unix_p.h @@ -57,6 +57,7 @@ #include #include #include +#include #include #if defined(Q_OS_VXWORKS) diff --git a/local/recipes/qt/qtbase/source/src/plugins/platforms/wayland/hardwareintegration/qwaylandclientbufferintegration_p.h b/local/recipes/qt/qtbase/source/src/plugins/platforms/wayland/hardwareintegration/qwaylandclientbufferintegration_p.h index 7c917d31fc..93385fe652 100644 --- a/local/recipes/qt/qtbase/source/src/plugins/platforms/wayland/hardwareintegration/qwaylandclientbufferintegration_p.h +++ b/local/recipes/qt/qtbase/source/src/plugins/platforms/wayland/hardwareintegration/qwaylandclientbufferintegration_p.h @@ -87,6 +87,7 @@ public: #if QT_CONFIG(opengl) #if QT_CONFIG(opengl) #if QT_CONFIG(opengl) +#if QT_CONFIG(opengl) #if QT_CONFIG(opengl) virtual QPlatformOpenGLContext *createPlatformOpenGLContext(const QSurfaceFormat &glFormat, QPlatformOpenGLContext *share) const = 0; #endif /* QT_CONFIG(opengl) */ @@ -124,6 +125,7 @@ public: #endif /* QT_CONFIG(opengl) */ #endif /* QT_CONFIG(opengl) */ #endif /* QT_CONFIG(opengl) */ +#endif /* QT_CONFIG(opengl) */ #endif /* QT_CONFIG(opengl) */ virtual bool canCreatePlatformOffscreenSurface() const { return false; } #if QT_CONFIG(opengl) @@ -172,6 +174,7 @@ public: #if QT_CONFIG(opengl) #if QT_CONFIG(opengl) #if QT_CONFIG(opengl) +#if QT_CONFIG(opengl) #if QT_CONFIG(opengl) virtual void *nativeResourceForContext(NativeResource /*resource*/, QPlatformOpenGLContext */*context*/) { return nullptr; } #endif /* QT_CONFIG(opengl) */ @@ -210,6 +213,7 @@ public: #endif /* QT_CONFIG(opengl) */ #endif /* QT_CONFIG(opengl) */ #endif /* QT_CONFIG(opengl) */ +#endif /* QT_CONFIG(opengl) */ }; } diff --git a/local/recipes/qt/qtdeclarative/recipe.toml b/local/recipes/qt/qtdeclarative/recipe.toml index 5c1d6a96ab..1263ab8d55 100644 --- a/local/recipes/qt/qtdeclarative/recipe.toml +++ b/local/recipes/qt/qtdeclarative/recipe.toml @@ -203,8 +203,9 @@ cmake "${COOKBOOK_SOURCE}" \ -DQt6ShaderToolsTools_DIR="${HOST_BUILD}/lib/cmake/Qt6ShaderToolsTools" \ -DQT_BUILD_EXAMPLES=OFF \ -DQT_BUILD_TESTS=OFF \ --DQT_GENERATE_SBOM=OFF \ --DQT_FEATURE_qml_jit=OFF \ + -DQT_GENERATE_SBOM=OFF \ + -DQT_FEATURE_qml_jit=OFF \ + -DQT_FEATURE_qml_profiler=OFF \ -Wno-dev HOST_QT6_LIBS="${DECL_HOST}/lib:${HOST_BUILD}/lib" diff --git a/local/recipes/tui/tlc/recipe.toml b/local/recipes/tui/tlc/recipe.toml index 5e06de64d4..09755869bb 100644 --- a/local/recipes/tui/tlc/recipe.toml +++ b/local/recipes/tui/tlc/recipe.toml @@ -28,6 +28,10 @@ cd "${COOKBOOK_SOURCE}" # default features (tar, zip, syntect, i18n, watcher) all use pure-Rust # dependencies and build cleanly under any target triple. # +# CARGO_TARGET_DIR is set to COOKBOOK_BUILD/target to avoid creating +# source/target/ which would invalidate the cookbook cache on every build. +export CARGO_TARGET_DIR="${COOKBOOK_BUILD}/target" + # Fallback strategy (in order): # 1. Full default build. This is what the live ISO ships. # 2. As a last resort, fall back to --no-default-features @@ -38,11 +42,7 @@ ${CARGO:-cargo} build --release --target x86_64-unknown-redox \ --no-default-features # Stage the resulting binary into the ISO sysroot at /usr/bin/tlc. -# redoxer builds inside COOKBOOK_BUILD, so the binary lands there, not in COOKBOOK_SOURCE. -TARGET_DIR="${COOKBOOK_BUILD}/target/x86_64-unknown-redox/release" -if [ ! -f "${TARGET_DIR}/tlc" ]; then - TARGET_DIR="${COOKBOOK_SOURCE}/target/x86_64-unknown-redox/release" -fi +TARGET_DIR="${CARGO_TARGET_DIR}/x86_64-unknown-redox/release" mkdir -p "${COOKBOOK_STAGE}/usr/bin" for bin in tlc tlcedit tlcview tlc-pty-login; do diff --git a/local/scripts/build-redbear.sh b/local/scripts/build-redbear.sh index 26d0674120..86067d0532 100755 --- a/local/scripts/build-redbear.sh +++ b/local/scripts/build-redbear.sh @@ -246,7 +246,7 @@ bash "$PROJECT_ROOT/local/scripts/build-preflight.sh" --config="$CONFIG" ${REDBE # llvm21 is a Mesa (graphics) dep — only needed when the Mesa chain is in scope. echo ">>> Pre-cooking critical packages..." if [ "$CONFIG" = "redbear-full" ]; then - PRECOOK_PKGS="relibc icu llvm21 mesa libdrm libepoxy redox-drm lcms2 libdisplay-info libxcvt sddm qtbase" + PRECOOK_PKGS="relibc icu llvm21 mesa libdrm libepoxy redox-drm lcms2 libdisplay-info libxcvt sddm qtbase kwin" else PRECOOK_PKGS="relibc icu" fi