depot/third_party/nixpkgs/pkgs/development/python-modules/devito/default.nix

143 lines
3.5 KiB
Nix

{
lib,
stdenv,
anytree,
buildPythonPackage,
setuptools,
cached-property,
cgen,
click,
codepy,
distributed,
fetchFromGitHub,
gcc,
llvmPackages,
matplotlib,
multidict,
nbval,
psutil,
py-cpuinfo,
pytest-xdist,
pytestCheckHook,
pythonOlder,
scipy,
sympy,
}:
buildPythonPackage rec {
pname = "devito";
version = "4.8.11";
pyproject = true;
disabled = pythonOlder "3.8";
src = fetchFromGitHub {
owner = "devitocodes";
repo = "devito";
rev = "refs/tags/v${version}";
hash = "sha256-c8/b2dRwfH4naSVRaRon6/mBDva7RSDmi/TJUJp26g0=";
};
# packaging.metadata.InvalidMetadata: 'python_version_3.8_' is invalid for 'provides-extra'
postPatch = ''
substituteInPlace requirements-testing.txt \
--replace-fail 'pooch; python_version >= "3.8"' "pooch"
'';
pythonRemoveDeps = [ "pip" ];
pythonRelaxDeps = true;
build-system = [ setuptools ];
dependencies = [
anytree
cached-property
cgen
click
codepy
distributed
nbval
multidict
psutil
py-cpuinfo
scipy
sympy
] ++ lib.optionals stdenv.cc.isClang [ llvmPackages.openmp ];
nativeCheckInputs = [
gcc
matplotlib
pytest-xdist
pytestCheckHook
];
pytestFlagsArray = [ "-x" ];
# I've had to disable the following tests since they fail while using nix-build, but they do pass
# outside the build. They mostly related to the usage of MPI in a sandboxed environment.
disabledTests =
[
"test_assign_parallel"
"test_cache_blocking_structure_distributed"
"test_codegen_quality0"
"test_coefficients_w_xreplace"
"test_docstrings"
"test_docstrings[finite_differences.coefficients]"
"test_gs_parallel"
"test_if_halo_mpi"
"test_if_parallel"
"test_index_derivative"
"test_init_omp_env_w_mpi"
"test_loop_bounds_forward"
"test_min_max_mpi"
"test_mpi"
"test_mpi_nocomms"
"test_new_distributor"
"test_setupWOverQ"
"test_shortcuts"
"test_stability_mpi"
"test_subdomainset_mpi"
"test_subdomains_mpi"
]
++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [
# FAILED tests/test_unexpansion.py::Test2Pass::test_v0 - assert False
"test_v0"
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
# FAILED tests/test_caching.py::TestCaching::test_special_symbols - ValueError: not enough values to unpack (expected 3, got 2)
"test_special_symbols"
# FAILED tests/test_unexpansion.py::Test2Pass::test_v0 - codepy.CompileError: module compilation failed
"test_v0"
]
++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
# Numerical tests
"test_lm_fb"
"test_lm_ds"
];
disabledTestPaths =
[
"tests/test_pickle.py"
"tests/test_benchmark.py"
"tests/test_mpi.py"
"tests/test_autotuner.py"
"tests/test_data.py"
"tests/test_dse.py"
"tests/test_gradient.py"
]
++ lib.optionals (
(stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) || stdenv.hostPlatform.isDarwin
) [ "tests/test_dle.py" ];
pythonImportsCheck = [ "devito" ];
meta = {
description = "Code generation framework for automated finite difference computation";
homepage = "https://www.devitoproject.org/";
changelog = "https://github.com/devitocodes/devito/releases/tag/v${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ atila ];
};
}