nixpkgs/pkgs/development/libraries/science/math/p4est/default.nix
2021-11-12 17:29:12 +01:00

59 lines
1.8 KiB
Nix

{ lib, stdenv, fetchFromGitHub
, autoreconfHook, pkg-config
, p4est-withMetis ? true, metis
, p4est-sc
}:
let
inherit (p4est-sc) debugEnable mpiSupport;
dbg = if debugEnable then "-dbg" else "";
withMetis = p4est-withMetis;
in
stdenv.mkDerivation {
pname = "p4est${dbg}";
version = "unstable-2021-06-22";
# fetch an untagged snapshot of the prev3-develop branch
src = fetchFromGitHub {
owner = "cburstedde";
repo = "p4est";
rev = "7423ac5f2b2b64490a7a92e5ddcbd251053c4dee";
sha256 = "0vffnf48rzw6d0as4c3x1f31b4kapmdzr1hfj5rz5ngah72gqrph";
};
strictDeps = true;
nativeBuildInputs = [ autoreconfHook pkg-config ];
propagatedBuildInputs = [ p4est-sc ];
buildInputs = lib.optional withMetis metis;
inherit debugEnable mpiSupport withMetis;
patches = [ ./p4est-metis.patch ];
postPatch = ''
sed -i -e "s:\(^\s*ACLOCAL_AMFLAGS.*\)\s@P4EST_SC_AMFLAGS@\s*$:\1 -I ${p4est-sc}/share/aclocal:" Makefile.am
'';
preConfigure = ''
echo "2.8.0" > .tarball-version
${if mpiSupport then "unset CC" else ""}
'';
configureFlags = p4est-sc.configureFlags
++ [ "--with-sc=${p4est-sc}" ]
++ lib.optional withMetis "--with-metis"
;
inherit (p4est-sc) makeFlags dontDisableStatic enableParallelBuilding preCheck doCheck;
meta = {
branch = "prev3-develop";
description = "Parallel AMR on Forests of Octrees";
longDescription = ''
The p4est software library provides algorithms for parallel AMR.
AMR refers to Adaptive Mesh Refinement, a technique in scientific
computing to cover the domain of a simulation with an adaptive mesh.
'';
homepage = "https://www.p4est.org/";
downloadPage = "https://github.com/cburstedde/p4est.git";
license = lib.licenses.gpl2Plus;
maintainers = [ lib.maintainers.cburstedde ];
};
}