aboutsummaryrefslogtreecommitdiff
path: root/gnu/packages/python-science.scm
diff options
context:
space:
mode:
authorSharlatan Hellseher <sharlatanus@gmail.com>2024-01-21 22:40:10 +0000
committerSharlatan Hellseher <sharlatanus@gmail.com>2024-01-28 22:44:30 +0000
commit77a07a968fbeac49bffa5cb10d5eb7e004cc316b (patch)
treefbfe2768da1567a7115372a6d494d480d958182a /gnu/packages/python-science.scm
parentae77d94839ecd8aa5a2f63d5d769ed7bbc941d7d (diff)
downloadguix-77a07a968fbeac49bffa5cb10d5eb7e004cc316b.tar
guix-77a07a968fbeac49bffa5cb10d5eb7e004cc316b.tar.gz
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
Diffstat (limited to 'gnu/packages/python-science.scm')
-rw-r--r--gnu/packages/python-science.scm50
1 files changed, 41 insertions, 9 deletions
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index 87d75159f2..f775d46349 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -513,32 +513,64 @@ spheres, cubes, etc.")
(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