diff options
Diffstat (limited to 'nixpkgs/pkgs/development/tools/misc/luarocks')
6 files changed, 153 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/tools/misc/luarocks/darwin-3.0.x.patch b/nixpkgs/pkgs/development/tools/misc/luarocks/darwin-3.0.x.patch new file mode 100644 index 000000000000..013ac5180afa --- /dev/null +++ b/nixpkgs/pkgs/development/tools/misc/luarocks/darwin-3.0.x.patch @@ -0,0 +1,27 @@ +diff --git a/src/luarocks/core/cfg.lua b/src/luarocks/core/cfg.lua +index f93e67a..2eb2db9 100644 +--- a/src/luarocks/core/cfg.lua ++++ b/src/luarocks/core/cfg.lua +@@ -425,9 +425,9 @@ 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" +- defaults.variables.STAT = "/usr/bin/stat" ++ defaults.variables.STAT = "stat" + defaults.variables.STATFLAG = "-f '%A'" +- local version = util.popen_read("sw_vers -productVersion") ++ local version = os.getenv("MACOSX_DEPLOYMENT_TARGET") or "10.12" + version = tonumber(version and version:match("^[^.]+%.([^.]+)")) or 3 + if version >= 10 then + version = 8 +@@ -436,8 +436,8 @@ local function make_defaults(lua_version, target_cpu, platforms, home) + else + defaults.gcc_rpath = false + end +- defaults.variables.CC = "env MACOSX_DEPLOYMENT_TARGET=10."..version.." gcc" +- defaults.variables.LD = "env MACOSX_DEPLOYMENT_TARGET=10."..version.." gcc" ++ defaults.variables.CC = "env MACOSX_DEPLOYMENT_TARGET=10."..version.." clang" ++ defaults.variables.LD = "env MACOSX_DEPLOYMENT_TARGET=10."..version.." clang" + defaults.web_browser = "open" + end + diff --git a/nixpkgs/pkgs/development/tools/misc/luarocks/darwin-3.1.3.patch b/nixpkgs/pkgs/development/tools/misc/luarocks/darwin-3.1.3.patch new file mode 100644 index 000000000000..4ba883f01130 --- /dev/null +++ b/nixpkgs/pkgs/development/tools/misc/luarocks/darwin-3.1.3.patch @@ -0,0 +1,24 @@ +diff --git a/src/luarocks/core/cfg.lua b/src/luarocks/core/cfg.lua +index c5af5a2..1949fdc 100644 +--- a/src/luarocks/core/cfg.lua ++++ b/src/luarocks/core/cfg.lua +@@ -425,7 +425,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 "10.12" + version = tonumber(version and version:match("^[^.]+%.([^.]+)")) or 3 + if version >= 10 then + version = 8 +@@ -434,8 +434,8 @@ local function make_defaults(lua_version, target_cpu, platforms, home) + else + defaults.gcc_rpath = false + end +- defaults.variables.CC = "env MACOSX_DEPLOYMENT_TARGET=10."..version.." gcc" +- defaults.variables.LD = "env MACOSX_DEPLOYMENT_TARGET=10."..version.." gcc" ++ defaults.variables.CC = "env MACOSX_DEPLOYMENT_TARGET=10."..version.." clang" ++ defaults.variables.LD = "env MACOSX_DEPLOYMENT_TARGET=10."..version.." clang" + defaults.web_browser = "open" + end + diff --git a/nixpkgs/pkgs/development/tools/misc/luarocks/default.nix b/nixpkgs/pkgs/development/tools/misc/luarocks/default.nix new file mode 100644 index 000000000000..2e0eec5ae57d --- /dev/null +++ b/nixpkgs/pkgs/development/tools/misc/luarocks/default.nix @@ -0,0 +1,72 @@ +{stdenv, fetchurl +, curl, makeWrapper, which, unzip +, lua +# for 'luarocks pack' +, zip +# some packages need to be compiled with cmake +, cmake +}: + +stdenv.mkDerivation rec { + pname = "luarocks"; + version = "3.1.3"; + + src = fetchurl { + url="http://luarocks.org/releases/luarocks-${version}.tar.gz"; + sha256="04q5k6drypsnbp1wspr9ns72k8kjf62a787a6jg1bb2s95gl6wy5"; + }; + + patches = [ ./darwin-3.1.3.patch ]; + 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 + ''; + + buildInputs = [ + lua curl makeWrapper 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 + ''; + + 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 stdenv.lib; { + inherit version; + 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/nixpkgs/pkgs/development/tools/misc/luarocks/default.upstream b/nixpkgs/pkgs/development/tools/misc/luarocks/default.upstream new file mode 100644 index 000000000000..e69de1fe8895 --- /dev/null +++ b/nixpkgs/pkgs/development/tools/misc/luarocks/default.upstream @@ -0,0 +1 @@ +url http://luarocks.org/releases/ diff --git a/nixpkgs/pkgs/development/tools/misc/luarocks/luarocks-nix.nix b/nixpkgs/pkgs/development/tools/misc/luarocks/luarocks-nix.nix new file mode 100644 index 000000000000..8da224f0ef8c --- /dev/null +++ b/nixpkgs/pkgs/development/tools/misc/luarocks/luarocks-nix.nix @@ -0,0 +1,13 @@ +{ luarocks, fetchFromGitHub }: +luarocks.overrideAttrs(old: { + pname = "luarocks-nix"; + src = fetchFromGitHub { + owner = "teto"; + repo = "luarocks"; + rev = "38ed82ba3e5682d7d55ef9a870dfb464ca180df9"; + sha256 = "0vlzywiv3sxkpjg1fzzxicmfr6kh04fxw5q9n8vsd2075xjxg6bs"; + }; + patches = [ + ./darwin-3.0.x.patch + ]; +}) diff --git a/nixpkgs/pkgs/development/tools/misc/luarocks/setup-hook.sh b/nixpkgs/pkgs/development/tools/misc/luarocks/setup-hook.sh new file mode 100644 index 000000000000..587d5413c3ed --- /dev/null +++ b/nixpkgs/pkgs/development/tools/misc/luarocks/setup-hook.sh @@ -0,0 +1,16 @@ +unpackCmdHooks+=(_trySourceRock) +unpackCmdHooks+=(_tryRockSpec) + +_tryRockSpec() { + if ! [[ "$curSrc" =~ \.rockspec$ ]]; then return 1; fi +} + +_trySourceRock() { + if ! [[ "$curSrc" =~ \.src.rock$ ]]; then return 1; fi + + # luarocks expects a clean <name>.rock.spec name to be the package name + # so we have to strip the hash + renamed="$(stripHash $curSrc)" + cp "$curSrc" "$renamed" + luarocks unpack --force "$renamed" +} |