Skip to content

Commit

Permalink
Merge pull request #54454 from teto/luarocks_fixes
Browse files Browse the repository at this point in the history
luarocks: support more commands: pack/build
  • Loading branch information
7c6f434c authored Jan 22, 2019
2 parents a5de410 + 15a8719 commit a6a0ba8
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 7 deletions.
37 changes: 30 additions & 7 deletions pkgs/development/tools/misc/luarocks/default.nix
Original file line number Diff line number Diff line change
@@ -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 {
Expand Down Expand Up @@ -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;
};
}
9 changes: 9 additions & 0 deletions pkgs/development/tools/misc/luarocks/luarocks-nix.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{ luarocks, fetchFromGitHub }:
luarocks.overrideAttrs(old: {
src = fetchFromGitHub {
owner = "teto";
repo = "luarocks";
rev = "d669e8e118e6ca8bff05f32dbc9e5589e6ac45d2";
sha256 = "1lay3905a5sx2a4y68lbys0913qs210hcj9kn2lbqinw86c1vyc3";
};
})
20 changes: 20 additions & 0 deletions pkgs/development/tools/misc/luarocks/setup-hook.sh
Original file line number Diff line number Diff line change
@@ -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"
}

1 change: 1 addition & 0 deletions pkgs/top-level/all-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -7860,6 +7860,7 @@ in
luajit luajit_2_0 luajit_2_1;

luarocks = luaPackages.luarocks;
luarocks-nix = luaPackages.luarocks-nix;

toluapp = callPackage ../development/tools/toluapp {
lua = lua5_1; # doesn't work with any other :(
Expand Down
2 changes: 2 additions & 0 deletions pkgs/top-level/lua-packages.nix
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ let
inherit lua;
};

luarocks-nix = callPackage ../development/tools/misc/luarocks/luarocks-nix.nix { };

basexx = buildLuaPackage rec {
version = "0.4.0";
name = "basexx-${version}";
Expand Down

0 comments on commit a6a0ba8

Please sign in to comment.