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
|
, wrapLua
|
||||||
# Whether the derivation provides a lua module or not.
|
# Whether the derivation provides a lua module or not.
|
||||||
, toLuaModule
|
, toLuaModule
|
||||||
|
, luarocksCheckHook
|
||||||
}:
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -42,6 +43,7 @@ pname
|
||||||
|
|
||||||
, passthru ? {}
|
, passthru ? {}
|
||||||
, doCheck ? false
|
, doCheck ? false
|
||||||
|
, doInstallCheck ? false
|
||||||
|
|
||||||
# Non-Lua / system (e.g. C library) dependencies. Is a list of deps, where
|
# 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
|
# 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
|
# Filter out the lua derivation itself from the Lua module dependency
|
||||||
# closure, as it doesn't have a rock tree :)
|
# closure, as it doesn't have a rock tree :)
|
||||||
requiredLuaRocks = lib.filter (d: d ? luaModule)
|
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; } ]
|
# 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;
|
externalDeps' = lib.filter (dep: !lib.isDerivation dep) externalDeps;
|
||||||
|
|
||||||
luarocksDrv = toLuaModule ( lua.stdenv.mkDerivation (
|
luarocksDrv = toLuaModule ( lua.stdenv.mkDerivation (
|
||||||
|
@ -108,15 +112,17 @@ builtins.removeAttrs attrs ["disabled" "checkInputs" "externalDeps" "extraVariab
|
||||||
|
|
||||||
name = namePrefix + pname + "-" + version;
|
name = namePrefix + pname + "-" + version;
|
||||||
|
|
||||||
buildInputs = [ wrapLua lua.pkgs.luarocks ]
|
nativeBuildInputs = [
|
||||||
|
wrapLua
|
||||||
|
lua.pkgs.luarocks
|
||||||
|
]
|
||||||
++ buildInputs
|
++ buildInputs
|
||||||
++ lib.optionals doCheck checkInputs
|
++ lib.optionals doCheck ([ luarocksCheckHook ] ++ checkInputs)
|
||||||
++ (map (d: d.dep) externalDeps')
|
++ (map (d: d.dep) externalDeps')
|
||||||
;
|
;
|
||||||
|
|
||||||
# propagate lua to active setup-hook in nix-shell
|
# propagate lua to active setup-hook in nix-shell
|
||||||
propagatedBuildInputs = propagatedBuildInputs ++ [ lua ];
|
propagatedBuildInputs = propagatedBuildInputs ++ [ lua ];
|
||||||
inherit doCheck;
|
|
||||||
|
|
||||||
# @-patterns do not capture formal argument default values, so we need to
|
# @-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
|
# 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
|
runHook postCheck
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
LUAROCKS_CONFIG="$PWD/${luarocks_config}";
|
||||||
|
|
||||||
|
shellHook = ''
|
||||||
|
runHook preShell
|
||||||
|
export LUAROCKS_CONFIG="$PWD/${luarocks_config}";
|
||||||
|
runHook postShell
|
||||||
|
'';
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
inherit lua; # The lua interpreter
|
inherit lua; # The lua interpreter
|
||||||
inherit externalDeps;
|
inherit externalDeps;
|
||||||
|
|
|
@ -24,4 +24,9 @@ in {
|
||||||
mv hook.sh $out
|
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: {
|
busted = prev.busted.overrideAttrs(oa: {
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = oa.nativeBuildInputs ++ [
|
||||||
pkgs.installShellFiles
|
pkgs.installShellFiles
|
||||||
];
|
];
|
||||||
postConfigure = ''
|
postConfigure = ''
|
||||||
|
@ -30,9 +30,6 @@ with prev;
|
||||||
});
|
});
|
||||||
|
|
||||||
cqueues = (prev.lib.overrideLuarocks prev.cqueues (drv: {
|
cqueues = (prev.lib.overrideLuarocks prev.cqueues (drv: {
|
||||||
nativeBuildInputs = [
|
|
||||||
pkgs.gnum4
|
|
||||||
];
|
|
||||||
externalDeps = [
|
externalDeps = [
|
||||||
{ name = "CRYPTO"; dep = pkgs.openssl; }
|
{ name = "CRYPTO"; dep = pkgs.openssl; }
|
||||||
{ name = "OPENSSL"; dep = pkgs.openssl; }
|
{ name = "OPENSSL"; dep = pkgs.openssl; }
|
||||||
|
@ -46,6 +43,11 @@ with prev;
|
||||||
date = head rel;
|
date = head rel;
|
||||||
rev = last (splitString "-" (last rel));
|
rev = last (splitString "-" (last rel));
|
||||||
in "${date}-${rev}";
|
in "${date}-${rev}";
|
||||||
|
|
||||||
|
nativeBuildInputs = oa.nativeBuildInputs ++ [
|
||||||
|
pkgs.gnum4
|
||||||
|
];
|
||||||
|
|
||||||
# Upstream rockspec is pointlessly broken into separate rockspecs, per Lua
|
# Upstream rockspec is pointlessly broken into separate rockspecs, per Lua
|
||||||
# version, which doesn't work well for us, so modify it
|
# version, which doesn't work well for us, so modify it
|
||||||
postConfigure = let inherit (prev.cqueues) pname; in ''
|
postConfigure = let inherit (prev.cqueues) pname; in ''
|
||||||
|
@ -111,8 +113,8 @@ with prev;
|
||||||
propagatedBuildInputs = with pkgs.lib; optional (!isLuaJIT) luaffi;
|
propagatedBuildInputs = with pkgs.lib; optional (!isLuaJIT) luaffi;
|
||||||
});
|
});
|
||||||
|
|
||||||
lgi = prev.lib.overrideLuarocks prev.lgi (drv: {
|
lgi = prev.lgi.overrideAttrs (oa: {
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = oa.nativeBuildInputs ++ [
|
||||||
pkgs.pkg-config
|
pkgs.pkg-config
|
||||||
];
|
];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
|
|
@ -50,7 +50,7 @@ in
|
||||||
getLuaCPath = drv: getPath drv luaLib.luaCPathList;
|
getLuaCPath = drv: getPath drv luaLib.luaCPathList;
|
||||||
|
|
||||||
inherit (callPackage ../development/interpreters/lua-5/hooks { inherit (args) lib;})
|
inherit (callPackage ../development/interpreters/lua-5/hooks { inherit (args) lib;})
|
||||||
lua-setup-hook;
|
luarocksCheckHook lua-setup-hook;
|
||||||
|
|
||||||
inherit lua callPackage;
|
inherit lua callPackage;
|
||||||
inherit buildLuaPackage buildLuarocksPackage buildLuaApplication;
|
inherit buildLuaPackage buildLuarocksPackage buildLuaApplication;
|
||||||
|
|
Loading…
Reference in a new issue