From ee9bc405b9a231ca88ee13cc2da91f9080cb12ec Mon Sep 17 00:00:00 2001 From: Timo Kaufmann Date: Sat, 5 Jan 2019 13:51:05 +0100 Subject: 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. --- pkgs/applications/editors/neovim/qt.nix | 126 +++++++++++++++++--------------- 1 file changed, 69 insertions(+), 57 deletions(-) (limited to 'pkgs/applications/editors/neovim') diff --git a/pkgs/applications/editors/neovim/qt.nix b/pkgs/applications/editors/neovim/qt.nix index 315a51256f28..d562557ae005 100644 --- a/pkgs/applications/editors/neovim/qt.nix +++ b/pkgs/applications/editors/neovim/qt.nix @@ -1,62 +1,74 @@ { stdenv, fetchFromGitHub, cmake, doxygen, makeWrapper , msgpack, neovim, pythonPackages, qtbase }: -stdenv.mkDerivation rec { - name = "neovim-qt-${version}"; - version = "0.2.11"; - - src = fetchFromGitHub { - owner = "equalsraf"; - repo = "neovim-qt"; - rev = "v${version}"; - sha256 = "0pc1adxc89p2rdvb6nxyqr9sjzqz9zw2dg7a4ardxsl3a8jga1wh"; - }; +let + unwrapped = stdenv.mkDerivation rec { + pname = "neovim-qt-unwrapped"; + version = "0.2.11"; + + src = fetchFromGitHub { + owner = "equalsraf"; + repo = "neovim-qt"; + rev = "v${version}"; + sha256 = "0pc1adxc89p2rdvb6nxyqr9sjzqz9zw2dg7a4ardxsl3a8jga1wh"; + }; + + cmakeFlags = [ + "-DUSE_SYSTEM_MSGPACK=1" + ]; + + buildInputs = [ + neovim.unwrapped # only used to generate help tags at build time + qtbase + ] ++ (with pythonPackages; [ + jinja2 python msgpack + ]); + + nativeBuildInputs = [ cmake doxygen makeWrapper ]; + + enableParallelBuilding = true; + + preCheck = '' + # The GUI tests require a running X server, disable them + sed -i ../test/CMakeLists.txt \ + -e '/^add_xtest_gui/d' + ''; - cmakeFlags = [ - "-DUSE_SYSTEM_MSGPACK=1" - ]; - - buildInputs = with pythonPackages; [ - neovim qtbase msgpack - ] ++ (with pythonPackages; [ - jinja2 msgpack python - ]); - - nativeBuildInputs = [ cmake doxygen makeWrapper ]; - - enableParallelBuilding = true; - - preConfigure = '' - # we rip out a number of tests that fail in the build env - # the GUI tests will never work but the others should - they did before neovim 0.2.0 - # was released - 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; - - 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; { - description = "Neovim client library and GUI, in Qt5"; - license = licenses.isc; - maintainers = with maintainers; [ peterhoeg ]; - inherit (neovim.meta) platforms; - inherit version; + doCheck = true; + + meta = with stdenv.lib; { + description = "Neovim client library and GUI, in Qt5"; + license = licenses.isc; + maintainers = with maintainers; [ peterhoeg ]; + inherit (neovim.meta) platforms; + 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; + } -- cgit 1.4.1