about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/science/math/petsc
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/science/math/petsc')
-rw-r--r--nixpkgs/pkgs/development/libraries/science/math/petsc/default.nix52
1 files changed, 52 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/science/math/petsc/default.nix b/nixpkgs/pkgs/development/libraries/science/math/petsc/default.nix
new file mode 100644
index 000000000000..82a0d063570d
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/science/math/petsc/default.nix
@@ -0,0 +1,52 @@
+{ stdenv , darwin , fetchurl , blas , gfortran , lapack , python }:
+
+stdenv.mkDerivation rec {
+  pname = "petsc";
+  version = "3.13.4";
+
+  src = fetchurl {
+    url = "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-${version}.tar.gz";
+    sha256 = "1n2paqw5c0ja392s1qhp7q2ypwav8s5drxxz2w5m2cn31vbspy1c";
+  };
+
+  nativeBuildInputs = [ blas gfortran gfortran.cc.lib lapack python ];
+
+  # Upstream does some hot she-py-bang stuff, this change streamlines that
+  # process. The original script in upstream is both a shell script and a
+  # python script, where the shellscript just finds a suitable python
+  # interpreter to execute the python script. See
+  # https://github.com/NixOS/nixpkgs/pull/89299#discussion_r450203444
+  # for more details.
+  prePatch = ''
+    substituteInPlace configure \
+      --replace /bin/sh /usr/bin/python
+  '' + stdenv.lib.optionalString stdenv.isDarwin ''
+    substituteInPlace config/install.py \
+      --replace /usr/bin/install_name_tool ${darwin.cctools}/bin/install_name_tool
+  '';
+
+  preConfigure = ''
+    export FC="${gfortran}/bin/gfortran" F77="${gfortran}/bin/gfortran"
+    patchShebangs .
+    configureFlagsArray=(
+      $configureFlagsArray
+      "--CC=$CC"
+      "--with-cxx=$CXX"
+      "--with-fc=$FC"
+      "--with-mpi=0"
+      "--with-blas-lib=[${blas}/lib/libblas.so,${gfortran.cc.lib}/lib/libgfortran.a]"
+      "--with-lapack-lib=[${lapack}/lib/liblapack.so,${gfortran.cc.lib}/lib/libgfortran.a]"
+    )
+  '';
+
+  meta = with stdenv.lib; {
+    description = ''
+      Library of linear algebra algorithms for solving partial differential
+      equations
+    '';
+    homepage = "https://www.mcs.anl.gov/petsc/index.html";
+    license = licenses.bsd2;
+    maintainers = with maintainers; [ wucke13 ];
+    platforms = platforms.all;
+  };
+}