about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--pkgs/by-name/sp/spral/package.nix65
1 files changed, 65 insertions, 0 deletions
diff --git a/pkgs/by-name/sp/spral/package.nix b/pkgs/by-name/sp/spral/package.nix
new file mode 100644
index 000000000000..720f0137338b
--- /dev/null
+++ b/pkgs/by-name/sp/spral/package.nix
@@ -0,0 +1,65 @@
+{
+  blas,
+  fetchFromGitHub,
+  gfortran,
+  lapack,
+  lib,
+  llvmPackages,
+  meson,
+  metis,
+  ninja,
+  stdenv,
+}:
+
+stdenv.mkDerivation rec {
+  pname = "spral";
+  version = "2024.05.08";
+
+  src = fetchFromGitHub {
+    owner = "ralna";
+    repo = "spral";
+    rev = "v${version}";
+    hash = "sha256-1CdRwQ0LQrYcXvoGtGxR9Ug3Q2N4skXq8z+LdNpv8p4=";
+  };
+
+  postPatch =
+    ''
+      # Skipped test: ssidst
+      # hwloc/linux: failed to find sysfs cpu topology directory, aborting linux discovery.
+      substituteInPlace tests/meson.build --replace-fail \
+        "subdir('ssids')" \
+        ""
+    ''
+    + lib.optionalString stdenv.isDarwin ''
+      # Skipped test: lsmrt, segfault
+      substituteInPlace tests/meson.build --replace-fail \
+        "['lsmrt', files('lsmr.f90')]," \
+        ""
+    '';
+
+  nativeBuildInputs = [
+    gfortran
+    meson
+    ninja
+  ];
+
+  buildInputs = [
+    blas
+    lapack
+    metis
+  ] ++ lib.optionals stdenv.isDarwin [ llvmPackages.openmp ];
+
+  mesonFlags = [ (lib.mesonBool "tests" true) ];
+
+  LDFLAGS = lib.optionals stdenv.isDarwin [ "-lomp" ];
+
+  doCheck = true;
+
+  meta = {
+    description = "Sparse Parallel Robust Algorithms Library";
+    homepage = "https://github.com/ralna/spral";
+    changelog = "https://github.com/ralna/spral/blob/${src.rev}/ChangeLog";
+    license = lib.licenses.bsd3;
+    maintainers = with lib.maintainers; [ nim65s ];
+  };
+}