python312Packages.types-aiobotocore: 2.15.2 -> 2.15.2.post3 (#361801)
[NixPkgs.git] / pkgs / by-name / wa / wannier90 / package.nix
blob9a06bc5faabf686230adeaac1e626632cc163eb8
1 { stdenv
2 , lib
3 , gfortran
4 , blas
5 , lapack
6 , python3
7 , fetchFromGitHub
8 }:
9 assert (!blas.isILP64);
10 assert blas.isILP64 == lapack.isILP64;
12 stdenv.mkDerivation rec {
13   pname = "wannier90";
14   version = "3.1.0";
16   nativeBuildInputs = [ gfortran ];
17   buildInputs = [
18     blas
19     lapack
20   ];
22   src = fetchFromGitHub {
23     owner = "wannier-developers";
24     repo = "wannier90";
25     rev = "v${version}";
26     hash = "sha256-+Mq7lM6WuwAnK/2FlDz9gNRIg2sRazQRezb3BfD0veY=";
27   };
29   # test cases are removed as error bounds of wannier90 are obviously to tight
30   postPatch = ''
31     rm -r test-suite/tests/testpostw90_{fe_kpathcurv,fe_kslicecurv,si_geninterp,si_geninterp_wsdistance}
32     rm -r test-suite/tests/testw90_example26   # Fails without AVX optimizations
33     patchShebangs test-suite/run_tests test-suite/testcode/bin/testcode.py
34   '';
36   configurePhase = ''
37     cp config/make.inc.gfort make.inc
38   '';
40   buildFlags = [ "all" "dynlib" ];
42   preInstall = ''
43     installFlagsArray+=(
44       PREFIX=$out
45     )
46   '';
48   postInstall = ''
49     cp libwannier.so $out/lib/libwannier.so
51     mkdir $out/include
52     find ./src/obj/ -name "*.mod" -exec cp {} $out/include/. \;
53   '';
55   doCheck = true;
56   checkInputs = [ python3 ];
57   checkTarget = [ "test-serial" ];
58   preCheck = ''
59     export OMP_NUM_THREADS=4
60   '';
62   enableParallelBuilding = true;
64   hardeningDisable = [ "format" ];
66   meta = with lib; {
67     description = "Calculation of maximally localised Wannier functions";
68     homepage = "https://github.com/wannier-developers/wannier90";
69     license = licenses.gpl2Plus;
70     platforms = [ "x86_64-linux" ];
71     maintainers = [ maintainers.sheepforce ];
72   };