From 397b6492832866fb4d4d7e4ea837376acc14512d Mon Sep 17 00:00:00 2001 From: Michael Raskin <7c6f434c@mail.ru> Date: Sat, 16 Oct 2021 20:57:36 +0200 Subject: [PATCH] luaPackages.luarocks-3_7: init so that the reverted update can be accessed if desired --- pkgs/development/tools/misc/luarocks/3.7.nix | 82 +++++++++++++++++++ .../tools/misc/luarocks/darwin-3.7.0.patch | 24 ++++++ pkgs/top-level/lua-packages.nix | 4 + 3 files changed, 110 insertions(+) create mode 100644 pkgs/development/tools/misc/luarocks/3.7.nix create mode 100644 pkgs/development/tools/misc/luarocks/darwin-3.7.0.patch diff --git a/pkgs/development/tools/misc/luarocks/3.7.nix b/pkgs/development/tools/misc/luarocks/3.7.nix new file mode 100644 index 000000000000..aa49af753b32 --- /dev/null +++ b/pkgs/development/tools/misc/luarocks/3.7.nix @@ -0,0 +1,82 @@ +{lib, stdenv, fetchFromGitHub +, curl, makeWrapper, which, unzip +, lua +# for 'luarocks pack' +, zip +# some packages need to be compiled with cmake +, cmake +, installShellFiles +}: + +stdenv.mkDerivation rec { + pname = "luarocks"; + version = "3.7.0"; + + src = fetchFromGitHub { + owner = "luarocks"; + repo = "luarocks"; + rev = "v${version}"; + sha256 = "1sn2j7hv8nbdjqj1747glk9770zw8q5v8ivaxhvwbk3vl038ck9d"; + }; + + patches = [ ./darwin-3.7.0.patch ]; + + postPatch = lib.optionalString stdenv.targetPlatform.isDarwin '' + substituteInPlace src/luarocks/core/cfg.lua --subst-var-by 'darwinMinVersion' '${stdenv.targetPlatform.darwinMinVersion}' + ''; + + preConfigure = '' + lua -e "" || { + luajit -e "" && { + export LUA_SUFFIX=jit + configureFlags="$configureFlags --lua-suffix=$LUA_SUFFIX" + } + } + lua_inc="$(echo "${lua}/include"/*/)" + if test -n "$lua_inc"; then + configureFlags="$configureFlags --with-lua-include=$lua_inc" + fi + ''; + + nativeBuildInputs = [ makeWrapper installShellFiles ]; + + buildInputs = [ lua curl which ]; + + postInstall = '' + sed -e "1s@.*@#! ${lua}/bin/lua$LUA_SUFFIX@" -i "$out"/bin/* + for i in "$out"/bin/*; do + test -L "$i" || { + wrapProgram "$i" \ + --suffix LUA_PATH ";" "$(echo "$out"/share/lua/*/)?.lua" \ + --suffix LUA_PATH ";" "$(echo "$out"/share/lua/*/)?/init.lua" \ + --suffix LUA_CPATH ";" "$(echo "$out"/lib/lua/*/)?.so" \ + --suffix LUA_CPATH ";" "$(echo "$out"/share/lua/*/)?/init.lua" + } + done + + installShellCompletion --cmd luarocks --bash <($out/bin/luarocks completion bash) + installShellCompletion --cmd luarocks --zsh <($out/bin/luarocks completion zsh) + ''; + + propagatedBuildInputs = [ zip unzip cmake ]; + + # unpack hook for src.rock and rockspec files + setupHook = ./setup-hook.sh; + + # cmake is just to compile packages with "cmake" buildType, not luarocks itself + dontUseCmakeConfigure = true; + + shellHook = '' + export PATH="src/bin:''${PATH:-}" + export LUA_PATH="src/?.lua;''${LUA_PATH:-}" + ''; + + meta = with lib; { + description = "A package manager for Lua"; + license = licenses.mit ; + maintainers = with maintainers; [raskin teto]; + platforms = platforms.linux ++ platforms.darwin; + downloadPage = "http://luarocks.org/releases/"; + updateWalker = true; + }; +} diff --git a/pkgs/development/tools/misc/luarocks/darwin-3.7.0.patch b/pkgs/development/tools/misc/luarocks/darwin-3.7.0.patch new file mode 100644 index 000000000000..3252e6ae7b4f --- /dev/null +++ b/pkgs/development/tools/misc/luarocks/darwin-3.7.0.patch @@ -0,0 +1,24 @@ +diff --git a/src/luarocks/core/cfg.lua b/src/luarocks/core/cfg.lua +index 535bd69..b017161 100644 +--- a/src/luarocks/core/cfg.lua ++++ b/src/luarocks/core/cfg.lua +@@ -436,7 +436,7 @@ local function make_defaults(lua_version, target_cpu, platforms, home) + defaults.external_lib_extension = "dylib" + defaults.arch = "macosx-"..target_cpu + defaults.variables.LIBFLAG = "-bundle -undefined dynamic_lookup -all_load" +- local version = util.popen_read("sw_vers -productVersion") ++ local version = os.getenv("MACOSX_DEPLOYMENT_TARGET") or "@darwinMinVersion@" + if not (version:match("^%d+%.%d+%.%d+$") or version:match("^%d+%.%d+$")) then + version = "10.3" + end +@@ -448,8 +448,8 @@ local function make_defaults(lua_version, target_cpu, platforms, home) + else + defaults.gcc_rpath = false + end +- defaults.variables.CC = "env MACOSX_DEPLOYMENT_TARGET="..tostring(version).." gcc" +- defaults.variables.LD = "env MACOSX_DEPLOYMENT_TARGET="..tostring(version).." gcc" ++ defaults.variables.CC = "env MACOSX_DEPLOYMENT_TARGET="..tostring(version).." clang" ++ defaults.variables.LD = "env MACOSX_DEPLOYMENT_TARGET="..tostring(version).." clang" + defaults.web_browser = "open" + end + diff --git a/pkgs/top-level/lua-packages.nix b/pkgs/top-level/lua-packages.nix index e1387e42b785..efaf06d30a22 100644 --- a/pkgs/top-level/lua-packages.nix +++ b/pkgs/top-level/lua-packages.nix @@ -67,6 +67,10 @@ in inherit lua lib; }; + luarocks-3_7 = callPackage ../development/tools/misc/luarocks/3.7.nix { + 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 { };