Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
3.7 kB · 190 lines
Nix
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191{ lib, newScope, stdenv, buildPythonPackage, fetchFromGitHub, fetchpatch2, python, pax-utils,
# build-system setuptools, cython, pybind11,
# dependencies decorator, cachetools, mpi4py, fenics-ufl, firedrake-fiat, h5py, libsupermesh, loopy, petsc4py, numpy, packaging, pkgconfig, progress, pyadjoint-ad, pycparser, pytools, requests, rtree, scipy, sympy, islpy, matplotlib,
# tests pytest, mpi-pytest, mpiCheckPhaseHook, writableTmpDirAsHomeHook,
# passthru.tests firedrake, mpich,}:let firedrakePackages = lib.makeScope newScope (self: { inherit (petsc4py.petscPackages) mpi hdf5; mpi4py = self.callPackage mpi4py.override { }; h5py = self.callPackage h5py.override { }; mpi-pytest = self.callPackage mpi-pytest.override { }; });inbuildPythonPackage rec { pname = "firedrake"; version = "20250331.0"; pyproject = true;
src = fetchFromGitHub { owner = "firedrakeproject"; repo = "firedrake"; tag = "Firedrake_${version}"; hash = "sha256-J0oAZWkzcrgbry5OTG8hKrIgHcwJtzaDw8staOLM9u4="; };
postPatch = # relax build-dependency petsc4py '' substituteInPlace pyproject.toml --replace-fail \ "petsc4py==3.23.4" "petsc4py" '' + lib.optionalString stdenv.hostPlatform.isLinux '' substituteInPlace firedrake/petsc.py --replace-fail \ 'program = ["ldd"]' \ 'program = ["${lib.getExe' pax-utils "lddtree"}"]' '' + lib.optionalString stdenv.hostPlatform.isDarwin '' substituteInPlace firedrake/petsc.py --replace-fail \ 'program = ["otool"' \ 'program = ["${lib.getExe' stdenv.cc.bintools.bintools "otool"}"' '';
pythonRelaxDeps = [ "decorator" "slepc4py" ];
build-system = [ cython libsupermesh firedrakePackages.mpi4py numpy pkgconfig pybind11 setuptools petsc4py rtree ];
nativeBuildInputs = [ firedrakePackages.mpi ];
dependencies = [ decorator cachetools firedrakePackages.mpi4py fenics-ufl firedrake-fiat firedrakePackages.h5py libsupermesh loopy petsc4py numpy packaging pkgconfig progress pyadjoint-ad pycparser pytools requests rtree scipy sympy # required by script spydump matplotlib ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ islpy ];
postFixup = lib.optionalString stdenv.hostPlatform.isDarwin '' install_name_tool -add_rpath ${libsupermesh}/${python.sitePackages}/libsupermesh/lib \ $out/${python.sitePackages}/firedrake/cython/supermeshimpl.cpython-*-darwin.so '';
doCheck = true;
__darwinAllowLocalNetworking = true;
pythonImportsCheck = [ "firedrake" ];
nativeCheckInputs = [ pytest firedrakePackages.mpi-pytest mpiCheckPhaseHook writableTmpDirAsHomeHook ];
# These scripts are used by official sdist/editable_wheel only postInstall = '' rm $out/bin/firedrake-{check,status,run-split-tests} '';
preCheck = '' rm -rf firedrake pyop2 tinyasm tsfc '';
# run official smoke tests checkPhase = '' runHook preCheck
make check
runHook postCheck '';
passthru = { tests = lib.optionalAttrs stdenv.hostPlatform.isLinux { mpich = firedrake.override { petsc4py = petsc4py.override { mpi = mpich; }; }; }; };
meta = { homepage = "https://www.firedrakeproject.org"; downloadPage = "https://github.com/firedrakeproject/firedrake"; description = "Automated Finite Element System"; license = with lib.licenses; [ bsd3 lgpl3Plus ]; maintainers = with lib.maintainers; [ qbisi ]; };}