nixpkgs/pkgs/by-name/lu/lutok/package.nix
2024-07-25 11:37:23 +03:00

88 lines
2.1 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
lib,
stdenv,
fetchFromGitHub,
atf,
autoreconfHook,
kyua,
lua,
pkg-config,
gitUpdater,
}:
lib.fix (
drv:
let
# Avoid infinite recursions:
# - Lutok depends on ATF and Kyua for testing; but
# - ATF depends on Kyua for testing, and Kyua depends on Lutok as a build input.
# To break the cycle (ATF -> Kyua -> Lutok -> ATF and Kyua):
# - Build ATF without testing (avoiding the Kyua dependency); and
# - Build Kyua against a version of Lutok without testing (also avoiding the ATF and Kyua dependencies).
atf' = atf.overrideAttrs (_: {
doInstallCheck = false;
});
kyua' =
(kyua.override {
lutok = drv.overrideAttrs (_: {
doCheck = false;
});
}).overrideAttrs
(_: {
# Assume Kyuas install check phase will run when Kyua is built. Dont run it again
# while building Lutok because it can take four to five minutes to run.
doInstallCheck = false;
});
in
stdenv.mkDerivation (finalAttrs: {
pname = "lutok";
version = "0.4";
outputs = [
"out"
"dev"
];
src = fetchFromGitHub {
owner = "freebsd";
repo = "lutok";
rev = "lutok-${finalAttrs.version}";
hash = "sha256-awAFxx9q8dZ6JO1/mShjhJnOPTLn1wCT4VrB4rlgWyg=";
};
strictDeps = true;
propagatedBuildInputs = [ lua ];
nativeBuildInputs = [
atf'
autoreconfHook
pkg-config
];
enableParallelBuilding = true;
makeFlags = [
# Lutok isnt compatible with C++17, which is the default on current clang and GCC.
"CXXFLAGS=-std=c++11"
];
doCheck = true;
checkInputs = [ atf' ];
nativeCheckInputs = [ kyua' ];
passthru.updateScript = gitUpdater { rev-prefix = "lutok-"; };
__structuredAttrs = true;
meta = {
description = "Lightweight C++ API for Lua";
homepage = "https://github.com/freebsd/lutok/";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [ reckenrode ];
platforms = lib.platforms.unix;
};
})
)