Subject: [PATCH v2 09/20] gnu: Add metis-5.2.

From: David Elsing <[email-masked]>
Date: Thu, 21 Sep 2023 13:27:44 +0000

* gnu/packages/maths.scm (metis-5.2): New variable.
---
 gnu/packages/maths.scm | 48 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index a2650b3101..2a9040ad39 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -4230,6 +4230,7 @@ (define-public gklib
 software from KarypisLab, such as METIS.")
       (license license:asl2.0))))
 
+;; XXX: Remove once the full SuiteSparse package is replaced.
 (define-public metis
   (package
     (name "metis")
@@ -4263,6 +4264,53 @@ (define-public metis
 schemes.")
     (license license:asl2.0)))          ;As of version 5.0.3
 
+(define-public metis-5.2
+  (package
+    (name "metis")
+    (version "5.2.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/KarypisLab/METIS")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "19vi1wsi2gp2m5vb715yfnzd2g7brm4r40qxg65ysrzgl13lpmvr"))
+       (snippet
+        #~(delete-file "manual/manual.pdf"))))
+    (build-system cmake-build-system)
+    (inputs (list gklib openblas))
+    (arguments
+     (list
+      #:tests? #f ; Tests are not automatic
+      #:configure-flags
+      #~(list "-DSHARED=ON"
+              (string-append "-DGKLIB_PATH=" #$gklib))
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; The original Makefile copies some files and invokes CMake.
+          (add-before 'configure 'prepare-cmake
+              (lambda _
+                (substitute* "Makefile"
+                  (("config: distclean") "config:")
+                  (("BUILDDIR =.*")
+                   "BUILDDIR = .\n")
+                  ((".*cmake.*") ""))
+                (substitute* "CMakeLists.txt"
+                  (("build/") "../source/"))
+                (invoke "make" "config"))))))
+    (home-page "http://glaros.dtc.umn.edu/gkhome/metis/metis/overview")
+    (synopsis "Graph partitioning and fill-reducing matrix ordering library")
+    (description
+     "METIS is a set of serial programs for partitioning graphs, partitioning
+finite element meshes, and producing fill-reducing orderings for sparse
+matrices.  The algorithms implemented in METIS are based on the multilevel
+recursive-bisection, multilevel k-way, and multi-constraint partitioning
+schemes.")
+    (license license:asl2.0)))
+
 (define-public p4est
   (package
     (name "p4est")
-- 
2.41.0