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.
This commit is contained in:
parent
a5de410880
commit
d7a48fc80d
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
Loading…
Reference in New Issue