Merge pull request #171064 from teto/neovim-require-check-hook
buildVimPlugin: check that neovim can require the module.
This commit is contained in:
commit
05a3e5c21f
4 changed files with 44 additions and 9 deletions
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
@ -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: {
|
||||
|
|
|
@ -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 = {
|
||||
|
|
Loading…
Reference in a new issue