33afbf39f6
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.
117 lines
3.4 KiB
Nix
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 ];
|
|
};
|
|
}
|