gnu: Add python-pygmsh.

* gnu/packages/simulation.scm (python-pygmsh): New variable.
This commit is contained in:
Paul Garlick 2021-07-12 15:01:16 +01:00
parent b9fd7f9d5b
commit 3af31bc25a
No known key found for this signature in database
GPG key ID: AAC7E891896B568A

View file

@ -41,6 +41,7 @@ (define-module (gnu packages simulation)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-build)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages readline)
#:use-module (gnu packages tls)
@ -836,3 +837,65 @@ (define-public python-meshio
gmsh, xdmf and vtk are supported. The package provides command-line
tools and a collection of Python modules for programmatic use.")
(license license:expat)))
(define-public python-pygmsh
(package
(name "python-pygmsh")
(version "7.1.9")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pygmsh" version))
(sha256
(base32
"1q7nr0cq581wlif537y6awj7vz9jywxg14c8znmsx5ip8x24754j"))
(modules '((guix build utils)))
(snippet
'(begin
(let ((file (open-file "setup.py" "a")))
(display "from setuptools import setup\nsetup()" file)
(close-port file))
;; setuptools is supplied by the build system. An extra
;; reference in the original configuration file triggers
;; an attempt to download the package again. This fails.
;; The extra reference is unnecessary and is removed.
(substitute* "setup.cfg"
(("^[[:blank:]]+setuptools>=42\n") ""))
;; FIXME: gmsh version 4.7.0 introduces new field option
;; names. See gmsh commit 6eab8028. pygmsh needs to use
;; one of the old option names for compatibility with gmsh
;; version 4.6.0.
(with-directory-excursion "pygmsh/common"
(substitute* "size_field.py"
(("NumPointsPerCurve") "NNodesByEdge")))
#t))))
(build-system python-build-system)
(native-inputs
`(("pytest" ,python-pytest)
("wheel" ,python-wheel)))
(propagated-inputs
`(("importlib-metadata" ,python-importlib-metadata)
("gmsh" ,gmsh)
("meshio" ,python-meshio)
("numpy" ,python-numpy)))
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda* (#:key inputs outputs tests? #:allow-other-keys)
(when tests?
(add-installed-pythonpath inputs outputs)
;; The readme test is skipped. It requires the exdown
;; module which is not available.
(invoke "python" "-m" "pytest" "-v" "test"
"--ignore" "test/test_readme.py"))
#t)))))
(home-page "https://github.com/nschloe/pygmsh")
(synopsis "Python frontend for Gmsh")
(description "The goal of @code{pygmsh} is to combine the power of
Gmsh with the versatility of Python. The package generalises many of
the methods and functions that comprise the Gmsh Python API. In this
way the meshing of complex geometries using high-level abstractions is
made possible. The package provides a Python library together with a
command-line utility for mesh optimisation.")
(license license:lgpl3)))