From fc408c8690218bf07d7c9338e39c23577348c23b Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Wed, 2 Oct 2019 00:08:13 +0200 Subject: [PATCH 1/2] lua.pkgs.luv.libluv: fix linking against lua on darwin [ 50%] Building C object CMakeFiles/luv.dir/src/luv.c.o [100%] Linking C shared library libluv.dylib Undefined symbols for architecture x86_64: "_luaL_addlstring", referenced from: _thread_dump in luv.c.o ... --- pkgs/development/lua-modules/overrides.nix | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/pkgs/development/lua-modules/overrides.nix b/pkgs/development/lua-modules/overrides.nix index 87636c84c41..bb640cb09a5 100644 --- a/pkgs/development/lua-modules/overrides.nix +++ b/pkgs/development/lua-modules/overrides.nix @@ -273,17 +273,22 @@ with super; sed -i 's,\(option(WITH_SHARED_LIBUV.*\)OFF,\1ON,' CMakeLists.txt rm -rf deps/libuv ''; - propagatedBuildInputs = [ - pkgs.libuv - ]; + + buildInputs = [ pkgs.libuv ]; passthru = { - libluv = self.luv.override({ + libluv = self.luv.override ({ preBuild = self.luv.preBuild + '' - sed -i 's,\(option(BUILD_MODULE.*\)ON,\1OFF,' CMakeLists.txt - sed -i 's,\(option(BUILD_SHARED_LIBS.*\)OFF,\1ON,' CMakeLists.txt - sed -i 's,${"\${INSTALL_INC_DIR}"},${placeholder "out"}/include/luv,' CMakeLists.txt + sed -i 's,\(option(BUILD_MODULE.*\)ON,\1OFF,' CMakeLists.txt + sed -i 's,\(option(BUILD_SHARED_LIBS.*\)OFF,\1ON,' CMakeLists.txt + sed -i 's,${"\${INSTALL_INC_DIR}"},${placeholder "out"}/include/luv,' CMakeLists.txt ''; + + nativeBuildInputs = [ pkgs.fixDarwinDylibNames ]; + + # Fixup linking libluv.dylib, for some reason it's not linked against lua correctly. + NIX_LDFLAGS = pkgs.lib.optionalString pkgs.stdenv.isDarwin + (if isLuaJIT then "-lluajit-${lua.luaversion}" else "-llua"); }); }; }); From c819648a68edd4bfe44456f04830cffdfeb49b11 Mon Sep 17 00:00:00 2001 From: Daiderd Jordan Date: Wed, 2 Oct 2019 00:08:47 +0200 Subject: [PATCH 2/2] neovim: link against libluv on darwin --- pkgs/applications/editors/neovim/default.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/editors/neovim/default.nix b/pkgs/applications/editors/neovim/default.nix index 6808d7115c5..99b04059730 100644 --- a/pkgs/applications/editors/neovim/default.nix +++ b/pkgs/applications/editors/neovim/default.nix @@ -79,9 +79,11 @@ in cmakeFlags = [ "-DGPERF_PRG=${gperf}/bin/gperf" - "-DLIBLUV_LIBRARY=${lua.pkgs.luv}/lib/lua/${lua.luaversion}/luv.so" "-DLUA_PRG=${neovimLuaEnv.interpreter}" ] + # FIXME: this is verry messy and strange. + ++ optional (!stdenv.isDarwin) "-DLIBLUV_LIBRARY=${lua.pkgs.luv}/lib/lua/${lua.luaversion}/luv.so" + ++ optional (stdenv.isDarwin) "-DLIBLUV_LIBRARY=${lua.pkgs.luv.libluv}/lib/lua/${lua.luaversion}/libluv.dylib" ++ optional doCheck "-DBUSTED_PRG=${neovimLuaEnv}/bin/busted" ++ optional (!lua.pkgs.isLuaJIT) "-DPREFER_LUA=ON" ;