diff options
author | Vasyl Solovei <svsdep@gmail.com> | 2018-02-24 08:38:36 +0200 |
---|---|---|
committer | Vasyl Solovei <svsdep@gmail.com> | 2018-02-24 12:53:19 +0200 |
commit | e3c5cf39bcfd8b66017f91ef29bc90f5e4584a67 (patch) | |
tree | 91522f9386c87335c676b65e2303b7bdcd71dace /pkgs | |
parent | c8b1b341237da7c05a38e91c6c0203d3709b2075 (diff) | |
download | nixpkgs-e3c5cf39bcfd8b66017f91ef29bc90f5e4584a67.tar nixpkgs-e3c5cf39bcfd8b66017f91ef29bc90f5e4584a67.tar.gz nixpkgs-e3c5cf39bcfd8b66017f91ef29bc90f5e4584a67.tar.bz2 nixpkgs-e3c5cf39bcfd8b66017f91ef29bc90f5e4584a67.tar.lz nixpkgs-e3c5cf39bcfd8b66017f91ef29bc90f5e4584a67.tar.xz nixpkgs-e3c5cf39bcfd8b66017f91ef29bc90f5e4584a67.tar.zst nixpkgs-e3c5cf39bcfd8b66017f91ef29bc90f5e4584a67.zip |
keepass: bring back and update plugins load patches
Plugins loading was broken as those patches were removed in latest release. I brought patches back and updated them onto 2.38 release code base. This closes #35446.
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/applications/misc/keepass/default.nix | 29 | ||||
-rw-r--r-- | pkgs/applications/misc/keepass/keepass-plugins-load.patch | 1 | ||||
-rw-r--r-- | pkgs/applications/misc/keepass/keepass-plugins.patch | 13 |
3 files changed, 37 insertions, 6 deletions
diff --git a/pkgs/applications/misc/keepass/default.nix b/pkgs/applications/misc/keepass/default.nix index 911be6721ac..5e492fc621f 100644 --- a/pkgs/applications/misc/keepass/default.nix +++ b/pkgs/applications/misc/keepass/default.nix @@ -1,12 +1,6 @@ { stdenv, lib, fetchurl, buildDotnetPackage, substituteAll, makeWrapper, makeDesktopItem, unzip, icoutils, gtk2, xorg, xdotool, xsel, plugins ? [] }: -# KeePass looks for plugins in under directory in which KeePass.exe is -# located. It follows symlinks where looking for that directory, so -# buildEnv is not enough to bring KeePass and plugins together. -# -# This derivation patches KeePass to search for plugins in specified -# plugin derivations in the Nix store and nowhere else. with builtins; buildDotnetPackage rec { baseName = "keepass"; version = "2.38"; @@ -29,6 +23,29 @@ with builtins; buildDotnetPackage rec { }) ]; + # KeePass looks for plugins in under directory in which KeePass.exe is + # located. It follows symlinks where looking for that directory, so + # buildEnv is not enough to bring KeePass and plugins together. + # + # This derivation patches KeePass to search for plugins in specified + # plugin derivations in the Nix store and nowhere else. + pluginLoadPathsPatch = + let outputLc = toString (add 7 (length plugins)); + patchTemplate = readFile ./keepass-plugins.patch; + loadTemplate = readFile ./keepass-plugins-load.patch; + loads = + lib.concatStrings + (map + (p: replaceStrings ["$PATH$"] [ (unsafeDiscardStringContext (toString p)) ] loadTemplate) + plugins); + in replaceStrings ["$OUTPUT_LC$" "$DO_LOADS$"] [outputLc loads] patchTemplate; + + passAsFile = [ "pluginLoadPathsPatch" ]; + postPatch = '' + sed -i 's/\r*$//' KeePass/Forms/MainForm.cs + patch -p1 <$pluginLoadPathsPatchPath + ''; + preConfigure = '' rm -rvf Build/* find . -name "*.sln" -print -exec sed -i 's/Format Version 10.00/Format Version 11.00/g' {} \; diff --git a/pkgs/applications/misc/keepass/keepass-plugins-load.patch b/pkgs/applications/misc/keepass/keepass-plugins-load.patch new file mode 100644 index 00000000000..ca52e7ef191 --- /dev/null +++ b/pkgs/applications/misc/keepass/keepass-plugins-load.patch @@ -0,0 +1 @@ ++ m_pluginManager.LoadAllPlugins("$PATH$/lib/dotnet/keepass", SearchOption.TopDirectoryOnly, new string[] {}); diff --git a/pkgs/applications/misc/keepass/keepass-plugins.patch b/pkgs/applications/misc/keepass/keepass-plugins.patch new file mode 100644 index 00000000000..cde6e7252bc --- /dev/null +++ b/pkgs/applications/misc/keepass/keepass-plugins.patch @@ -0,0 +1,13 @@ +diff --git a/KeePass/Forms/MainForm.cs b/KeePass/Forms/MainForm.cs +index 3d5fca0..4c3f3d4 100644 +--- a/KeePass/Forms/MainForm.cs ++++ b/KeePass/Forms/MainForm.cs +@@ -406,7 +406,$OUTPUT_LC$ @@ namespace KeePass.Forms + m_pluginManager.Initialize(m_pluginDefaultHost); + + m_pluginManager.UnloadAllPlugins(); +- if(AppPolicy.Current.Plugins) m_pluginManager.LoadAllPlugins(); +$DO_LOADS$+ + + // Delete old files *after* loading plugins (when timestamps + // of loaded plugins have been updated already) |