Merge pull request #268619 from tweag/lib-descriptions
[NixPkgs.git] / pkgs / applications / science / chemistry / octopus / default.nix
blobc32f4b8a5f9bf5eed1a6da4c8e97bb429f65ac4a
1 { lib, stdenv, fetchFromGitLab, gfortran, perl, procps
2 , libyaml, libxc, fftw, blas, lapack, gsl, netcdf, arpack, autoreconfHook
3 , python3
4 , enableFma ? stdenv.hostPlatform.fmaSupport
5 , enableFma4 ? stdenv.hostPlatform.fma4Support
6 , enableAvx ? stdenv.hostPlatform.avx2Support
7 , enableAvx512 ? stdenv.hostPlatform.avx512Support
8 }:
10 assert (!blas.isILP64) && (!lapack.isILP64);
11 assert (blas.isILP64 == arpack.isILP64);
13 stdenv.mkDerivation rec {
14   pname = "octopus";
15   version = "13.0";
17   src = fetchFromGitLab {
18     owner = "octopus-code";
19     repo = "octopus";
20     rev = version;
21     sha256 = "sha256-CZ+Qmv6aBQ6w11mLvTP6QAJzaGs+vmmXuNGnSyAqVDU=";
22   };
24   nativeBuildInputs = [
25     perl
26     procps
27     autoreconfHook
28     gfortran
29   ];
31   buildInputs = [
32     libyaml
33     libxc
34     blas
35     lapack
36     gsl
37     fftw
38     netcdf
39     arpack
40     (python3.withPackages (ps: [ ps.pyyaml ]))
41   ];
43   configureFlags = with lib; [
44     "--with-yaml-prefix=${lib.getDev libyaml}"
45     "--with-blas=-lblas"
46     "--with-lapack=-llapack"
47     "--with-fftw-prefix=${lib.getDev fftw}"
48     "--with-gsl-prefix=${lib.getDev gsl}"
49     "--with-libxc-prefix=${lib.getDev libxc}"
50     "--enable-openmp"
51   ] ++ optional enableFma "--enable-fma3"
52     ++ optional enableFma4 "--enable-fma4"
53     ++ optional enableAvx "--enable-avx"
54     ++ optional enableAvx512 "--enable-avx512";
56   doCheck = false;
57   checkTarget = "check-short";
59   postPatch = ''
60     patchShebangs ./
61   '';
63   postConfigure = ''
64     patchShebangs testsuite/oct-run_testsuite.sh
65   '';
67   enableParallelBuilding = true;
69   meta = with lib; {
70     description = "Real-space time dependent density-functional theory code";
71     homepage = "https://octopus-code.org";
72     maintainers = with maintainers; [ markuskowa ];
73     license = with licenses; [ gpl2Only asl20 lgpl3Plus bsd3 ];
74     platforms = [ "x86_64-linux" ];
75   };