neovim-qt: wrap in separate derivation
This makes it possible to swap out the (wrapped) neovim without recompiling neovim-qt. In particular, the user can use `neovim.override` to configure their neovim and then use that same configuration for neovim-qt, without having to give up binary caching.
This commit is contained in:
parent
3820041ffd
commit
ee9bc405b9
@ -1,8 +1,9 @@
|
|||||||
{ stdenv, fetchFromGitHub, cmake, doxygen, makeWrapper
|
{ stdenv, fetchFromGitHub, cmake, doxygen, makeWrapper
|
||||||
, msgpack, neovim, pythonPackages, qtbase }:
|
, msgpack, neovim, pythonPackages, qtbase }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
let
|
||||||
name = "neovim-qt-${version}";
|
unwrapped = stdenv.mkDerivation rec {
|
||||||
|
pname = "neovim-qt-unwrapped";
|
||||||
version = "0.2.11";
|
version = "0.2.11";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
@ -16,42 +17,25 @@ stdenv.mkDerivation rec {
|
|||||||
"-DUSE_SYSTEM_MSGPACK=1"
|
"-DUSE_SYSTEM_MSGPACK=1"
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = with pythonPackages; [
|
buildInputs = [
|
||||||
neovim qtbase msgpack
|
neovim.unwrapped # only used to generate help tags at build time
|
||||||
|
qtbase
|
||||||
] ++ (with pythonPackages; [
|
] ++ (with pythonPackages; [
|
||||||
jinja2 msgpack python
|
jinja2 python msgpack
|
||||||
]);
|
]);
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake doxygen makeWrapper ];
|
nativeBuildInputs = [ cmake doxygen makeWrapper ];
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
preConfigure = ''
|
preCheck = ''
|
||||||
# we rip out a number of tests that fail in the build env
|
# The GUI tests require a running X server, disable them
|
||||||
# the GUI tests will never work but the others should - they did before neovim 0.2.0
|
sed -i ../test/CMakeLists.txt \
|
||||||
# was released
|
-e '/^add_xtest_gui/d'
|
||||||
sed -i test/CMakeLists.txt \
|
|
||||||
-e '/^add_xtest_gui/d' \
|
|
||||||
-e '/tst_neovimobject/d' \
|
|
||||||
-e '/tst_neovimconnector/d' \
|
|
||||||
-e '/tst_callallmethods/d' \
|
|
||||||
-e '/tst_encoding/d'
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
|
|
||||||
postInstall = if stdenv.isDarwin then ''
|
|
||||||
mkdir -p $out/Applications
|
|
||||||
mv $out/bin/nvim-qt.app $out/Applications
|
|
||||||
rmdir $out/bin || :
|
|
||||||
|
|
||||||
wrapProgram "$out/Applications/nvim-qt.app/Contents/MacOS/nvim-qt" \
|
|
||||||
--prefix PATH : "${neovim}/bin"
|
|
||||||
'' else ''
|
|
||||||
wrapProgram "$out/bin/nvim-qt" \
|
|
||||||
--prefix PATH : "${neovim}/bin"
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "Neovim client library and GUI, in Qt5";
|
description = "Neovim client library and GUI, in Qt5";
|
||||||
license = licenses.isc;
|
license = licenses.isc;
|
||||||
@ -59,4 +43,32 @@ stdenv.mkDerivation rec {
|
|||||||
inherit (neovim.meta) platforms;
|
inherit (neovim.meta) platforms;
|
||||||
inherit version;
|
inherit version;
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "neovim-qt";
|
||||||
|
version = unwrapped.version;
|
||||||
|
buildCommand = if stdenv.isDarwin then ''
|
||||||
|
mkdir -p $out/Applications
|
||||||
|
cp -r ${unwrapped}/bin/nvim-qt.app $out/Applications
|
||||||
|
|
||||||
|
chmod -R a+w "$out/Applications/nvim-qt.app/Contents/MacOS"
|
||||||
|
wrapProgram "$out/Applications/nvim-qt.app/Contents/MacOS/nvim-qt" \
|
||||||
|
--prefix PATH : "${neovim}/bin"
|
||||||
|
'' else ''
|
||||||
|
makeWrapper '${unwrapped}/bin/nvim-qt' "$out/bin/nvim-qt" \
|
||||||
|
--prefix PATH : "${neovim}/bin"
|
||||||
|
'';
|
||||||
|
|
||||||
|
preferLocalBuild = true;
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
makeWrapper
|
||||||
|
];
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
inherit unwrapped;
|
||||||
|
};
|
||||||
|
|
||||||
|
inherit (unwrapped) meta;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user