diff options
author | Matthieu Coudron <teto@users.noreply.github.com> | 2021-09-12 18:08:53 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-12 18:08:53 +0200 |
commit | ab9c7819fe57fbdbe352b9858497d21c7083d54c (patch) | |
tree | fd63cfcb343d07afd5d5989776a28950ee085fd1 /pkgs | |
parent | 3ca823aa9a102d16fe686b63103cb885747eec3b (diff) | |
parent | b97977681eec4233bcc0428ccdd93a038f810ebf (diff) |
Merge pull request #136615 from teto/lua-flat
Various lua changes/cleanup
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/applications/editors/neovim/tests.nix | 3 | ||||
-rw-r--r-- | pkgs/applications/editors/neovim/utils.nix | 7 | ||||
-rw-r--r-- | pkgs/applications/editors/vis/default.nix | 15 | ||||
-rw-r--r-- | pkgs/applications/window-managers/awesome/default.nix | 22 | ||||
-rw-r--r-- | pkgs/development/interpreters/lua-5/build-lua-package.nix | 2 | ||||
-rw-r--r-- | pkgs/development/interpreters/lua-5/interpreter.nix | 27 | ||||
-rw-r--r-- | pkgs/development/interpreters/lua-5/wrap-lua.nix | 13 | ||||
-rw-r--r-- | pkgs/development/interpreters/lua-5/wrapper.nix | 19 | ||||
-rw-r--r-- | pkgs/development/interpreters/luajit/default.nix | 24 | ||||
-rw-r--r-- | pkgs/development/lua-modules/default.nix | 7 | ||||
-rw-r--r-- | pkgs/development/lua-modules/lib.nix | 63 | ||||
-rw-r--r-- | pkgs/development/lua-modules/overrides.nix | 6 | ||||
-rw-r--r-- | pkgs/games/mudlet/default.nix | 6 | ||||
-rw-r--r-- | pkgs/servers/xmpp/prosody/default.nix | 31 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 9 | ||||
-rw-r--r-- | pkgs/top-level/lua-packages.nix | 89 |
16 files changed, 203 insertions, 140 deletions
diff --git a/pkgs/applications/editors/neovim/tests.nix b/pkgs/applications/editors/neovim/tests.nix index 5f4cda714a679..08342a1543d51 100644 --- a/pkgs/applications/editors/neovim/tests.nix +++ b/pkgs/applications/editors/neovim/tests.nix @@ -133,7 +133,7 @@ rec { configure.pathogen.pluginNames = [ "vim-nix" ]; }; - nvimWithLuaPackages = wrapNeovim2 "with-lua-packages" (makeNeovimConfig { + nvimWithLuaPackages = wrapNeovim2 "-with-lua-packages" (makeNeovimConfig { extraLuaPackages = ps: [ps.mpack]; customRC = '' lua require("mpack") @@ -141,6 +141,7 @@ rec { }); nvim_with_lua_packages = runTest nvimWithLuaPackages '' + export HOME=$TMPDIR ${nvimWithLuaPackages}/bin/nvim -i NONE --noplugin -es ''; }) diff --git a/pkgs/applications/editors/neovim/utils.nix b/pkgs/applications/editors/neovim/utils.nix index 837c9a79ffe84..bf0d80d1f07dd 100644 --- a/pkgs/applications/editors/neovim/utils.nix +++ b/pkgs/applications/editors/neovim/utils.nix @@ -78,8 +78,7 @@ let ++ (extraPython3Packages ps) ++ (lib.concatMap (f: f ps) pluginPython3Packages)); - lua = neovim-unwrapped.lua; - luaEnv = lua.withPackages(ps: extraLuaPackages ps); + luaEnv = neovim-unwrapped.lua.withPackages(extraLuaPackages); # Mapping a boolean argument to a key that tells us whether to add or not to # add to nvim's 'embedded rc' this: @@ -115,8 +114,8 @@ let ] ++ lib.optionals (binPath != "") [ "--suffix" "PATH" ":" binPath ] ++ lib.optionals (luaEnv != null) [ - "--prefix" "LUA_PATH" ";" "${luaEnv}/share/lua/${lua.luaversion}/?.lua" - "--prefix" "LUA_CPATH" ";" "${luaEnv}/lib/lua/${lua.luaversion}/?.so" + "--prefix" "LUA_PATH" ";" (neovim-unwrapped.lua.pkgs.lib.genLuaPathAbsStr luaEnv) + "--prefix" "LUA_CPATH" ";" (neovim-unwrapped.lua.pkgs.lib.genLuaCPathAbsStr luaEnv) ]; diff --git a/pkgs/applications/editors/vis/default.nix b/pkgs/applications/editors/vis/default.nix index 9a020233f3b09..a658f95ac0145 100644 --- a/pkgs/applications/editors/vis/default.nix +++ b/pkgs/applications/editors/vis/default.nix @@ -1,8 +1,11 @@ { lib, stdenv, fetchFromGitHub, pkg-config, makeWrapper, makeDesktopItem -, ncurses, libtermkey, lpeg, lua +, ncurses, libtermkey, lua , acl ? null, libselinux ? null }: +let + luaEnv = lua.withPackages(ps: [ ps.lpeg ]); +in stdenv.mkDerivation rec { pname = "vis"; version = "0.7"; @@ -19,8 +22,7 @@ stdenv.mkDerivation rec { buildInputs = [ ncurses libtermkey - lua - lpeg + luaEnv ] ++ lib.optionals stdenv.isLinux [ acl libselinux @@ -30,16 +32,13 @@ stdenv.mkDerivation rec { patchShebangs ./configure ''; - LUA_CPATH="${lpeg}/lib/lua/${lua.luaversion}/?.so;"; - LUA_PATH="${lpeg}/share/lua/${lua.luaversion}/?.lua"; - postInstall = '' mkdir -p "$out/share/applications" cp $desktopItem/share/applications/* $out/share/applications echo wrapping $out/bin/vis with runtime environment wrapProgram $out/bin/vis \ - --prefix LUA_CPATH ';' "${lpeg}/lib/lua/${lua.luaversion}/?.so" \ - --prefix LUA_PATH ';' "${lpeg}/share/lua/${lua.luaversion}/?.lua" \ + --prefix LUA_CPATH ';' "${luaEnv}/lib/lua/${lua.luaversion}/?.so" \ + --prefix LUA_PATH ';' "${luaEnv}/share/lua/${lua.luaversion}/?.lua" \ --prefix VIS_PATH : "\$HOME/.config:$out/share/vis" ''; diff --git a/pkgs/applications/window-managers/awesome/default.nix b/pkgs/applications/window-managers/awesome/default.nix index a526636063e96..90b559e7d44ca 100644 --- a/pkgs/applications/window-managers/awesome/default.nix +++ b/pkgs/applications/window-managers/awesome/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchFromGitHub, luaPackages, cairo, librsvg, cmake, imagemagick, pkg-config, gdk-pixbuf +{ lib, stdenv, fetchFromGitHub, lua, cairo, librsvg, cmake, imagemagick, pkg-config, gdk-pixbuf , xorg, libstartup_notification, libxdg_basedir, libpthreadstubs , xcb-util-cursor, makeWrapper, pango, gobject-introspection , which, dbus, nettools, git, doxygen @@ -12,10 +12,11 @@ # needed for beautiful.gtk to work assert gtk3Support -> gtk3 != null; +let + luaEnv = lua.withPackages(ps: [ ps.lgi ps.ldoc ]); +in + stdenv.mkDerivation rec { - lgi = luaPackages.lgi; - lua = luaPackages.lua; - ldoc = luaPackages.ldoc; pname = "awesome"; version = "4.3"; @@ -35,7 +36,6 @@ stdenv.mkDerivation rec { xmlto docbook_xml_dtd_45 docbook_xsl findXMLCatalogs asciidoctor - ldoc ]; outputs = [ "out" "doc" ]; @@ -44,7 +44,7 @@ stdenv.mkDerivation rec { propagatedUserEnvPkgs = [ hicolor-icon-theme ]; buildInputs = [ cairo librsvg dbus gdk-pixbuf gobject-introspection - git lgi libpthreadstubs libstartup_notification + git luaEnv libpthreadstubs libstartup_notification libxdg_basedir lua nettools pango xcb-util-cursor xorg.libXau xorg.libXdmcp xorg.libxcb xorg.libxshmfence xorg.xcbutil xorg.xcbutilimage xorg.xcbutilkeysyms @@ -55,14 +55,14 @@ stdenv.mkDerivation rec { cmakeFlags = [ #"-DGENERATE_MANPAGES=ON" "-DOVERRIDE_VERSION=${version}" - ] ++ lib.optional luaPackages.isLuaJIT "-DLUA_LIBRARY=${lua}/lib/libluajit-5.1.so" + ] ++ lib.optional lua.pkgs.isLuaJIT "-DLUA_LIBRARY=${lua}/lib/libluajit-5.1.so" ; GI_TYPELIB_PATH = "${pango.out}/lib/girepository-1.0"; # LUA_CPATH and LUA_PATH are used only for *building*, see the --search flags # below for how awesome finds the libraries it needs at runtime. - LUA_CPATH = "${lgi}/lib/lua/${lua.luaversion}/?.so"; - LUA_PATH = "${lgi}/share/lua/${lua.luaversion}/?.lua;;"; + LUA_CPATH = "${luaEnv}/lib/lua/${lua.luaversion}/?.so"; + LUA_PATH = "${luaEnv}/share/lua/${lua.luaversion}/?.lua;;"; postInstall = '' # Don't use wrapProgram or the wrapper will duplicate the --search @@ -70,8 +70,8 @@ stdenv.mkDerivation rec { mv "$out/bin/awesome" "$out/bin/.awesome-wrapped" makeWrapper "$out/bin/.awesome-wrapped" "$out/bin/awesome" \ --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ - --add-flags '--search ${lgi}/lib/lua/${lua.luaversion}' \ - --add-flags '--search ${lgi}/share/lua/${lua.luaversion}' \ + --add-flags '--search ${luaEnv}/lib/lua/${lua.luaversion}' \ + --add-flags '--search ${luaEnv}/share/lua/${lua.luaversion}' \ --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" wrapProgram $out/bin/awesome-client \ diff --git a/pkgs/development/interpreters/lua-5/build-lua-package.nix b/pkgs/development/interpreters/lua-5/build-lua-package.nix index 5639b2a4bb901..64e872ad5f638 100644 --- a/pkgs/development/interpreters/lua-5/build-lua-package.nix +++ b/pkgs/development/interpreters/lua-5/build-lua-package.nix @@ -238,7 +238,7 @@ builtins.removeAttrs attrs ["disabled" "checkInputs" "externalDeps" "extraVariab inherit externalDeps; } // passthru; - meta = with lib.maintainers; { + meta = { platforms = lua.meta.platforms; # add extra maintainer(s) to every package maintainers = (meta.maintainers or []) ++ [ ]; diff --git a/pkgs/development/interpreters/lua-5/interpreter.nix b/pkgs/development/interpreters/lua-5/interpreter.nix index 3476b2b648b60..a780e6ba49f1e 100644 --- a/pkgs/development/interpreters/lua-5/interpreter.nix +++ b/pkgs/development/interpreters/lua-5/interpreter.nix @@ -1,7 +1,8 @@ { lib, stdenv, fetchurl, readline , compat ? false , callPackage -, packageOverrides ? (self: super: {}) +, makeWrapper +, packageOverrides ? (final: prev: {}) , sourceVersion , hash , patches ? [] @@ -10,7 +11,10 @@ , staticOnly ? stdenv.hostPlatform.isStatic }: let -luaPackages = callPackage ../../lua-modules {lua=self; overrides=packageOverrides;}; + luaPackages = callPackage ../../lua-modules { + lua = self; + overrides = packageOverrides; + }; plat = if stdenv.isLinux then "linux" else if stdenv.isDarwin then "macosx" @@ -31,21 +35,32 @@ self = stdenv.mkDerivation rec { sha256 = hash; }; - LuaPathSearchPaths = luaPackages.getLuaPathList luaversion; - LuaCPathSearchPaths = luaPackages.getLuaCPathList luaversion; + LuaPathSearchPaths = luaPackages.lib.luaPathList; + LuaCPathSearchPaths = luaPackages.lib.luaCPathList; setupHook = luaPackages.lua-setup-hook LuaPathSearchPaths LuaCPathSearchPaths; + nativeBuildInputs = [ makeWrapper ]; buildInputs = [ readline ]; inherit patches; - postPatch = lib.optionalString (!stdenv.isDarwin && !staticOnly) '' + # we can't pass flags to the lua makefile because for portability, everything is hardcoded + postPatch = '' + { + echo -e ' + #undef LUA_PATH_DEFAULT + #define LUA_PATH_DEFAULT "./share/lua/${luaversion}/?.lua;./?.lua;./?/init.lua" + #undef LUA_CPATH_DEFAULT + #define LUA_CPATH_DEFAULT "./lib/lua/${luaversion}/?.so;./?.so;./lib/lua/${luaversion}/loadall.so" + ' + } >> src/luaconf.h + '' + lib.optionalString (!stdenv.isDarwin && !staticOnly) '' # Add a target for a shared library to the Makefile. sed -e '1s/^/LUA_SO = liblua.so/' \ -e 's/ALL_T *= */&$(LUA_SO) /' \ -i src/Makefile cat ${./lua-dso.make} >> src/Makefile - ''; + '' ; # see configurePhase for additional flags (with space) makeFlags = [ diff --git a/pkgs/development/interpreters/lua-5/wrap-lua.nix b/pkgs/development/interpreters/lua-5/wrap-lua.nix index f00e0d5ac336e..049afcd6116d9 100644 --- a/pkgs/development/interpreters/lua-5/wrap-lua.nix +++ b/pkgs/development/interpreters/lua-5/wrap-lua.nix @@ -4,16 +4,13 @@ , makeWrapper }: -with lib; - # defined in trivial-builders.nix # imported as wrapLua in lua-packages.nix and passed to build-lua-derivation to be used as buildInput makeSetupHook { - deps = makeWrapper; - substitutions.executable = lua.interpreter; - substitutions.lua = lua; - substitutions.LuaPathSearchPaths = lib.escapeShellArgs lua.LuaPathSearchPaths; - substitutions.LuaCPathSearchPaths = lib.escapeShellArgs lua.LuaPathSearchPaths; - + deps = makeWrapper; + substitutions.executable = lua.interpreter; + substitutions.lua = lua; + substitutions.LuaPathSearchPaths = lib.escapeShellArgs lua.LuaPathSearchPaths; + substitutions.LuaCPathSearchPaths = lib.escapeShellArgs lua.LuaPathSearchPaths; } ./wrap.sh diff --git a/pkgs/development/interpreters/lua-5/wrapper.nix b/pkgs/development/interpreters/lua-5/wrapper.nix index 0459b67534d4e..b9ac255d24329 100644 --- a/pkgs/development/interpreters/lua-5/wrapper.nix +++ b/pkgs/development/interpreters/lua-5/wrapper.nix @@ -11,13 +11,18 @@ let env = let paths = requiredLuaModules (extraLibs ++ [ lua ] ); - in (buildEnv { + in buildEnv { name = "${lua.name}-env"; inherit paths; inherit ignoreCollisions; extraOutputsToInstall = [ "out" ] ++ extraOutputsToInstall; + nativeBuildInputs = [ + makeWrapper + (lua.pkgs.lua-setup-hook lua.LuaPathSearchPaths lua.LuaCPathSearchPaths) + ]; + # we create wrapper for the binaries in the different packages postBuild = '' if [ -L "$out/bin" ]; then @@ -37,7 +42,12 @@ let rm -f "$out/bin/$prg" if [ -x "$prg" ]; then nix_debug "Making wrapper $prg" - makeWrapper "$path/bin/$prg" "$out/bin/$prg" --suffix LUA_PATH ';' "$LUA_PATH" --suffix LUA_CPATH ';' "$LUA_CPATH" ${lib.concatStringsSep " " makeWrapperArgs} + makeWrapper "$path/bin/$prg" "$out/bin/$prg" \ + --set-default LUA_PATH ";;" \ + --suffix LUA_PATH ';' "$LUA_PATH" \ + --set-default LUA_CPATH ";;" \ + --suffix LUA_CPATH ';' "$LUA_CPATH" \ + ${lib.concatStringsSep " " makeWrapperArgs} fi fi done @@ -62,8 +72,5 @@ let ''; }; }; - }).overrideAttrs (_: { - # Add extra deps needed for postBuild hook. - nativeBuildInputs = [ makeWrapper lua ]; - }); + }; in env diff --git a/pkgs/development/interpreters/luajit/default.nix b/pkgs/development/interpreters/luajit/default.nix index 6a163c4b562fa..ac74610bcce9d 100644 --- a/pkgs/development/interpreters/luajit/default.nix +++ b/pkgs/development/interpreters/luajit/default.nix @@ -10,7 +10,7 @@ , extraMeta ? { } , callPackage , self -, packageOverrides ? (self: super: { }) +, packageOverrides ? (final: prev: {}) , enableFFI ? true , enableJIT ? true , enableJITDebugModule ? enableJIT @@ -62,6 +62,15 @@ stdenv.mkDerivation rec { # passed by nixpkgs CC wrapper is insufficient on its own substituteInPlace src/Makefile --replace "#CCDEBUG= -g" "CCDEBUG= -g" fi + + { + echo -e ' + #undef LUA_PATH_DEFAULT + #define LUA_PATH_DEFAULT "./share/lua/${luaversion}/?.lua;./?.lua;./?/init.lua" + #undef LUA_CPATH_DEFAULT + #define LUA_CPATH_DEFAULT "./lib/lua/${luaversion}/?.so;./?.so;./lib/lua/${luaversion}/loadall.so" + ' + } >> src/luaconf.h ''; configurePhase = false; @@ -88,15 +97,10 @@ stdenv.mkDerivation rec { ln -s "$out"/bin/luajit-* "$out"/bin/luajit ''; - LuaPathSearchPaths = [ - "lib/lua/${luaversion}/?.lua" - "share/lua/${luaversion}/?.lua" - "share/lua/${luaversion}/?/init.lua" - "lib/lua/${luaversion}/?/init.lua" - "share/${name}/?.lua" - ]; - LuaCPathSearchPaths = [ "lib/lua/${luaversion}/?.so" "share/lua/${luaversion}/?.so" ]; - setupHook = luaPackages.lua-setup-hook LuaPathSearchPaths LuaCPathSearchPaths; + LuaPathSearchPaths = luaPackages.lib.luaPathList; + LuaCPathSearchPaths = luaPackages.lib.luaCPathList; + + setupHook = luaPackages.lua-setup-hook luaPackages.lib.luaPathList luaPackages.lib.luaCPathList; passthru = rec { buildEnv = callPackage ../lua-5/wrapper.nix { diff --git a/pkgs/development/lua-modules/default.nix b/pkgs/development/lua-modules/default.nix index 091b94f58f512..e4927ee304649 100644 --- a/pkgs/development/lua-modules/default.nix +++ b/pkgs/development/lua-modules/default.nix @@ -1,7 +1,7 @@ # inspired by pkgs/development/haskell-modules/default.nix { pkgs, lib , lua -, overrides ? (self: super: {}) +, overrides ? (final: prev: {}) }: let @@ -15,7 +15,7 @@ let overridenPackages = import ./overrides.nix { inherit pkgs; }; generatedPackages = if (builtins.pathExists ./generated-packages.nix) then - pkgs.callPackage ./generated-packages.nix { } else (self: super: {}); + pkgs.callPackage ./generated-packages.nix { } else (final: prev: {}); extensible-self = lib.makeExtensible (extends overrides @@ -24,7 +24,6 @@ let initialPackages ) ) - ) - ; + ); in extensible-self diff --git a/pkgs/development/lua-modules/lib.nix b/pkgs/development/lua-modules/lib.nix new file mode 100644 index 0000000000000..9c31f9a5c53c2 --- /dev/null +++ b/pkgs/development/lua-modules/lib.nix @@ -0,0 +1,63 @@ +{ pkgs, lib, lua }: +let + requiredLuaModules = drvs: with lib; let + modules = filter hasLuaModule drvs; + in unique ([lua] ++ modules ++ concatLists (catAttrs "requiredLuaModules" modules)); + # Check whether a derivation provides a lua module. + hasLuaModule = drv: drv ? luaModule; +in +rec { + inherit hasLuaModule requiredLuaModules; + + luaPathList = [ + "share/lua/${lua.luaversion}/?.lua" + "share/lua/${lua.luaversion}/?/init.lua" + ]; + luaCPathList = [ + "lib/lua/${lua.luaversion}/?.so" + ]; + + /* generate paths without a prefix + */ + luaPathRelStr = lib.concatStringsSep ";" luaPathList; + luaCPathRelStr = lib.concatStringsSep ";" luaCPathList; + + /* generate LUA_(C)PATH value for a specific derivation, i.e., with absolute paths + */ + genLuaPathAbsStr = drv: lib.concatMapStringsSep ";" (x: "${drv}/${x}") luaPathList; + genLuaCPathAbsStr = drv: lib.concatMapStringsSep ";" (x: "${drv}/${x}") luaCPathList; + + /* Generate a LUA_PATH with absolute paths + */ + # genLuaPathAbs = drv: + # lib.concatStringsSep ";" (map (x: "${drv}/x") luaPathList); + + luaAtLeast = lib.versionAtLeast lua.luaversion; + luaOlder = lib.versionOlder lua.luaversion; + isLua51 = (lib.versions.majorMinor lua.version) == "5.1"; + isLua52 = (lib.versions.majorMinor lua.version) == "5.2"; + isLua53 = lua.luaversion == "5.3"; + isLuaJIT = lib.getName lua == "luajit"; + + /* generates the relative path towards the folder where + seems stable even when using lua_modules_path = "" + + Example: + getDataFolder luaPackages.stdlib + => stdlib-41.2.2-1-rocks/stdlib/41.2.2-1/doc + */ + getDataFolder = drv: + "${drv.pname}-${drv.version}-rocks/${drv.pname}/${drv.version}"; + + /* Convert derivation to a lua module. + so that luaRequireModules can be run later + */ + toLuaModule = drv: + drv.overrideAttrs( oldAttrs: { + # Use passthru in order to prevent rebuilds when possible. + passthru = (oldAttrs.passthru or {}) // { + luaModule = lua; + requiredLuaModules = requiredLuaModules drv.propagatedBuildInputs; + }; + }); +} diff --git a/pkgs/development/lua-modules/overrides.nix b/pkgs/development/lua-modules/overrides.nix index a15bd6e536633..247cf89f39450 100644 --- a/pkgs/development/lua-modules/overrides.nix +++ b/pkgs/development/lua-modules/overrides.nix @@ -363,6 +363,12 @@ with super; ''; }); + # TODO just while testing, remove afterwards + # toVimPlugin should do it instead + gitsigns-nvim = super.gitsigns-nvim.overrideAttrs(oa: { + nativeBuildInputs = oa.nativeBuildInputs or [] ++ [ pkgs.vimUtils.vimGenDocHook ]; + }); + # aliases cjson = super.lua-cjson; } diff --git a/pkgs/games/mudlet/default.nix b/pkgs/games/mudlet/default.nix index 139baece4a6f9..9d8898b119e19 100644 --- a/pkgs/games/mudlet/default.nix +++ b/pkgs/games/mudlet/default.nix @@ -2,7 +2,9 @@ , boost, libGLU, lua, cmake, which, pkg-config, }: let - luaEnv = lua.withPackages(ps: with ps; [ luazip luafilesystem lrexlib-pcre luasql-sqlite3 lua-yajl luautf8 ]); + luaEnv = lua.withPackages(ps: with ps; [ + luazip luafilesystem lrexlib-pcre luasql-sqlite3 lua-yajl luautf8 + ]); in stdenv.mkDerivation rec { pname = "mudlet"; @@ -39,8 +41,6 @@ stdenv.mkDerivation rec { cp -r ../mudlet.png $out/share/pixmaps/ makeQtWrapper $out/mudlet $out/bin/mudlet \ - --set LUA_CPATH "${luaEnv}/lib/lua/${lua.luaversion}/?.so" \ - --prefix LUA_PATH : "$NIX_LUA_PATH" \ --prefix LD_LIBRARY_PATH : "${libsForQt5.qtkeychain}/lib/" \ --run "cd $out"; ''; diff --git a/pkgs/servers/xmpp/prosody/default.nix b/pkgs/servers/xmpp/prosody/default.nix index 43e77d918e1c4..773632328a056 100644 --- a/pkgs/servers/xmpp/prosody/default.nix +++ b/pkgs/servers/xmpp/prosody/default.nix @@ -1,19 +1,24 @@ { stdenv, fetchurl, lib, libidn, openssl, makeWrapper, fetchhg -, lua5, luasocket, luasec, luaexpat, luafilesystem, luabitop +, lua , nixosTests -, withLibevent ? true, luaevent ? null -, withDBI ? true, luadbi ? null +, withLibevent ? true +, withDBI ? true # use withExtraLibs to add additional dependencies of community modules , withExtraLibs ? [ ] , withOnlyInstalledCommunityModules ? [ ] , withCommunityModules ? [ ] }: -assert withLibevent -> luaevent != null; -assert withDBI -> luadbi != null; - with lib; +let + luaEnv = lua.withPackages(p: with p; [ + luasocket luasec luaexpat luafilesystem luabitop luadbi-sqlite3 + ] + ++ lib.optional withLibevent p.luaevent + ++ lib.optional withDBI p.luadbi + ); +in stdenv.mkDerivation rec { version = "0.11.10"; # also update communityModules pname = "prosody"; @@ -41,28 +46,24 @@ stdenv.mkDerivation rec { sha256 = "02gj1b8sdmdvymsdmjpq47zrl7sg578jcdxbbq18s44f3njmc9q1"; }; + nativeBuildInputs = [ makeWrapper ]; buildInputs = [ - lua5 makeWrapper libidn openssl - ] - # Lua libraries - ++ [ - luasocket luasec luaexpat luafilesystem luabitop + luaEnv libidn openssl ] - ++ optional withLibevent luaevent - ++ optional withDBI luadbi ++ withExtraLibs; configureFlags = [ "--ostype=linux" - "--with-lua-include=${lua5}/include" - "--with-lua=${lua5}" + "--with-lua-include=${luaEnv}/include" + "--with-lua=${luaEnv}" ]; postBuild = '' make -C tools/migration ''; + # the wrapping should go away once lua hook is fixed postInstall = '' ${concatMapStringsSep "\n" (module: '' cp -r $communityModules/mod_${module} $out/lib/prosody/modules/ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 694dbd04f0a68..748f70eefeef8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -19950,9 +19950,8 @@ with pkgs; prosody = callPackage ../servers/xmpp/prosody { # _compat can probably be removed on next minor version after 0.10.0 - lua5 = lua5_2_compat; - withExtraLibs = [ luaPackages.luadbi-sqlite3 ]; - inherit (lua52Packages) luasocket luasec luaexpat luafilesystem luabitop luaevent luadbi; + lua = lua5_2_compat; + withExtraLibs = []; }; biboumi = callPackage ../servers/xmpp/biboumi { }; @@ -28277,9 +28276,7 @@ with pkgs; neovim-remote = callPackage ../applications/editors/neovim/neovim-remote.nix { }; - vis = callPackage ../applications/editors/vis { - inherit (lua52Packages) lpeg; - }; + vis = callPackage ../applications/editors/vis { }; viw = callPackage ../applications/editors/viw { }; diff --git a/pkgs/top-level/lua-packages.nix b/pkgs/top-level/lua-packages.nix index 246d62b903b35..80f71dc1942e1 100644 --- a/pkgs/top-level/lua-packages.nix +++ b/pkgs/top-level/lua-packages.nix @@ -18,85 +18,60 @@ let packages = ( self: let - luaAtLeast = lib.versionAtLeast lua.luaversion; - luaOlder = lib.versionOlder lua.luaversion; - isLua51 = (lib.versions.majorMinor lua.version) == "5.1"; - isLua52 = (lib.versions.majorMinor lua.version) == "5.2"; - isLua53 = lua.luaversion == "5.3"; - isLuaJIT = lib.getName lua == "luajit"; - lua-setup-hook = callPackage ../development/interpreters/lua-5/setup-hook.nix { }; - - # Check whether a derivation provides a lua module. - hasLuaModule = drv: drv ? luaModule ; + # a function of lua_path / lua_cpath + lua-setup-hook = callPackage ../development/interpreters/lua-5/setup-hook.nix { + inherit lib; + }; callPackage = pkgs.newScope self; - requiredLuaModules = drvs: with lib; let - modules = filter hasLuaModule drvs; - in unique ([lua] ++ modules ++ concatLists (catAttrs "requiredLuaModules" modules)); - - # Convert derivation to a lua module. - toLuaModule = drv: - drv.overrideAttrs( oldAttrs: { - # Use passthru in order to prevent rebuilds when possible. - passthru = (oldAttrs.passthru or {})// { - luaModule = lua; - requiredLuaModules = requiredLuaModules drv.propagatedBuildInputs; - }; - }); - - - platformString = - if stdenv.isDarwin then "macosx" - else if stdenv.isFreeBSD then "freebsd" - else if stdenv.isLinux then "linux" - else if stdenv.isSunOS then "solaris" - else throw "unsupported platform"; - buildLuaApplication = args: buildLuarocksPackage ({namePrefix="";} // args ); - buildLuarocksPackage = with pkgs.lib; makeOverridable(callPackage ../development/interpreters/lua-5/build-lua-package.nix { - inherit toLuaModule; + buildLuarocksPackage = lib.makeOverridable(callPackage ../development/interpreters/lua-5/build-lua-package.nix { inherit lua; + inherit (pkgs) lib; + inherit (luaLib) toLuaModule; }); -in -with self; { - getLuaPathList = majorVersion: [ - "share/lua/${majorVersion}/?.lua" - "share/lua/${majorVersion}/?/init.lua" - ]; - getLuaCPathList = majorVersion: [ - "lib/lua/${majorVersion}/?.so" - ]; - - # helper functions for dealing with LUA_PATH and LUA_CPATH - getPath = drv: pathListForVersion: - lib.concatMapStringsSep ";" (path: "${drv}/${path}") (pathListForVersion lua.luaversion); - getLuaPath = drv: getPath drv getLuaPathList; - getLuaCPath = drv: getPath drv getLuaCPathList; + luaLib = import ../development/lua-modules/lib.nix { + inherit (pkgs) lib; + inherit pkgs lua; + }; #define build lua package function buildLuaPackage = callPackage ../development/lua-modules/generic { - inherit lua writeText; + inherit writeText; }; + getPath = drv: pathListForVersion: + lib.concatMapStringsSep ";" (path: "${drv}/${path}") pathListForVersion; - inherit toLuaModule hasLuaModule lua-setup-hook; - inherit buildLuarocksPackage buildLuaApplication; - inherit requiredLuaModules luaOlder luaAtLeast - isLua51 isLua52 isLua53 isLuaJIT lua callPackage; +in +{ + # helper functions for dealing with LUA_PATH and LUA_CPATH + lib = luaLib; + + getLuaPath = drv: luaLib.getPath drv (luaLib.luaPathList lua.luaversion) ; + getLuaCPath = drv: luaLib.getPath drv (luaLib.luaCPathList lua.luaversion) ; + + + inherit lua lua-setup-hook callPackage; + inherit buildLuaPackage buildLuarocksPackage buildLuaApplication; + inherit (luaLib) luaOlder luaAtLeast isLua51 isLua52 isLua53 isLuaJIT + requiredLuaModules toLuaModule hasLuaModule; # wraps programs in $out/bin with valid LUA_PATH/LUA_CPATH wrapLua = callPackage ../development/interpreters/lua-5/wrap-lua.nix { - inherit lua; inherit (pkgs) makeSetupHook makeWrapper; + inherit lua lib; + inherit (pkgs) makeSetupHook makeWrapper; }; luarocks = callPackage ../development/tools/misc/luarocks { - inherit lua; + inherit lua lib; }; + # a fork of luarocks used to generate nix lua derivations from rockspecs luarocks-nix = callPackage ../development/tools/misc/luarocks/luarocks-nix.nix { }; luxio = buildLuaPackage { @@ -132,7 +107,7 @@ with self; { }; }; - vicious = toLuaModule(stdenv.mkDerivation rec { + vicious = luaLib.toLuaModule( stdenv.mkDerivation rec { pname = "vicious"; version = "2.5.0"; |