Subject: [PATCH 2/8] gnu: python-petsc4py: Update to 3.21.4.

From: Ludovic Courtès <[email-masked]>
Date: Thu, 29 Aug 2024 17:39:35 +0200

From: Ludovic Courtès <[email-masked]>

* gnu/packages/maths.scm (python-petsc4py): Update to 3.21.4.
[source](modules, snippet): Remove.
[arguments]: Switch to gexps.  Rename ‘pre-build’ phase to
‘set-PETSC_DIR’.  Replace ‘check’ phase.
[native-inputs]: Switch to ‘python-cython-3’.
[inputs]: Remove labels.

Change-Id: I2d8ef3519f6ffe93ff761ef99c4b8951b6107e1c
---
 gnu/packages/maths.scm | 44 ++++++++++++++++--------------------------
 1 file changed, 17 insertions(+), 27 deletions(-)

diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 4be9ad9d7e..c6a40a2652 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -3727,41 +3727,31 @@ (define-public petsc-complex-openmpi
 (define-public python-petsc4py
   (package
     (name "python-petsc4py")
-    (version "3.16.1")
+    (version "3.21.4")
     (source
       (origin
         (method url-fetch)
         (uri (pypi-uri "petsc4py" version))
         (sha256
           (base32
-           "0pxr6qa7p0pmpq0av29lx8lzlrdcfdzj87ynixzr8dn42y13a662"))
-        (modules '((guix build utils)))
-        (snippet
-         '(begin
-            ;; Ensure source file is regenerated in the build phase.
-            (delete-file "src/petsc4py.PETSc.c")
-            ;; Remove legacy GC code.  See
-            ;; https://bitbucket.org/petsc/petsc4py/issues/125.
-            (substitute* "src/PETSc/cyclicgc.pxi"
-                         ((".*gc_refs.*") "" )
-                         ((".*PyGC_Head.*") ""))
-            #t))))
+           "1kffxhcwkx6283n2p83ymanz6m8j2xmz5kpa5s8qc4f9iiah59sb"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (add-before 'build 'pre-build
-           (lambda _
-             ;; Define path to PETSc installation.
-             (setenv "PETSC_DIR" (assoc-ref %build-inputs "petsc"))
-             #t))
-         (add-before 'check 'mpi-setup
-           ,%openmpi-setup))))
-    (native-inputs
-     (list python-cython))
-    (inputs
-     `(("petsc" ,petsc-openmpi)
-       ("python-numpy" ,python-numpy)))
+     (list #:phases
+           #~(modify-phases %standard-phases
+               (add-before 'build 'set-PETSC_DIR
+                 (lambda* (#:key inputs #:allow-other-keys)
+                   ;; Define path to PETSc installation.
+                   (setenv "PETSC_DIR"
+                           (assoc-ref inputs "petsc-openmpi"))))
+               (add-before 'check 'mpi-setup
+                 #$%openmpi-setup)
+               (replace 'check
+                 (lambda* (#:key tests? #:allow-other-keys)
+                   (when tests?
+                     (invoke "python" "test/runtests.py")))))))
+    (native-inputs (list python-cython-3))
+    (inputs (list petsc-openmpi python-numpy))
     (home-page "https://bitbucket.org/petsc/petsc4py/")
     (synopsis "Python bindings for PETSc")
     (description "PETSc, the Portable, Extensible Toolkit for
-- 
2.45.2