summary refs log tree commit diff
path: root/pkgs/tools/misc/fzf
diff options
context:
space:
mode:
authorBenjamin Hipple <bhipple@protonmail.com>2020-02-09 18:43:22 -0500
committerGitHub <noreply@github.com>2020-02-09 15:43:22 -0800
commite85e257ad98a5fb3a98d5af26515501b7fefe6a2 (patch)
tree57b6556ea5047dea3ff6e4d45e6e3203cfe9d60b /pkgs/tools/misc/fzf
parent349b471469fa9dd0293f26149a2860da3b6e3633 (diff)
downloadnixpkgs-e85e257ad98a5fb3a98d5af26515501b7fefe6a2.tar
nixpkgs-e85e257ad98a5fb3a98d5af26515501b7fefe6a2.tar.gz
nixpkgs-e85e257ad98a5fb3a98d5af26515501b7fefe6a2.tar.bz2
nixpkgs-e85e257ad98a5fb3a98d5af26515501b7fefe6a2.tar.lz
nixpkgs-e85e257ad98a5fb3a98d5af26515501b7fefe6a2.tar.xz
nixpkgs-e85e257ad98a5fb3a98d5af26515501b7fefe6a2.tar.zst
nixpkgs-e85e257ad98a5fb3a98d5af26515501b7fefe6a2.zip
fzf: fix patch for vim plugin; enable tests; avoid direct $src… (#79575)
It was previously referencing `$bin`, but this package no longer produces a
`bin` output, just `out` and `share`. Updated to make the comparison check a bit
more robust.

Also updated to avoid direct dependency on the `$src` directory out of the nix
store, instead using the processed src setup in the unpackPhase. This provides a
cleaner abstraction between the build/install phase and the input src phase, and
avoids an unnecessary dependency on whether the source disted tarball comes from
`fetchFromGitHub` (in which case it's an unpacked directory) or something like
`fetchurl`. In either case, stdenv is responsible for processing the input `src`
and setting up a clean build dir for us, so we should use that.

This produces an equivalent directory tree, except that the vim plugin is no
longer broken.
Diffstat (limited to 'pkgs/tools/misc/fzf')
-rw-r--r--pkgs/tools/misc/fzf/default.nix22
1 files changed, 12 insertions, 10 deletions
diff --git a/pkgs/tools/misc/fzf/default.nix b/pkgs/tools/misc/fzf/default.nix
index 960373e7e5f..0694d5931ef 100644
--- a/pkgs/tools/misc/fzf/default.nix
+++ b/pkgs/tools/misc/fzf/default.nix
@@ -19,32 +19,34 @@ buildGoModule rec {
 
   buildInputs = [ ncurses ];
 
+  # The vim plugin expects a relative path to the binary; patch it to abspath.
   patchPhase = ''
-    sed -i -e "s|expand('<sfile>:h:h')|'$bin'|" plugin/fzf.vim
+    sed -i -e "s|expand('<sfile>:h:h')|'$out'|" plugin/fzf.vim
 
-    # Original and output files can't be the same
-    if cmp -s $src/plugin/fzf.vim plugin/fzf.vim; then
-      echo "Vim plugin patch not applied properly. Aborting" && \
-      exit 1
+    if ! grep -q $out plugin/fzf.vim; then
+        echo "Failed to replace vim base_dir path with $out"
+        exit 1
     fi
   '';
 
+  doCheck = true;
+
   preInstall = ''
     mkdir -p $out/share/fish/{vendor_functions.d,vendor_conf.d}
-    cp $src/shell/key-bindings.fish $out/share/fish/vendor_functions.d/fzf_key_bindings.fish
+    cp shell/key-bindings.fish $out/share/fish/vendor_functions.d/fzf_key_bindings.fish
     cp ${fishHook} $out/share/fish/vendor_conf.d/load-fzf-key-bindings.fish
   '';
 
   postInstall = ''
-    cp $src/bin/fzf-tmux $out/bin
+    cp bin/fzf-tmux $out/bin
 
     mkdir -p $man/share/man
-    cp -r $src/man/man1 $man/share/man
+    cp -r man/man1 $man/share/man
 
     mkdir -p $out/share/vim-plugins/${pname}
-    cp -r $src/plugin $out/share/vim-plugins/${pname}
+    cp -r plugin $out/share/vim-plugins/${pname}
 
-    cp -R $src/shell $out/share/fzf
+    cp -R shell $out/share/fzf
     cat <<SCRIPT > $out/bin/fzf-share
     #!${runtimeShell}
     # Run this script to find the fzf shared folder where all the shell