luarocks-check-hook: init
The hook is added to buildLuarocksPackage when doCheck is set to true.
This commit is contained in:
parent
e0a42267f7
commit
011911bc54
5 changed files with 51 additions and 12 deletions
|
@ -4,6 +4,7 @@
|
|||
, wrapLua
|
||||
# Whether the derivation provides a lua module or not.
|
||||
, toLuaModule
|
||||
, luarocksCheckHook
|
||||
}:
|
||||
|
||||
{
|
||||
|
@ -42,6 +43,7 @@ pname
|
|||
|
||||
, passthru ? {}
|
||||
, doCheck ? false
|
||||
, doInstallCheck ? false
|
||||
|
||||
# Non-Lua / system (e.g. C library) dependencies. Is a list of deps, where
|
||||
# each dep is either a derivation, or an attribute set like
|
||||
|
@ -97,10 +99,12 @@ let
|
|||
# Filter out the lua derivation itself from the Lua module dependency
|
||||
# closure, as it doesn't have a rock tree :)
|
||||
requiredLuaRocks = lib.filter (d: d ? luaModule)
|
||||
(lua.pkgs.requiredLuaModules luarocksDrv.propagatedBuildInputs);
|
||||
(lua.pkgs.requiredLuaModules (luarocksDrv.nativeBuildInputs ++ luarocksDrv.propagatedBuildInputs));
|
||||
|
||||
# example externalDeps': [ { name = "CRYPTO"; dep = pkgs.openssl; } ]
|
||||
externalDepsGenerated = lib.unique (lib.filter (drv: !drv ? luaModule) (luarocksDrv.propagatedBuildInputs ++ luarocksDrv.buildInputs));
|
||||
externalDepsGenerated = lib.unique (lib.filter (drv: !drv ? luaModule) (
|
||||
luarocksDrv.nativeBuildInputs ++ luarocksDrv.propagatedBuildInputs ++ luarocksDrv.buildInputs)
|
||||
);
|
||||
externalDeps' = lib.filter (dep: !lib.isDerivation dep) externalDeps;
|
||||
|
||||
luarocksDrv = toLuaModule ( lua.stdenv.mkDerivation (
|
||||
|
@ -108,15 +112,17 @@ builtins.removeAttrs attrs ["disabled" "checkInputs" "externalDeps" "extraVariab
|
|||
|
||||
name = namePrefix + pname + "-" + version;
|
||||
|
||||
buildInputs = [ wrapLua lua.pkgs.luarocks ]
|
||||
nativeBuildInputs = [
|
||||
wrapLua
|
||||
lua.pkgs.luarocks
|
||||
]
|
||||
++ buildInputs
|
||||
++ lib.optionals doCheck checkInputs
|
||||
++ lib.optionals doCheck ([ luarocksCheckHook ] ++ checkInputs)
|
||||
++ (map (d: d.dep) externalDeps')
|
||||
;
|
||||
|
||||
# propagate lua to active setup-hook in nix-shell
|
||||
propagatedBuildInputs = propagatedBuildInputs ++ [ lua ];
|
||||
inherit doCheck;
|
||||
|
||||
# @-patterns do not capture formal argument default values, so we need to
|
||||
# explicitly inherit this for it to be available as a shell variable in the
|
||||
|
@ -190,6 +196,14 @@ builtins.removeAttrs attrs ["disabled" "checkInputs" "externalDeps" "extraVariab
|
|||
runHook postCheck
|
||||
'';
|
||||
|
||||
LUAROCKS_CONFIG="$PWD/${luarocks_config}";
|
||||
|
||||
shellHook = ''
|
||||
runHook preShell
|
||||
export LUAROCKS_CONFIG="$PWD/${luarocks_config}";
|
||||
runHook postShell
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
inherit lua; # The lua interpreter
|
||||
inherit externalDeps;
|
||||
|
|
|
@ -24,4 +24,9 @@ in {
|
|||
mv hook.sh $out
|
||||
'';
|
||||
|
||||
luarocksCheckHook = callPackage ({ luarocks }:
|
||||
makeSetupHook {
|
||||
name = "luarocks-check-hook";
|
||||
deps = [ luarocks ];
|
||||
} ./luarocks-check-hook.sh) {};
|
||||
}
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
# Setup hook for checking whether Python imports succeed
|
||||
echo "Sourcing luarocks-check-hook.sh"
|
||||
|
||||
luarocksCheckPhase () {
|
||||
echo "Executing luarocksCheckPhase"
|
||||
runHook preCheck
|
||||
|
||||
luarocks test
|
||||
|
||||
runHook postCheck
|
||||
echo "Finished executing luarocksCheckPhase"
|
||||
}
|
||||
|
||||
if [ -z "${dontLuarocksCheck-}" ] && [ -z "${checkPhase-}" ]; then
|
||||
echo "Using luarocksCheckPhase"
|
||||
checkPhase+=" luarocksCheckPhase"
|
||||
fi
|
||||
|
|
@ -15,7 +15,7 @@ with prev;
|
|||
});
|
||||
|
||||
busted = prev.busted.overrideAttrs(oa: {
|
||||
nativeBuildInputs = [
|
||||
nativeBuildInputs = oa.nativeBuildInputs ++ [
|
||||
pkgs.installShellFiles
|
||||
];
|
||||
postConfigure = ''
|
||||
|
@ -30,9 +30,6 @@ with prev;
|
|||
});
|
||||
|
||||
cqueues = (prev.lib.overrideLuarocks prev.cqueues (drv: {
|
||||
nativeBuildInputs = [
|
||||
pkgs.gnum4
|
||||
];
|
||||
externalDeps = [
|
||||
{ name = "CRYPTO"; dep = pkgs.openssl; }
|
||||
{ name = "OPENSSL"; dep = pkgs.openssl; }
|
||||
|
@ -46,6 +43,11 @@ with prev;
|
|||
date = head rel;
|
||||
rev = last (splitString "-" (last rel));
|
||||
in "${date}-${rev}";
|
||||
|
||||
nativeBuildInputs = oa.nativeBuildInputs ++ [
|
||||
pkgs.gnum4
|
||||
];
|
||||
|
||||
# Upstream rockspec is pointlessly broken into separate rockspecs, per Lua
|
||||
# version, which doesn't work well for us, so modify it
|
||||
postConfigure = let inherit (prev.cqueues) pname; in ''
|
||||
|
@ -111,8 +113,8 @@ with prev;
|
|||
propagatedBuildInputs = with pkgs.lib; optional (!isLuaJIT) luaffi;
|
||||
});
|
||||
|
||||
lgi = prev.lib.overrideLuarocks prev.lgi (drv: {
|
||||
nativeBuildInputs = [
|
||||
lgi = prev.lgi.overrideAttrs (oa: {
|
||||
nativeBuildInputs = oa.nativeBuildInputs ++ [
|
||||
pkgs.pkg-config
|
||||
];
|
||||
buildInputs = [
|
||||
|
|
|
@ -50,7 +50,7 @@ in
|
|||
getLuaCPath = drv: getPath drv luaLib.luaCPathList;
|
||||
|
||||
inherit (callPackage ../development/interpreters/lua-5/hooks { inherit (args) lib;})
|
||||
lua-setup-hook;
|
||||
luarocksCheckHook lua-setup-hook;
|
||||
|
||||
inherit lua callPackage;
|
||||
inherit buildLuaPackage buildLuarocksPackage buildLuaApplication;
|
||||
|
|
Loading…
Reference in a new issue