summary refs log tree commit diff
path: root/pkgs/development/libraries/kde-frameworks-5.13/kservice
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/libraries/kde-frameworks-5.13/kservice')
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.13/kservice/default.nix25
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.13/kservice/kservice-kbuildsycoca-follow-symlinks.patch13
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.13/kservice/kservice-kbuildsycoca-no-canonicalize-path.patch13
-rw-r--r--pkgs/development/libraries/kde-frameworks-5.13/kservice/setup-hook.sh13
4 files changed, 64 insertions, 0 deletions
diff --git a/pkgs/development/libraries/kde-frameworks-5.13/kservice/default.nix b/pkgs/development/libraries/kde-frameworks-5.13/kservice/default.nix
new file mode 100644
index 00000000000..b46797f5e0e
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.13/kservice/default.nix
@@ -0,0 +1,25 @@
+{ kdeFramework, lib
+, extra-cmake-modules
+, kconfig
+, kcoreaddons
+, kcrash
+, kdbusaddons
+, kdoctools
+, ki18n
+, kwindowsystem
+}:
+
+kdeFramework {
+  name = "kservice";
+  setupHook = ./setup-hook.sh;
+  nativeBuildInputs = [ extra-cmake-modules kdoctools ];
+  buildInputs = [ kcoreaddons kcrash kdbusaddons ki18n kwindowsystem ];
+  propagatedBuildInputs = [ kconfig ];
+  patches = [
+    ./kservice-kbuildsycoca-follow-symlinks.patch
+    ./kservice-kbuildsycoca-no-canonicalize-path.patch
+  ];
+  meta = {
+    maintainers = [ lib.maintainers.ttuegel ];
+  };
+}
diff --git a/pkgs/development/libraries/kde-frameworks-5.13/kservice/kservice-kbuildsycoca-follow-symlinks.patch b/pkgs/development/libraries/kde-frameworks-5.13/kservice/kservice-kbuildsycoca-follow-symlinks.patch
new file mode 100644
index 00000000000..e9bc418544a
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.13/kservice/kservice-kbuildsycoca-follow-symlinks.patch
@@ -0,0 +1,13 @@
+diff --git a/src/kbuildsycoca/kbuildsycoca.cpp b/src/kbuildsycoca/kbuildsycoca.cpp
+index 69b1427..9c37a49 100644
+--- a/src/kbuildsycoca/kbuildsycoca.cpp
++++ b/src/kbuildsycoca/kbuildsycoca.cpp
+@@ -227,7 +227,7 @@ bool KBuildSycoca::build()
+         QStringList relFiles;
+         const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, g_resourceSubdir, QStandardPaths::LocateDirectory);
+         Q_FOREACH (const QString &dir, dirs) {
+-            QDirIterator it(dir, QDirIterator::Subdirectories);
++            QDirIterator it(dir, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
+             while (it.hasNext()) {
+                 const QString filePath = it.next();
+                 Q_ASSERT(filePath.startsWith(dir)); // due to the line below...
diff --git a/pkgs/development/libraries/kde-frameworks-5.13/kservice/kservice-kbuildsycoca-no-canonicalize-path.patch b/pkgs/development/libraries/kde-frameworks-5.13/kservice/kservice-kbuildsycoca-no-canonicalize-path.patch
new file mode 100644
index 00000000000..7e21ebfe86f
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.13/kservice/kservice-kbuildsycoca-no-canonicalize-path.patch
@@ -0,0 +1,13 @@
+diff --git a/src/kbuildsycoca/vfolder_menu.cpp b/src/kbuildsycoca/vfolder_menu.cpp
+index 2eb1275..e39a36f 100644
+--- a/src/kbuildsycoca/vfolder_menu.cpp
++++ b/src/kbuildsycoca/vfolder_menu.cpp
+@@ -412,7 +412,7 @@ VFolderMenu::absoluteDir(const QString &_dir, const QString &baseDir, bool keepR
+     }
+ 
+     if (!relative) {
+-        QString resolved = QDir(dir).canonicalPath();
++        QString resolved = QDir::cleanPath(dir);
+         if (!resolved.isEmpty()) {
+             dir = resolved;
+         }
diff --git a/pkgs/development/libraries/kde-frameworks-5.13/kservice/setup-hook.sh b/pkgs/development/libraries/kde-frameworks-5.13/kservice/setup-hook.sh
new file mode 100644
index 00000000000..007876a0b30
--- /dev/null
+++ b/pkgs/development/libraries/kde-frameworks-5.13/kservice/setup-hook.sh
@@ -0,0 +1,13 @@
+export KDESYCOCA="$out/var/cache/kservices5/$name.sycoca"
+
+KSERVICE_BUILD_KDESYCOCA=
+
+buildKdeSycoca() {
+    if [[ -n "$KSERVICE_BUILD_KDESYCOCA" ]]; then
+        echo "building kdesycoca database in $KDESYCOCA"
+        mkdir -p "$(dirname $KDESYCOCA)"
+        kbuildsycoca5 --nosignal
+    fi
+}
+
+preFixupPhases+=" buildKdeSycoca"