From 77a07a968fbeac49bffa5cb10d5eb7e004cc316b Mon Sep 17 00:00:00 2001 From: Sharlatan Hellseher Date: Sun, 21 Jan 2024 22:40:10 +0000 Subject: 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 --- gnu/packages/python-science.scm | 50 +++++++++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 9 deletions(-) (limited to 'gnu/packages/python-science.scm') 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 @@ (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 -- cgit v1.2.3