diff options
author | Vladimír Čunát <v@cunat.cz> | 2024-05-05 17:31:58 +0200 |
---|---|---|
committer | Vladimír Čunát <v@cunat.cz> | 2024-05-05 17:31:58 +0200 |
commit | 93947b281226d5d89a39073b10caaf6c906070aa (patch) | |
tree | d55f8944fd90a3dd0d86e0f495f3d0bbdf795060 /pkgs/by-name/lu/lutok/package.nix | |
parent | 5dc079ed333c755fe000f2b86e97bf11f6f069a4 (diff) | |
parent | 100509c030faf7cca1582c5a7197b8d3a815d600 (diff) |
Merge branch 'staging' into staging-next
Diffstat (limited to 'pkgs/by-name/lu/lutok/package.nix')
-rw-r--r-- | pkgs/by-name/lu/lutok/package.nix | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/pkgs/by-name/lu/lutok/package.nix b/pkgs/by-name/lu/lutok/package.nix new file mode 100644 index 0000000000000..a09724b5348f9 --- /dev/null +++ b/pkgs/by-name/lu/lutok/package.nix @@ -0,0 +1,87 @@ +{ + 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 Kyua’s install check phase will run when Kyua is built. Don’t 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 isn’t 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 = "Libraries to write tests in C, C++, and shell"; + homepage = "https://github.com/freebsd/lutok/"; + license = lib.licenses.bsd3; + maintainers = with lib.maintainers; [ reckenrode ]; + platforms = lib.platforms.unix; + }; + }) +) |