From 75d34dcbb3061d2afad1220c0e4ccf77d80b0125 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Romildo=20Malaquias?= Date: Thu, 16 Jul 2020 18:26:40 -0300 Subject: [PATCH] kde-frameworks.kdesu: search the daemon first in /run/wrappers/bin If looking first in libexec, the eventually wrapped one in /run/wrappers/bin can not be found. This allows wrapping the daemon so that it can be run with sgid privileges. --- ...desu-search-for-wrapped-daemon-first.patch | 38 +++++++++++++++++++ .../libraries/kde-frameworks/kdesu.nix | 1 + 2 files changed, 39 insertions(+) create mode 100644 pkgs/development/libraries/kde-frameworks/kdesu-search-for-wrapped-daemon-first.patch diff --git a/pkgs/development/libraries/kde-frameworks/kdesu-search-for-wrapped-daemon-first.patch b/pkgs/development/libraries/kde-frameworks/kdesu-search-for-wrapped-daemon-first.patch new file mode 100644 index 000000000000..ffc7edadfabd --- /dev/null +++ b/pkgs/development/libraries/kde-frameworks/kdesu-search-for-wrapped-daemon-first.patch @@ -0,0 +1,38 @@ +From 01af4d2a098e5819c09bca37568941dcd4b89d0b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jos=C3=A9=20Romildo=20Malaquias?= +Date: Thu, 16 Jul 2020 13:21:42 -0300 +Subject: [PATCH] Search for the daemon first in /run/wrappers/bin + +If looking first in libexec, the eventually wrapped one in +/run/wrappers/bin can not be found. +--- + src/client.cpp | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +diff --git a/src/client.cpp b/src/client.cpp +index 44fbacd..6b5abf5 100644 +--- a/src/client.cpp ++++ b/src/client.cpp +@@ -378,11 +378,14 @@ int KDEsuClient::stopServer() + + static QString findDaemon() + { +- QString daemon = QFile::decodeName(CMAKE_INSTALL_FULL_LIBEXECDIR_KF5 "/kdesud"); +- if (!QFile::exists(daemon)) { // if not in libexec, find it in PATH +- daemon = QStandardPaths::findExecutable(QStringLiteral("kdesud")); +- if (daemon.isEmpty()) { +- qWarning() << "kdesud daemon not found."; ++ QString daemon = QFile::decodeName("/run/wrappers/bin/kdesud"); ++ if (!QFile::exists(daemon)) { // if not in wrappers ++ daemon = QFile::decodeName(CMAKE_INSTALL_FULL_LIBEXECDIR_KF5 "/kdesud"); ++ if (!QFile::exists(daemon)) { // if not in libexec, find it in PATH ++ daemon = QStandardPaths::findExecutable(QStringLiteral("kdesud")); ++ if (daemon.isEmpty()) { ++ qWarning() << "kdesud daemon not found."; ++ } + } + } + return daemon; +-- +2.27.0 + diff --git a/pkgs/development/libraries/kde-frameworks/kdesu.nix b/pkgs/development/libraries/kde-frameworks/kdesu.nix index df60511b5115..cd7055c4ea82 100644 --- a/pkgs/development/libraries/kde-frameworks/kdesu.nix +++ b/pkgs/development/libraries/kde-frameworks/kdesu.nix @@ -11,4 +11,5 @@ mkDerivation { buildInputs = [ kcoreaddons ki18n kpty kservice qtbase ]; propagatedBuildInputs = [ kpty ]; outputs = [ "out" "dev" ]; + patches = [ ./kdesu-search-for-wrapped-daemon-first.patch ]; }