kde: remove kf6-kcrash OpenGL stub, restore setgroups, and re-enable KWin Sensors

This commit is contained in:
2026-07-10 23:43:40 +03:00
parent 53ed5678f9
commit 82869ff187
5 changed files with 6 additions and 47 deletions
+1 -41
View File
@@ -1,4 +1,4 @@
#TODO: KCrash — crash handler, backtrace generation. OpenGL deps disabled for software rendering.
# KCrash — crash handler, backtrace generation, with OpenGL renderer metadata.
[source]
tar = "https://download.kde.org/stable/frameworks/6.27/kcrash-6.27.0.tar.xz"
blake3 = "dcdd52301351857c6479c8d56d17302dd5a532606a2acdd86b6b7758457fa612"
@@ -16,48 +16,8 @@ DYNAMIC_INIT
HOST_BUILD="${COOKBOOK_ROOT}/build/qt-host-build"
source "${COOKBOOK_ROOT}/local/scripts/lib/qt-sysroot.sh"
STUB_OPENGL_DIR="${COOKBOOK_SYSROOT}/lib/cmake/Qt6OpenGL"
mkdir -p "${STUB_OPENGL_DIR}"
cat > "${STUB_OPENGL_DIR}/Qt6OpenGLConfig.cmake" << 'OPENGLEOF'
set(Qt6OpenGL_FOUND ON)
set(Qt6OpenGL_VERSION "6.6.0")
OPENGLEOF
cat > "${STUB_OPENGL_DIR}/Qt6OpenGLConfigVersion.cmake" << 'OPENGLEOF'
set(PACKAGE_VERSION "6.6.0")
set(PACKAGE_VERSION_COMPATIBLE TRUE)
OPENGLEOF
redbear_qt_prepare_common_sysroot "${COOKBOOK_SYSROOT}"
#DISABLED: sed -i "s/^ecm_install_po_files_as_qm/#ecm_install_po_files_as_qm/" "${COOKBOOK_SOURCE}/CMakeLists.txt" 2>/dev/null || true
#DISABLED: sed -i "s/^ki18n_install(po)/#ki18n_install(po)/" "${COOKBOOK_SOURCE}/CMakeLists.txt" 2>/dev/null || true
sed -i "/find_package(Qt6.*Widgets)/a find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED)" "${COOKBOOK_SOURCE}/CMakeLists.txt" 2>/dev/null || true
sed -i "s/find_package(Qt6.*REQUIRED Core Gui) OpenGL)/find_package(Qt6 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Core Gui)/" "${COOKBOOK_SOURCE}/CMakeLists.txt" 2>/dev/null || true
sed -i "s/target_link_libraries(KF6Crash PRIVATE Qt6::Gui Qt6::OpenGL/target_link_libraries(KF6Crash PRIVATE Qt6::Gui/" "${COOKBOOK_SOURCE}/src/CMakeLists.txt" 2>/dev/null || true
sed -i "s/find_package(Qt6Test.*REQUIRED)/#find_package(Qt6Test REQUIRED)/" "${COOKBOOK_SOURCE}/CMakeLists.txt" 2>/dev/null || true
KCRASH_SRC="${COOKBOOK_SOURCE}/src/kcrash.cpp"
# OpenGL renderer query: keep the original glGetString-based
# implementation. Mesa (llvmpipe) provides libGL + GL/gl.h which
# exports glGetString. If a GL context is active, it returns the
# renderer string (e.g. "llvmpipe"); if no context, returns empty.
# Previous shortcut replaced the entire function body with
# `return QString()`, which silently lost crash-report metadata.
# restore original behavior now that Mesa is properly installed.
# No sed substitution needed — the upstream function compiles as-is
# on Redox with Mesa installed.
# Stub out setgroups() call - Redox kernel lacks credential syscalls
sed -i 's/setgroups(0, nullptr);/\/\/ setgroups not available on Redox/' "${KCRASH_SRC}"
if ! grep -q "<grp.h>" "${COOKBOOK_SOURCE}/src/kcrash.cpp"; then
printf "%s\n" "#include <grp.h>" "#include <sys/resource.h>" "#include <sys/wait.h>" > /tmp/wait_h.txt
sed -i "\\/<sys.resource.h>/{
r /tmp/wait_h.txt
d
}" "${COOKBOOK_SOURCE}/src/kcrash.cpp"
fi
rm -f CMakeCache.txt
rm -rf CMakeFiles
@@ -45,7 +45,7 @@ ecm_generate_export_header(KF6Crash
target_include_directories(KF6Crash INTERFACE "$<INSTALL_INTERFACE:${KDE_INSTALL_INCLUDEDIR_KF}/KCrash>")
target_link_libraries(KF6Crash PUBLIC Qt6::Core)
target_link_libraries(KF6Crash PRIVATE Qt6::Gui KF6::CoreAddons)
target_link_libraries(KF6Crash PRIVATE Qt6::Gui Qt6::OpenGL KF6::CoreAddons)
if (HAIKU)
target_link_libraries(KF6Crash PRIVATE network)
@@ -741,7 +741,7 @@ static pid_t startDirectly(const char *argv[])
fprintf(stderr, "KCrash failed to fork(), errno = %d\n", errno);
return 0;
case 0:
// setgroups not available on Redox // Remove any extraneous groups
setgroups(0, nullptr); // Remove any extraneous groups
if (setgid(getgid()) < 0 || setuid(getuid()) < 0) {
_exit(253); // This cannot happen. Theoretically.
}
+2 -4
View File
@@ -5,9 +5,8 @@
# Provides epoxy::epoxy cmake target with real EGL/GLES function pointer
# dispatch, replacing the hardcoded-zero stub.
# - KF6Svg: built by local/recipes/kde/kf6-ksvg and consumed by KWin.
# - Sensors / UiTools: removed from CMakeLists.txt (these components
# are not yet in-tree for Redox; sed-removal keeps the cmake build
# bounded).
# - UiTools: not yet in-tree for Redox; sed-removal keeps the cmake build
# bounded until qttools is ported.
# - QML/Quick: cmake config tries to enable QML; the recipe tolerates
# a partial KWin build (kdecoration-style core libs) until full
# QML is wired.
@@ -68,7 +67,6 @@ sed -i '/include(ECMQmlModule)/s/^/#/' "${COOKBOOK_SOURCE}/CMakeLists.txt" 2>/de
# Remove Qt components not available in cross-build
sed -i '/^ UiTools$/d' "${COOKBOOK_SOURCE}/CMakeLists.txt"
sed -i '/^ Sensors$/d' "${COOKBOOK_SOURCE}/CMakeLists.txt"
rm -f CMakeCache.txt
rm -rf CMakeFiles
@@ -68,6 +68,7 @@ find_package(Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
WaylandClient
Widgets
Svg
Sensors
)
if (Qt6Gui_VERSION VERSION_GREATER_EQUAL "6.10.0")