From bcc4f2e08823dcb7a37f2d14c8c2f727938bd32c Mon Sep 17 00:00:00 2001 From: Rob Woolley Date: Tue, 7 May 2024 08:25:17 -0700 Subject: [PATCH] lxqt-session: Backport libprocps compatibility fix Signed-off-by: Rob Woolley --- recipes-lxqt/lxqt-session/lxqt-session.bb | 3 +- ...-run-on-systems-with-procps-ng-4.0.0.patch | 85 +++++++++++++++++++ 2 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 recipes-lxqt/lxqt-session/lxqt-session/reaper-build-run-on-systems-with-procps-ng-4.0.0.patch diff --git a/recipes-lxqt/lxqt-session/lxqt-session.bb b/recipes-lxqt/lxqt-session/lxqt-session.bb index 41569f52..e4747385 100644 --- a/recipes-lxqt/lxqt-session/lxqt-session.bb +++ b/recipes-lxqt/lxqt-session/lxqt-session.bb @@ -13,7 +13,8 @@ DEPENDS += " \ kwindowsystem \ " -SRC_URI += "file://0001-do-not-check-for-xdg-udser-dirs-at-build-time-it-is-.patch" +SRC_URI += "file://0001-do-not-check-for-xdg-udser-dirs-at-build-time-it-is-.patch \ + file://reaper-build-run-on-systems-with-procps-ng-4.0.0.patch" SRCREV = "55aa4bba19814ff678e6693e8b9c423455e8eccc" PV = "1.2.0" diff --git a/recipes-lxqt/lxqt-session/lxqt-session/reaper-build-run-on-systems-with-procps-ng-4.0.0.patch b/recipes-lxqt/lxqt-session/lxqt-session/reaper-build-run-on-systems-with-procps-ng-4.0.0.patch new file mode 100644 index 00000000..417acbeb --- /dev/null +++ b/recipes-lxqt/lxqt-session/lxqt-session/reaper-build-run-on-systems-with-procps-ng-4.0.0.patch @@ -0,0 +1,85 @@ +The do_configure task for lxqt-session uses pkgconfig to find libprocps. + +However, newer releases are named libprocps2. Allow either to be used. + +Upstream-Status: Backport[https://github.com/lxqt/lxqt-session/commit/d1db1c791195f3c0cf148e2be8bd46c5a51ca535] +Signed-off-by: Rob Woolley + +From d1db1c791195f3c0cf148e2be8bd46c5a51ca535 Mon Sep 17 00:00:00 2001 +From: Palo Kisa +Date: Tue, 7 Mar 2023 14:21:40 +0100 +Subject: [PATCH] reaper: Build/Run on systems with procps-ng >= 4.0.0 (#456) + +On Linux, make it possible to use libproc2 or libprocps whichever is +available. +--- + CMakeLists.txt | 6 +++++- + lxqt-session/src/procreaper.cpp | 24 +++++++++++++++++++++++- + 2 files changed, 28 insertions(+), 2 deletions(-) + +Index: git/CMakeLists.txt +=================================================================== +--- git.orig/CMakeLists.txt ++++ git/CMakeLists.txt +@@ -35,7 +35,11 @@ find_package(X11 REQUIRED) + message(STATUS "Building with Qt${Qt5Core_VERSION}") + find_package(PkgConfig REQUIRED) + if (CMAKE_SYSTEM_NAME STREQUAL "Linux") +- pkg_search_module(PROCPS REQUIRED libprocps) ++ pkg_search_module(PROCPS REQUIRED libproc2 libprocps) ++ message(STATUS "Using PROCPS -> ${PROCPS_MODULE_NAME} v${PROCPS_VERSION}") ++ if (PROCPS_VERSION VERSION_GREATER_EQUAL 4.0.0) ++ add_definitions("-DUSING_LIBPROC2") ++ endif() + endif() + + +Index: git/lxqt-session/src/procreaper.cpp +=================================================================== +--- git.orig/lxqt-session/src/procreaper.cpp ++++ git/lxqt-session/src/procreaper.cpp +@@ -29,7 +29,11 @@ + #include "log.h" + #if defined(Q_OS_LINUX) + #include +-#include ++# if defined(USING_LIBPROC2) ++# include ++# else ++# include ++# endif + #elif defined(Q_OS_FREEBSD) + #include + #include +@@ -109,6 +113,23 @@ void ProcReaper::stop(const std::set children; + #if defined(Q_OS_LINUX) ++# if defined(USING_LIBPROC2) ++ constexpr pids_item items[] = { PIDS_ID_PPID, PIDS_ID_TGID }; ++ enum rel_items { rel_ppid, rel_tgid }; ++ pids_info * info = nullptr; ++ procps_pids_new(&info, const_cast(items), sizeof(items) / sizeof(pids_item)); ++ pids_stack * stack = nullptr; ++ while ((stack = procps_pids_get(info, PIDS_FETCH_TASKS_ONLY))) ++ { ++ const int ppid = PIDS_VAL(rel_ppid, s_int, stack, info); ++ if (ppid == my_pid) ++ { ++ const int tgid = PIDS_VAL(rel_tgid, s_int, stack, info); ++ children.push_back(tgid); ++ } ++ } ++ procps_pids_unref(&info); ++# else + PROCTAB * proc_dir = ::openproc(PROC_FILLSTAT); + while (proc_t * proc = ::readproc(proc_dir, nullptr)) + { +@@ -119,6 +140,7 @@ void ProcReaper::stop(const std::set