forked from mirrors/nixpkgs
2bc0e00372
Previously vim would silently fail when help tags couldn't be generated. We need to pass the "verbose" flag (with verbose level 1) to convince vim to print errors to standard error.
61 lines
1.4 KiB
Nix
61 lines
1.4 KiB
Nix
{ stdenv
|
|
, rtpPath ? "share/vim-plugins"
|
|
, vim
|
|
}:
|
|
|
|
rec {
|
|
addRtp = path: attrs: derivation:
|
|
derivation // { rtp = "${derivation}/${path}"; } // {
|
|
overrideAttrs = f: buildVimPlugin (attrs // f attrs);
|
|
};
|
|
|
|
buildVimPlugin = attrs@{
|
|
name ? "${attrs.pname}-${attrs.version}",
|
|
namePrefix ? "vimplugin-",
|
|
src,
|
|
unpackPhase ? "",
|
|
configurePhase ? "",
|
|
buildPhase ? "",
|
|
preInstall ? "",
|
|
postInstall ? "",
|
|
path ? (builtins.parseDrvName name).name,
|
|
addonInfo ? null,
|
|
...
|
|
}:
|
|
addRtp "${rtpPath}/${path}" attrs (stdenv.mkDerivation (attrs // {
|
|
name = namePrefix + name;
|
|
|
|
inherit unpackPhase configurePhase buildPhase addonInfo preInstall postInstall;
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
target=$out/${rtpPath}/${path}
|
|
mkdir -p $out/${rtpPath}
|
|
cp -r . $target
|
|
|
|
# build help tags
|
|
if [ -d "$target/doc" ]; then
|
|
echo "Building help tags"
|
|
if ! ${vim}/bin/vim -N -u NONE -i NONE -n -E -s -V1 -c "helptags $target/doc" +quit!; then
|
|
echo "Failed to build help tags!"
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "No docs available"
|
|
fi
|
|
|
|
if [ -n "$addonInfo" ]; then
|
|
echo "$addonInfo" > $target/addon-info.json
|
|
fi
|
|
|
|
runHook postInstall
|
|
'';
|
|
}));
|
|
|
|
buildVimPluginFrom2Nix = attrs: buildVimPlugin ({
|
|
buildPhase = ":";
|
|
configurePhase =":";
|
|
} // attrs);
|
|
}
|