lib.packagesFromDirectoryRecursive: Improved documentation (#359898)
[NixPkgs.git] / pkgs / by-name / be / benchexec / package.nix
blob213aeee6d919d5e6a5a58626d8ec23a053b242d8
1 { lib
2 , fetchFromGitHub
3 , python3
4 , libseccomp
5 , nixosTests
6 , testers
7 , benchexec
8 }:
9 python3.pkgs.buildPythonApplication rec {
10   pname = "benchexec";
11   version = "3.21";
13   src = fetchFromGitHub {
14     owner = "sosy-lab";
15     repo = "benchexec";
16     rev = version;
17     hash = "sha256-bE3brmmLHZQakDKvd47I1hm9Dcsu6DrSeJyjWWtEZWI=";
18   };
20   pyproject = true;
22   nativeBuildInputs = with python3.pkgs; [ setuptools ];
24   # NOTE: CPU Energy Meter is not added,
25   # because BenchExec should call the wrapper configured
26   # via `security.wrappers.cpu-energy-meter`
27   # in `programs.cpu-energy-meter`, which will have the required
28   # capabilities to access MSR.
29   # If we add `cpu-energy-meter` here, BenchExec will instead call an executable
30   # without `CAP_SYS_RAWIO` and fail.
31   propagatedBuildInputs = with python3.pkgs; [
32     coloredlogs
33     lxml
34     pystemd
35     pyyaml
36   ];
38   makeWrapperArgs = [ "--set-default LIBSECCOMP ${lib.getLib libseccomp}/lib/libseccomp.so" ];
40   passthru.tests =
41     let
42       testVersion = result: testers.testVersion {
43         command = "${result} --version";
44         package = benchexec;
45       };
46     in
47     {
48       nixos = nixosTests.benchexec;
49       benchexec-version = testVersion "benchexec";
50       runexec-version = testVersion "runexec";
51       table-generator-version = testVersion "table-generator";
52       containerexec-version = testVersion "containerexec";
53     };
55   meta = with lib; {
56     description = "Framework for Reliable Benchmarking and Resource Measurement";
57     homepage = "https://github.com/sosy-lab/benchexec";
58     maintainers = with maintainers; [ lorenzleutgeb ];
59     license = licenses.asl20;
60     mainProgram = "benchexec";
61   };