From 3f2aac327f8287656f486cfd1bbd57b1a55aa76d Mon Sep 17 00:00:00 2001 From: K900 Date: Tue, 9 Apr 2024 08:29:36 +0300 Subject: [PATCH] kdePackages.kservice: handle sycoca disappearing better This is not a complete fix, the whole thing is still full of races, but at least this gets it to explode a lot less often. --- pkgs/kde/frameworks/kservice/default.nix | 4 +++- .../kservice/handle-sycoca-deletion.patch | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 pkgs/kde/frameworks/kservice/handle-sycoca-deletion.patch 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(); ++ }); + } + }