nixpkgs/pkgs/development/python-modules/fenics/default.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

265 lines
6.5 KiB
Nix
Raw Normal View History

{ lib, stdenv
2017-08-14 12:32:07 +00:00
, fetchurl
, fetchpatch
2022-04-25 14:42:36 +00:00
, blas
2017-08-14 12:32:07 +00:00
, boost
, cmake
, doxygen
, eigen
2022-04-25 14:42:36 +00:00
, gtest
, hdf5
, lapack
, mpi
, mpi4py
2017-08-14 12:32:07 +00:00
, numpy
, pkg-config
2022-04-25 14:42:36 +00:00
, ply
, pybind11
2017-08-14 12:32:07 +00:00
, pytest
, python
2022-04-25 14:42:36 +00:00
, pythonPackages
, scotch
, setuptools
2022-04-25 14:42:36 +00:00
, six
, sphinx
, suitesparse
, swig
2022-04-25 14:42:36 +00:00
, sympy
, zlib
, nixosTests
}:
2022-04-25 14:42:36 +00:00
2017-08-14 12:32:07 +00:00
let
version = "2019.1.0";
2017-08-14 12:32:07 +00:00
dijitso = pythonPackages.buildPythonPackage {
2019-08-13 21:52:01 +00:00
pname = "dijitso";
inherit version;
2017-08-14 12:32:07 +00:00
src = fetchurl {
url = "https://bitbucket.org/fenics-project/dijitso/downloads/dijitso-${version}.tar.gz";
sha256 = "1ncgbr0bn5cvv16f13g722a0ipw6p9y6p4iasxjziwsp8kn5x97a";
2017-08-14 12:32:07 +00:00
};
propagatedBuildInputs = [ numpy six ];
checkInputs = [ pytest ];
preCheck = ''
2017-08-14 12:32:07 +00:00
export HOME=$PWD
'';
checkPhase = ''
runHook preCheck
2017-08-14 12:32:07 +00:00
py.test test/
runHook postCheck
2017-08-14 12:32:07 +00:00
'';
meta = {
description = "Distributed just-in-time shared library building";
homepage = "https://fenicsproject.org/";
platforms = lib.platforms.all;
license = lib.licenses.lgpl3;
2017-08-14 12:32:07 +00:00
};
};
fiat = pythonPackages.buildPythonPackage {
2019-08-13 21:52:01 +00:00
pname = "fiat";
inherit version;
2017-08-14 12:32:07 +00:00
src = fetchurl {
url = "https://bitbucket.org/fenics-project/fiat/downloads/fiat-${version}.tar.gz";
sha256 = "1sbi0fbr7w9g9ajr565g3njxrc3qydqjy3334vmz5xg0rd3106il";
2017-08-14 12:32:07 +00:00
};
propagatedBuildInputs = [ numpy six sympy ];
checkInputs = [ pytest ];
preCheck = ''
# Workaround pytest 4.6.3 issue.
# See: https://bitbucket.org/fenics-project/fiat/pull-requests/59
rm test/unit/test_quadrature.py
rm test/unit/test_reference_element.py
rm test/unit/test_fiat.py
'';
2017-08-14 12:32:07 +00:00
checkPhase = ''
runHook preCheck
2017-08-14 12:32:07 +00:00
py.test test/unit/
runHook postCheck
2017-08-14 12:32:07 +00:00
'';
meta = {
description = "Automatic generation of finite element basis functions";
homepage = "https://fenicsproject.org/";
platforms = lib.platforms.all;
license = lib.licenses.lgpl3;
2017-08-14 12:32:07 +00:00
};
};
ufl = pythonPackages.buildPythonPackage {
2019-08-13 21:52:01 +00:00
pname = "ufl";
inherit version;
2017-08-14 12:32:07 +00:00
src = fetchurl {
url = "https://bitbucket.org/fenics-project/ufl/downloads/ufl-${version}.tar.gz";
sha256 = "04daxwg4y9c51sdgvwgmlc82nn0fjw7i2vzs15ckdc7dlazmcfi1";
2017-08-14 12:32:07 +00:00
};
propagatedBuildInputs = [ numpy six ];
checkInputs = [ pytest ];
2017-08-14 12:32:07 +00:00
checkPhase = ''
runHook preCheck
2017-08-14 12:32:07 +00:00
py.test test/
runHook postCheck
2017-08-14 12:32:07 +00:00
'';
meta = {
description = "A domain-specific language for finite element variational forms";
homepage = "https://fenicsproject.org/";
platforms = lib.platforms.all;
license = lib.licenses.lgpl3;
2017-08-14 12:32:07 +00:00
};
};
ffc = pythonPackages.buildPythonPackage {
2019-08-13 21:52:01 +00:00
pname = "ffc";
inherit version;
2017-08-14 12:32:07 +00:00
src = fetchurl {
url = "https://bitbucket.org/fenics-project/ffc/downloads/ffc-${version}.tar.gz";
sha256 = "1zdg6pziss4va74pd7jjl8sc3ya2gmhpypccmyd8p7c66ji23y2g";
2017-08-14 12:32:07 +00:00
};
nativeBuildInputs = [
pybind11
];
propagatedBuildInputs = [
dijitso
fiat
numpy
six
sympy
ufl
setuptools
];
checkInputs = [ pytest ];
preCheck = ''
2017-08-14 12:32:07 +00:00
export HOME=$PWD
rm test/unit/ufc/finite_element/test_evaluate.py
'';
checkPhase = ''
runHook preCheck
2017-08-14 12:32:07 +00:00
py.test test/unit/
runHook postCheck
2017-08-14 12:32:07 +00:00
'';
meta = {
description = "A compiler for finite element variational forms";
homepage = "https://fenicsproject.org/";
platforms = lib.platforms.all;
license = lib.licenses.lgpl3;
2017-08-14 12:32:07 +00:00
};
};
dolfin = stdenv.mkDerivation {
pname = "dolfin";
2019-08-13 21:52:01 +00:00
inherit version;
2017-08-14 12:32:07 +00:00
src = fetchurl {
url = "https://bitbucket.org/fenics-project/dolfin/downloads/dolfin-${version}.tar.gz";
sha256 = "0kbyi4x5f6j4zpasch0swh0ch81w2h92rqm1nfp3ydi4a93vky33";
2017-08-14 12:32:07 +00:00
};
patches = [
(fetchpatch {
name = "fix-double-prefix.patch";
url = "https://bitbucket.org/josef_kemetmueller/dolfin/commits/328e94acd426ebaf2243c072b806be3379fd4340/raw";
sha256 = "1zj7k3y7vsx0hz3gwwlxhq6gdqamqpcw90d4ishwx5ps5ckcsb9r";
})
];
propagatedBuildInputs = [
dijitso
fiat
numpy
six
ufl
];
nativeBuildInputs = [
cmake
doxygen
pkg-config
];
buildInputs = [
boost
dijitso
eigen
ffc
fiat
hdf5
mpi
numpy
blas
lapack
ply
python
scotch
six
sphinx
suitesparse
swig
sympy
ufl
zlib
];
cmakeFlags = [
"-DDOLFIN_CXX_FLAGS=-std=c++11"
"-DDOLFIN_AUTO_DETECT_MPI=ON"
"-DDOLFIN_ENABLE_CHOLMOD=ON"
"-DDOLFIN_ENABLE_DOCS=ON"
"-DDOLFIN_ENABLE_HDF5=ON"
"-DDOLFIN_ENABLE_MPI=ON"
"-DDOLFIN_ENABLE_SCOTCH=ON"
"-DDOLFIN_ENABLE_UMFPACK=ON"
"-DDOLFIN_ENABLE_ZLIB=ON"
"-DDOLFIN_SKIP_BUILD_TESTS=ON" # Otherwise SCOTCH is not found
# TODO: Enable the following features
"-DDOLFIN_ENABLE_PARMETIS=OFF"
"-DDOLFIN_ENABLE_PETSC=OFF"
"-DDOLFIN_ENABLE_SLEPC=OFF"
"-DDOLFIN_ENABLE_TRILINOS=OFF"
];
installCheckPhase = ''
source $out/share/dolfin/dolfin.conf
make runtests
'';
2017-08-14 12:32:07 +00:00
meta = {
description = "The FEniCS Problem Solving Environment in Python and C++";
homepage = "https://fenicsproject.org/";
license = lib.licenses.lgpl3;
2017-08-14 12:32:07 +00:00
};
};
python-dolfin = pythonPackages.buildPythonPackage rec {
pname = "dolfin";
inherit version;
disabled = pythonPackages.isPy27;
src = dolfin.src;
sourceRoot = "${pname}-${version}/python";
nativeBuildInputs = [
pybind11
cmake
];
dontUseCmakeConfigure = true;
preConfigure = ''
export CMAKE_PREFIX_PATH=${pybind11}/share/cmake/pybind11:$CMAKE_PREFIX_PATH
substituteInPlace setup.py --replace "pybind11==2.2.4" "pybind11"
substituteInPlace dolfin/jit/jit.py \
--replace 'pkgconfig.exists("dolfin")' 'pkgconfig.exists("${dolfin}/lib/pkgconfig/dolfin.pc")' \
--replace 'pkgconfig.parse("dolfin")' 'pkgconfig.parse("${dolfin}/lib/pkgconfig/dolfin.pc")'
'';
buildInputs = [
dolfin
boost
];
2017-08-14 12:32:07 +00:00
propagatedBuildInputs = [
dijitso
ffc
mpi4py
numpy
ufl
pythonPackages.pkgconfig
pythonPackages.pybind11
];
doCheck = false; # Tries to orte_ess_init and call ssh to localhost
passthru.tests = { inherit (nixosTests) fenics; };
meta = {
description = "Python bindings for the DOLFIN FEM compiler";
homepage = "https://fenicsproject.org/";
platforms = lib.platforms.all;
license = lib.licenses.lgpl3;
};
2017-08-14 12:32:07 +00:00
};
in python-dolfin