diff options
Diffstat (limited to 'pkgs/development/libraries/kde-frameworks-5.13/kservice')
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" |