diff --git a/local/patches/libwayland/redox.patch b/local/patches/libwayland/redox.patch index 68a5b3e08..6dfb02547 100644 --- a/local/patches/libwayland/redox.patch +++ b/local/patches/libwayland/redox.patch @@ -37,3 +37,31 @@ #include #include +@@ -649,6 +649,11 @@ + wl_proxy_add_listener(struct wl_proxy *proxy, + void (**implementation)(void), void *data) + { ++ if (!proxy) { ++ fprintf(stderr, "FATAL: wl_proxy_add_listener(NULL) caller=%p -- returning error\n", ++ __builtin_return_address(0)); ++ return -1; ++ } + if (proxy->flags & WL_PROXY_FLAG_WRAPPER) + wl_abort("Proxy %p is a wrapper\n", proxy); + +@@ -2442,6 +2447,7 @@ + WL_EXPORT uint32_t + wl_proxy_get_version(struct wl_proxy *proxy) + { ++ if (!proxy) return 0; + return proxy->version; + } + +@@ -2560,6 +2566,7 @@ + WL_EXPORT struct wl_display * + wl_proxy_get_display(struct wl_proxy *proxy) + { ++ if (!proxy) return NULL; + return proxy->display; + } + diff --git a/local/recipes/kde/kf6-kded6/recipe.toml b/local/recipes/kde/kf6-kded6/recipe.toml index 2fb1fc281..9d1ecfac1 100644 --- a/local/recipes/kde/kf6-kded6/recipe.toml +++ b/local/recipes/kde/kf6-kded6/recipe.toml @@ -39,6 +39,14 @@ cmake "${COOKBOOK_SOURCE}" \ cmake --build . -j${COOKBOOK_MAKE_JOBS} DESTDIR="${COOKBOOK_STAGE}" cmake --install . --prefix /usr +# Prevent Qt6 Wayland crash on Redox: wrap kded6 with QT_QPA_PLATFORM=offscreen. +# kded6 is a headless D-Bus daemon — Wayland is unnecessary. +if [ -f "${COOKBOOK_STAGE}/usr/bin/kded6" ]; then + mv "${COOKBOOK_STAGE}/usr/bin/kded6" "${COOKBOOK_STAGE}/usr/bin/kded6.real" + cp "${COOKBOOK_SOURCE}/kded6-wrapper.sh" "${COOKBOOK_STAGE}/usr/bin/kded6" + chmod +x "${COOKBOOK_STAGE}/usr/bin/kded6" +fi + for lib in "${COOKBOOK_STAGE}/usr/lib/"libKF6*.so.*; do [ -f "${lib}" ] || continue patchelf --remove-rpath "${lib}" 2>/dev/null || true diff --git a/local/recipes/kde/kf6-kded6/source/kded6-wrapper.sh b/local/recipes/kde/kf6-kded6/source/kded6-wrapper.sh new file mode 100644 index 000000000..e6c968f12 --- /dev/null +++ b/local/recipes/kde/kf6-kded6/source/kded6-wrapper.sh @@ -0,0 +1,6 @@ +#!/bin/sh +# kded6 wrapper — prevents Qt6 Wayland QPA crash on Redox +# Qt6 Wayland page-faults at null+8 during wl_proxy_add_listener. +# kded6 is a headless D-Bus daemon; Wayland is unnecessary. +export QT_QPA_PLATFORM=offscreen +exec /usr/bin/kded6.real "$@"