Merge pull request #171064 from teto/neovim-require-check-hook

buildVimPlugin: check that neovim can require the module.
This commit is contained in:
Matthieu Coudron 2022-05-13 23:24:57 +02:00 committed by GitHub
commit 05a3e5c21f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 44 additions and 9 deletions

View File

@ -3,14 +3,10 @@
, vim
, vimCommandCheckHook
, vimGenDocHook
, neovimRequireCheckHook
}:
rec {
addRtp = path: attrs: derivation:
derivation // { rtp = "${derivation}"; } // {
overrideAttrs = f: buildVimPlugin (attrs // f attrs);
};
buildVimPlugin = attrs@{
name ? "${attrs.pname}-${attrs.version}",
namePrefix ? "vimplugin-",
@ -24,7 +20,7 @@ rec {
addonInfo ? null,
...
}:
addRtp "${rtpPath}/${path}" attrs (stdenv.mkDerivation (attrs // {
let drv = stdenv.mkDerivation (attrs // {
name = namePrefix + name;
# dont move the doc folder since vim expects it
@ -44,7 +40,10 @@ rec {
runHook postInstall
'';
}));
});
in drv.overrideAttrs(oa: {
rtp = "${drv}";
});
buildVimPluginFrom2Nix = attrs: buildVimPlugin ({
# vim plugins may override this

View File

@ -0,0 +1,21 @@
# Setup hook for checking whether Python imports succeed
echo "Sourcing neovim-require-check-hook.sh"
neovimRequireCheckHook () {
echo "Executing neovimRequireCheckHook"
if [ -n "$nvimRequireCheck" ]; then
echo "Check whether the following module can be imported: $nvimRequireCheck"
# editorconfig-checker-disable
export HOME="$TMPDIR"
@nvimBinary@ -es --headless -n -u NONE -i NONE --clean -V1 \
--cmd "set rtp+=$out" \
--cmd "lua require('$nvimRequireCheck')"
fi
}
echo "Using neovimRequireCheckHook"
preDistPhases+=" neovimRequireCheckHook"

View File

@ -327,6 +327,9 @@ self: super: {
sed -Ei lua/plenary/curl.lua \
-e 's@(command\s*=\s*")curl(")@\1${curl}/bin/curl\2@'
'';
doInstallCheck = true;
nvimRequireCheck = "plenary";
});
gruvbox-nvim = super.gruvbox-nvim.overrideAttrs (old: {

View File

@ -531,14 +531,26 @@ rec {
};
} ./vim-command-check-hook.sh) {};
neovimRequireCheckHook = callPackage ({ neovim-unwrapped }:
makeSetupHook {
name = "neovim-require-check-hook";
deps = [ neovim-unwrapped ];
substitutions = {
nvimBinary = "${neovim-unwrapped}/bin/nvim";
inherit rtpPath;
};
} ./neovim-require-check-hook.sh) {};
inherit (import ./build-vim-plugin.nix {
inherit lib stdenv rtpPath vim vimGenDocHook vimCommandCheckHook;
inherit lib stdenv rtpPath vim vimGenDocHook vimCommandCheckHook neovimRequireCheckHook;
}) buildVimPlugin buildVimPluginFrom2Nix;
# TODO placeholder to ease working on automatic plugin detection
# this should be a luarocks "flat" install with appropriate vim hooks
buildNeovimPluginFrom2Nix = buildVimPluginFrom2Nix;
buildNeovimPluginFrom2Nix = attrs: let drv = (buildVimPluginFrom2Nix attrs); in drv.overrideAttrs(oa: {
nativeBuildInputs = oa.nativeBuildInputs ++ [ neovimRequireCheckHook ];
});
# used to figure out which python dependencies etc. neovim needs
requiredPlugins = {