kde: remove kf6-kcrash OpenGL stub, restore setgroups, and re-enable KWin Sensors
This commit is contained in:
@@ -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.
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
|
||||
Reference in New Issue
Block a user