diff options
author | Matthieu Coudron <mattator@gmail.com> | 2019-01-22 14:58:35 +0900 |
---|---|---|
committer | Matthieu Coudron <mattator@gmail.com> | 2019-01-22 16:52:43 +0900 |
commit | d7a48fc80d5d5a45385315a285e6e2644f1c5705 (patch) | |
tree | 540f2a19c7c9fec796a2cef0f0001422baadf977 /pkgs/development/tools/misc/luarocks | |
parent | a5de41088031e6d3d4f799ef3964317a74e72169 (diff) | |
download | nixlib-d7a48fc80d5d5a45385315a285e6e2644f1c5705.tar nixlib-d7a48fc80d5d5a45385315a285e6e2644f1c5705.tar.gz nixlib-d7a48fc80d5d5a45385315a285e6e2644f1c5705.tar.bz2 nixlib-d7a48fc80d5d5a45385315a285e6e2644f1c5705.tar.lz nixlib-d7a48fc80d5d5a45385315a285e6e2644f1c5705.tar.xz nixlib-d7a48fc80d5d5a45385315a285e6e2644f1c5705.tar.zst nixlib-d7a48fc80d5d5a45385315a285e6e2644f1c5705.zip |
luarocks: support more usage
better support for luarocks in a shell (helpful to develop on luarocks). Also adds unpacker for src.rock/rockspec files. Also allows to use luarocks to build cmake based rocks.
Diffstat (limited to 'pkgs/development/tools/misc/luarocks')
-rw-r--r-- | pkgs/development/tools/misc/luarocks/default.nix | 37 | ||||
-rw-r--r-- | pkgs/development/tools/misc/luarocks/setup-hook.sh | 20 |
2 files changed, 50 insertions, 7 deletions
diff --git a/pkgs/development/tools/misc/luarocks/default.nix b/pkgs/development/tools/misc/luarocks/default.nix index afe026359e53..8b9bf453c468 100644 --- a/pkgs/development/tools/misc/luarocks/default.nix +++ b/pkgs/development/tools/misc/luarocks/default.nix @@ -1,4 +1,11 @@ -{stdenv, fetchurl, lua, curl, makeWrapper, which, unzip}: +{stdenv, fetchurl +, curl, makeWrapper, which, unzip +, lua +# for 'luarocks pack' +, zip +# some packages need to be compiled with cmake +, cmake +}: let s = # Generated upstream information rec { @@ -36,17 +43,33 @@ stdenv.mkDerivation { for i in "$out"/bin/*; do test -L "$i" || { wrapProgram "$i" \ - --prefix LUA_PATH ";" "$(echo "$out"/share/lua/*/)?.lua" \ - --prefix LUA_PATH ";" "$(echo "$out"/share/lua/*/)?/init.lua" \ + --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 ''; - meta = { + + 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 (s) version; description = ''A package manager for Lua''; - license = stdenv.lib.licenses.mit ; - maintainers = [stdenv.lib.maintainers.raskin]; - platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin; + license = licenses.mit ; + maintainers = with maintainers; [raskin teto]; + platforms = platforms.linux ++ platforms.darwin; }; } diff --git a/pkgs/development/tools/misc/luarocks/setup-hook.sh b/pkgs/development/tools/misc/luarocks/setup-hook.sh new file mode 100644 index 000000000000..593ee8bbe83e --- /dev/null +++ b/pkgs/development/tools/misc/luarocks/setup-hook.sh @@ -0,0 +1,20 @@ +unpackCmdHooks+=(_trySourceRock) +unpackCmdHooks+=(_tryRockSpec) + +_tryRockSpec() { + if ! [[ "$curSrc" =~ \.rockspec$ ]]; then return 1; fi +} + +_trySourceRock() { + + if ! [[ "$curSrc" =~ \.src.rock$ ]]; then return 1; fi + + export PATH=${unzip}/bin:$PATH + + # 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" +} + |