diff --git a/pkgs/kde/frameworks/kservice/default.nix b/pkgs/kde/frameworks/kservice/default.nix index 7451647081e5..c21bab7c8346 100644 --- a/pkgs/kde/frameworks/kservice/default.nix +++ b/pkgs/kde/frameworks/kservice/default.nix @@ -2,10 +2,12 @@ mkKdeDerivation { pname = "kservice"; + # FIXME(later): upstream patches = [ # follow symlinks when generating sycoca - # FIXME(later): upstream ./qdiriterator-follow-symlinks.patch + # explode less when sycoca is deleted + ./handle-sycoca-deletion.patch ]; meta.mainProgram = "kbuildsycoca6"; } diff --git a/pkgs/kde/frameworks/kservice/handle-sycoca-deletion.patch b/pkgs/kde/frameworks/kservice/handle-sycoca-deletion.patch new file mode 100644 index 000000000000..4eceefba998d --- /dev/null +++ b/pkgs/kde/frameworks/kservice/handle-sycoca-deletion.patch @@ -0,0 +1,14 @@ +diff --git a/src/sycoca/ksycoca.cpp b/src/sycoca/ksycoca.cpp +index 981342e6..5940f65f 100644 +--- a/src/sycoca/ksycoca.cpp ++++ b/src/sycoca/ksycoca.cpp +@@ -218,6 +218,10 @@ KSycoca::KSycoca() + connect(d->m_fileWatcher.get(), &KDirWatch::dirty, this, [this]() { + d->slotDatabaseChanged(); + }); ++ // NIXPKGS: we sometimes delete sycoca externally ++ connect(d->m_fileWatcher.get(), &KDirWatch::deleted, this, [this]() { ++ d->slotDatabaseChanged(); ++ }); + } + }