504525a148
GitOrigin-RevId: bd645e8668ec6612439a9ee7e71f7eac4099d4f6
73 lines
1.6 KiB
Nix
73 lines
1.6 KiB
Nix
{ stdenv
|
|
, lib
|
|
, gfortran
|
|
, blas
|
|
, lapack
|
|
, python3
|
|
, fetchFromGitHub
|
|
}:
|
|
assert (!blas.isILP64);
|
|
assert blas.isILP64 == lapack.isILP64;
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "wannier90";
|
|
version = "3.1.0";
|
|
|
|
nativeBuildInputs = [ gfortran ];
|
|
buildInputs = [
|
|
blas
|
|
lapack
|
|
];
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "wannier-developers";
|
|
repo = "wannier90";
|
|
rev = "v${version}";
|
|
hash = "sha256-+Mq7lM6WuwAnK/2FlDz9gNRIg2sRazQRezb3BfD0veY=";
|
|
};
|
|
|
|
# test cases are removed as error bounds of wannier90 are obviously to tight
|
|
postPatch = ''
|
|
rm -r test-suite/tests/testpostw90_{fe_kpathcurv,fe_kslicecurv,si_geninterp,si_geninterp_wsdistance}
|
|
rm -r test-suite/tests/testw90_example26 # Fails without AVX optimizations
|
|
patchShebangs test-suite/run_tests test-suite/testcode/bin/testcode.py
|
|
'';
|
|
|
|
configurePhase = ''
|
|
cp config/make.inc.gfort make.inc
|
|
'';
|
|
|
|
buildFlags = [ "all" "dynlib" ];
|
|
|
|
preInstall = ''
|
|
installFlagsArray+=(
|
|
PREFIX=$out
|
|
)
|
|
'';
|
|
|
|
postInstall = ''
|
|
cp libwannier.so $out/lib/libwannier.so
|
|
|
|
mkdir $out/include
|
|
find ./src/obj/ -name "*.mod" -exec cp {} $out/include/. \;
|
|
'';
|
|
|
|
doCheck = true;
|
|
checkInputs = [ python3 ];
|
|
checkTarget = [ "test-serial" ];
|
|
preCheck = ''
|
|
export OMP_NUM_THREADS=4
|
|
'';
|
|
|
|
enableParallelBuilding = true;
|
|
|
|
hardeningDisable = [ "format" ];
|
|
|
|
meta = with lib; {
|
|
description = "Calculation of maximally localised Wannier functions";
|
|
homepage = "https://github.com/wannier-developers/wannier90";
|
|
license = licenses.gpl2Plus;
|
|
platforms = [ "x86_64-linux" ];
|
|
maintainers = [ maintainers.sheepforce ];
|
|
};
|
|
}
|