btrbk: add mainProgram (#356350)
[NixPkgs.git] / pkgs / by-name / oc / octopus / package.nix
bloba9b881b2cdc0154dca5dc396ac533b81f2b222a5
1 { lib
2 , stdenv
3 , fetchFromGitLab
4 , cmake
5 , pkg-config
6 , ninja
7 , gfortran
8 , which
9 , perl
10 , procps
11 , libvdwxc
12 , libyaml
13 , libxc
14 , fftw
15 , blas
16 , lapack
17 , gsl
18 , netcdf
19 , arpack
20 , spglib
21 , metis
22 , scalapack
23 , mpi
24 , enableMpi ? true
25 , python3
28 assert (!blas.isILP64) && (!lapack.isILP64);
29 assert (blas.isILP64 == arpack.isILP64);
31 stdenv.mkDerivation rec {
32   pname = "octopus";
33   version = "14.1";
35   src = fetchFromGitLab {
36     owner = "octopus-code";
37     repo = "octopus";
38     rev = version;
39     hash = "sha256-8wZR+bYdxJFsUPMWbIGYxRdNzjLgHm+KFLjY7fSN7io=";
40   };
42   nativeBuildInputs = [
43     which
44     perl
45     procps
46     cmake
47     gfortran
48     pkg-config
49     ninja
50   ];
52   buildInputs = [
53     libyaml
54     libxc
55     blas
56     lapack
57     gsl
58     fftw
59     netcdf
60     arpack
61     libvdwxc
62     spglib
63     metis
64     (python3.withPackages (ps: [ ps.pyyaml ]))
65   ] ++ lib.optional enableMpi scalapack;
67   propagatedBuildInputs = lib.optional enableMpi mpi;
68   propagatedUserEnvPkgs = lib.optional enableMpi mpi;
70   cmakeFlags = [
71     (lib.cmakeBool "OCTOPUS_MPI" enableMpi)
72     (lib.cmakeBool "OCTOPUS_ScaLAPACK" enableMpi)
73     (lib.cmakeBool "OCTOPUS_OpenMP" true)
74   ];
76   nativeCheckInputs = lib.optional.enableMpi mpi;
77   doCheck = false;
78   checkTarget = "check-short";
80   postPatch = ''
81     patchShebangs ./
82   '';
84   postConfigure = ''
85     patchShebangs testsuite/oct-run_testsuite.sh
86   '';
88   enableParallelBuilding = true;
90   passthru = lib.attrsets.optionalAttrs enableMpi { inherit mpi; };
92   meta = with lib; {
93     description = "Real-space time dependent density-functional theory code";
94     homepage = "https://octopus-code.org";
95     maintainers = with maintainers; [ markuskowa ];
96     license = with licenses; [ gpl2Only asl20 lgpl3Plus bsd3 ];
97     platforms = [ "x86_64-linux" ];
98   };