nixpkgs/pkgs/development/python-modules/pyscf/default.nix
Guillaume Girol 33afbf39f6 treewide: switch to nativeCheckInputs
checkInputs used to be added to nativeBuildInputs. Now we have
nativeCheckInputs to do that instead. Doing this treewide change allows
to keep hashes identical to before the introduction of
nativeCheckInputs.
2023-01-21 12:00:00 +00:00

117 lines
3.4 KiB
Nix

{ buildPythonPackage
, lib
, fetchFromGitHub
, fetchpatch
, cmake
, blas
, libcint
, libxc
, xcfun
, cppe
, h5py
, numpy
, scipy
, nose
, nose-exclude
}:
buildPythonPackage rec {
pname = "pyscf";
version = "2.1.1";
src = fetchFromGitHub {
owner = "pyscf";
repo = pname;
rev = "v${version}";
hash = "sha256-KMxwyAK00Zc0i76zWTMznfXQCVCt+4HOH8SlwuOCORk=";
};
patches = [ (fetchpatch {
name = "libxc-6"; # https://github.com/pyscf/pyscf/pull/1467
url = "https://github.com/pyscf/pyscf/commit/ebcfacc90e119cd7f9dcdbf0076a84660349fc79.patch";
sha256 = "sha256-O+eDlUKJeThxQcHrMGqxjDfRCmCNP+OCgv/L72jAF/o=";
})];
# setup.py calls Cmake and passes the arguments in CMAKE_CONFIGURE_ARGS to cmake.
nativeBuildInputs = [ cmake ];
dontUseCmakeConfigure = true;
preConfigure = ''
export CMAKE_CONFIGURE_ARGS="-DBUILD_LIBCINT=0 -DBUILD_LIBXC=0 -DBUILD_XCFUN=0"
PYSCF_INC_DIR="${libcint}:${libxc}:${xcfun}";
'';
buildInputs = [
blas
libcint
libxc
xcfun
];
propagatedBuildInputs = [
cppe
h5py
numpy
scipy
];
nativeCheckInputs = [ nose nose-exclude ];
pythonImportsCheck = [ "pyscf" ];
preCheck = ''
# Set config used by tests to ensure reproducibility
echo 'pbc_tools_pbc_fft_engine = "NUMPY"' > pyscf/pyscf_config.py
export OMP_NUM_THREADS=1
ulimit -s 20000
export PYSCF_CONFIG_FILE=$(pwd)/pyscf/pyscf_config.py
'';
# As defined for the PySCF CI at https://github.com/pyscf/pyscf/blob/master/.github/workflows/run_tests.sh
# minus some additionally numerically instable tests, that are sensitive to BLAS, FFTW, etc.
checkPhase = ''
runHook preCheck
nosetests pyscf/ -v \
--exclude-dir=examples --exclude-dir=pyscf/pbc/grad \
--exclude-dir=pyscf/x2c \
--exclude-dir=pyscf/adc \
--exclude-dir=pyscf/pbc/tdscf \
-e test_bz \
-e h2o_vdz \
-e test_mc2step_4o4e \
-e test_ks_noimport \
-e test_jk_hermi0 \
-e test_j_kpts \
-e test_k_kpts \
-e test_lda \
-e high_cost \
-e skip \
-e call_in_background \
-e libxc_cam_beta_bug \
-e test_finite_diff_rks_eph \
-e test_finite_diff_uks_eph \
-e test_pipek \
-e test_n3_cis_ewald \
-I test_kuccsd_supercell_vs_kpts\.py \
-I test_kccsd_ghf\.py \
-I test_h_.*\.py \
--exclude-test=pyscf/pbc/gw/test/test_kgw_slow_supercell.DiamondTestSupercell3 \
--exclude-test=pyscf/pbc/gw/test/test_kgw_slow_supercell.DiamondKSTestSupercell3 \
--exclude-test=pyscf/pbc/gw/test/test_kgw_slow.DiamondTestSupercell3 \
--exclude-test=pyscf/pbc/gw/test/test_kgw_slow.DiamondKSTestSupercell3 \
--exclude-test=pyscf/pbc/tdscf/test/test_krhf_slow_supercell.DiamondTestSupercell3 \
--exclude-test=pyscf/pbc/tdscf/test/test_kproxy_hf.DiamondTestSupercell3 \
--exclude-test=pyscf/pbc/tdscf/test/test_kproxy_ks.DiamondTestSupercell3 \
--exclude-test=pyscf/pbc/tdscf/test/test_kproxy_supercell_hf.DiamondTestSupercell3 \
--exclude-test=pyscf/pbc/tdscf/test/test_kproxy_supercell_ks.DiamondTestSupercell3 \
-I .*_slow.*py -I .*_kproxy_.*py -I test_proxy.py tdscf/*_slow.py gw/*_slow.py
runHook postCheck
'';
meta = with lib; {
description = "Python-based simulations of chemistry framework";
homepage = "https://github.com/pyscf/pyscf";
license = licenses.asl20;
platforms = [ "x86_64-linux" "x86_64-darwin" ];
maintainers = [ maintainers.sheepforce ];
};
}