gnu: python-pyamg: Regenerate bundled files.

* gnu/packages/python-science.scm (python-pyamg) [source]: Delete
auto-generated files.
[arguments] <#:phases>: Add 'amg-core-bind-them phase to
re-generate *_bind.cpp files deleted in snippet.
[native-inputs]: Add python-cppheaderparser and python-pyyaml.
[description]: Improve style, omit implementation details.

Change-Id: I6f68914cd912e6f4592e51c21b129847e73be847
This commit is contained in:
Sharlatan Hellseher 2024-01-21 22:40:10 +00:00
parent ae77d94839
commit 77a07a968f
No known key found for this signature in database
GPG key ID: 76D727BFF62CD2B5

View file

@ -513,32 +513,64 @@ (define-public python-pyamg
(source (origin
(method url-fetch)
(uri (pypi-uri "pyamg" version))
(modules '((guix build utils)))
(snippet
;; Delete autogenerated files, regenerate in a phase.
#~(begin
(for-each
(lambda (file)
(delete-file (string-append "pyamg/amg_core/" file)))
'("air_bind.cpp"
"evolution_strength_bind.cpp"
"graph_bind.cpp"
"krylov_bind.cpp"
"linalg_bind.cpp"
"relaxation_bind.cpp"
"ruge_stuben_bind.cpp"
"smoothed_aggregation_bind.cpp"
"tests/bind_examples_bind.cpp"))))
(sha256
(base32
"0l3dliwynxyjvbgpmi2k8jqvkkw6fc00c8w69h6swhrkfh0ql12z"))))
(build-system pyproject-build-system)
(arguments
(list
#:test-flags
;; Test installed package in order to find C++ modules.
#~(list "--pyargs" "pyamg.tests")))
(native-inputs (list pybind11 python-pytest python-setuptools-scm))
#~(list "--pyargs" "pyamg.tests")
#:phases
#~(modify-phases %standard-phases
;; Regenerate the autogenerated files.
(add-after 'unpack 'amg-core-bind-them
(lambda _
;; bindthem.py heavily depends on location to produce *_bind.cpp
;; file, make it available in tests as well.
(copy-file "pyamg/amg_core/bindthem.py"
"pyamg/amg_core/tests/bindthem.py")
(with-directory-excursion "pyamg/amg_core"
(substitute* "bindthem.py"
(("/usr/bin/env python3") (which "python3")))
(invoke "sh" "generate.sh"))
(with-directory-excursion "pyamg/amg_core/tests"
(invoke "python" "bindthem.py" "bind_examples.h")))))))
(build-system pyproject-build-system)
(native-inputs
(list pybind11
python-cppheaderparser
python-pytest
python-pyyaml
python-setuptools-scm))
(propagated-inputs (list python-numpy python-scipy))
(home-page "https://github.com/pyamg/pyamg")
(synopsis "Algebraic Multigrid Solvers in Python")
(description "PyAMG is a Python library of Algebraic Multigrid
(AMG) solvers.
PyAMG features implementations of:
(AMG) solvers. It features implementations of:
@itemize
@item Ruge-Stuben (RS) or Classical AMG
@item AMG based on Smoothed Aggregation (SA)
@item Adaptive Smoothed Aggregation (αSA)
@item Compatible Relaxation (CR)
@item Krylov methods such as CG, GMRES, FGMRES, BiCGStab, MINRES, etc.
@end itemize
PyAMG is primarily written in Python with supporting C++ code for
performance critical operations.")
@end itemize")
(license license:expat)))
(define-public python-tspex