Package: guix-patches;
Reported by: Paul Garlick <pgarlick <at> tourbillion-technology.com>
Date: Fri, 4 Jul 2025 12:35:02 UTC
Severity: normal
Tags: patch
Done: Andreas Enge <andreas <at> enge.fr>
To reply to this bug, email your comments to 78954 AT debbugs.gnu.org.
There is no need to reopen the bug first.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
guix-patches <at> gnu.org
:bug#78954
; Package guix-patches
.
(Fri, 04 Jul 2025 12:35:02 GMT) Full text and rfc822 format available.Paul Garlick <pgarlick <at> tourbillion-technology.com>
:guix-patches <at> gnu.org
.
(Fri, 04 Jul 2025 12:35:03 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Paul Garlick <pgarlick <at> tourbillion-technology.com> To: guix-patches <at> gnu.org Cc: Paul Garlick <pgarlick <at> tourbillion-technology.com> Subject: [PATCH] gnu: fenics: Fix build. Date: Fri, 4 Jul 2025 11:10:21 +0100
* gnu/packages/simulation.scm (fenics): Run guix style, improve formatting. [arguments] <phases>: Remove test module references to expired numpy aliases in the 'pre-check' phase. Use '--deselect' instead of '--ignore' to skip a test in the 'check' phase. Add a FIXME note to enable reading and writing files in the binary HDF5 format. --- gnu/packages/simulation.scm | 196 ++++++++++++++++++------------------ 1 file changed, 99 insertions(+), 97 deletions(-) diff --git a/gnu/packages/simulation.scm b/gnu/packages/simulation.scm index e6f86fb736..7d7668f117 100644 --- a/gnu/packages/simulation.scm +++ b/gnu/packages/simulation.scm @@ -917,108 +917,110 @@ (define-public fenics (list fenics-dolfin python-petsc4py python-slepc4py - - ;; 'dolfin/jit/jit.py' parses 'dolfin.pc' at run time. + ;; 'dolfin/jit/jit.py' parses 'dolfin.pc' at runtime. python-pkgconfig)) (arguments - (list #:phases - #~(modify-phases %standard-phases - (add-after 'unpack 'relax-requirements - (lambda _ - (substitute* "python/setup.py" - (("pybind11==") - "pybind11>=")))) - (add-after 'unpack 'set-dolfin-pc-file-name - (lambda* (#:key inputs #:allow-other-keys) - ;; Instead of cluttering the user's 'PKG_CONFIG_PATH' environment - ;; variable, hard-code the 'dolfin.pc' absolute file name. - (let ((pc-file (search-input-file inputs - "/lib/pkgconfig/dolfin.pc"))) - (substitute* "python/dolfin/jit/jit.py" - (("pkgconfig\\.parse\\(\"dolfin\"\\)") - (string-append "pkgconfig.parse(\"" pc-file - "\")")))))) - (add-after 'patch-source-shebangs 'set-paths - (lambda _ - ;; Define paths to store locations. - (setenv "PYBIND11_DIR" #$(this-package-input "pybind11")) - ;; Move to python sub-directory. - (chdir "python"))) - (add-after 'build 'mpi-setup - #$%openmpi-setup) - (add-before 'check 'pre-check - (lambda _ - ;; Exclude three tests that generate - ;; 'NotImplementedError' in matplotlib version 3.1.2. - ;; See - ;; <https://github.com/matplotlib/matplotlib/issues/15382>. - ;; Also exclude tests that require meshes supplied by - ;; git-lfs. - (substitute* "demo/test.py" - (("(.*stem !.*)" line) - (string-append line - "\n" - "excludeList = [\n" - "'built-in-meshes', \n" - "'hyperelasticity', \n" - "'elasticity', \n" - "'multimesh-quadrature', \n" - "'multimesh-marking', \n" - "'mixed-poisson-sphere', \n" - "'mesh-quality', \n" - "'lift-drag', \n" - "'elastodynamics', \n" - "'dg-advection-diffusion', \n" - "'curl-curl', \n" - "'contact-vi-tao', \n" - "'contact-vi-snes', \n" - "'collision-detection', \n" - "'buckling-tao', \n" - "'auto-adaptive-navier-stokes', \n" - "'advection-diffusion', \n" - "'subdomains', \n" - "'stokes-taylor-hood', \n" - "'stokes-mini', \n" - "'navier-stokes', \n" - "'eigenvalue']\n" - "demos = [" - "d for d in demos if d[0].stem not in " - "excludeList]\n"))) - (setenv "HOME" - (getcwd)) - ;; Restrict OpenBLAS to MPI-only in preference to MPI+OpenMP. - (setenv "OPENBLAS_NUM_THREADS" "1"))) - (replace 'check - (lambda* (#:key tests? #:allow-other-keys) - (when tests? - (with-directory-excursion "test" - (invoke "pytest" - "unit" - ;; The test test_snes_set_from_options() in the file - ;; unit/nls/test_PETScSNES_solver.py fails and is ignored. - "--ignore" - "unit/nls/test_PETScSNES_solver.py" - ;; Fails with a segfault. - "--ignore" - "unit/io/test_XDMF.py"))))) - (add-after 'install 'install-demo-files - (lambda* (#:key outputs #:allow-other-keys) - (let* ((demos (string-append (assoc-ref outputs "out") - "/share/python-dolfin/demo"))) - (mkdir-p demos) - (with-directory-excursion "demo" - (for-each (lambda (file) - (let* ((dir (dirname file)) - (tgt-dir (string-append - demos "/" dir))) - (unless (equal? "." dir) - (mkdir-p tgt-dir) - (install-file file tgt-dir)))) - (find-files "." ".*\\.(py|gz|xdmf)$"))))))))) + (list + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'relax-requirements + (lambda _ + (substitute* "python/setup.py" + (("pybind11==") "pybind11>=")))) + (add-after 'unpack 'set-dolfin-pc-file-name + (lambda* (#:key inputs #:allow-other-keys) + ;; Instead of cluttering the user's PKG_CONFIG_PATH environment + ;; variable, hard-code the 'dolfin.pc' absolute file name. + (let ((pc-file (search-input-file inputs + "/lib/pkgconfig/dolfin.pc"))) + (substitute* "python/dolfin/jit/jit.py" + (("pkgconfig\\.parse\\(\"dolfin\"\\)") + (string-append "pkgconfig.parse(\"" pc-file "\")")))))) + (add-after 'patch-source-shebangs 'set-paths + (lambda _ + ;; Define paths to store locations. + (setenv "PYBIND11_DIR" #$(this-package-input "pybind11")) + ;; Move to python sub-directory. + (chdir "python"))) + (add-after 'build 'mpi-setup + #$%openmpi-setup) + (add-before 'check 'pre-check + (lambda _ + ;; Exclude three tests that generate 'NotImplementedError' in + ;; matplotlib v3.1.2. See + ;; <https://github.com/matplotlib/matplotlib/issues/15382>. + ;; Also exclude tests that require meshes supplied by git-lfs. + (substitute* "demo/test.py" + (("(.*stem !.*)" line) + (string-append line + "\n" + "excludeList = [\n" + "'built-in-meshes', \n" + "'hyperelasticity', \n" + "'elasticity', \n" + "'multimesh-quadrature', \n" + "'multimesh-marking', \n" + "'mixed-poisson-sphere', \n" + "'mesh-quality', \n" + "'lift-drag', \n" + "'elastodynamics', \n" + "'dg-advection-diffusion', \n" + "'curl-curl', \n" + "'contact-vi-tao', \n" + "'contact-vi-snes', \n" + "'collision-detection', \n" + "'buckling-tao', \n" + "'auto-adaptive-navier-stokes', \n" + "'advection-diffusion', \n" + "'subdomains', \n" + "'stokes-taylor-hood', \n" + "'stokes-mini', \n" + "'navier-stokes', \n" + "'eigenvalue']\n" + "demos = [" + "d for d in demos if d[0].stem not " + "in excludeList]\n"))) + ;; Do not test for expired numpy aliases. + (substitute* "test/unit/la/test_vector.py" + ((" numpy.float\\(42.0\\),") "") + (("^.*numpy.int\\(42.0\\).*$") "")) + (substitute* "test/unit/la/test_la_basic.py" + ((" int,") " ") + (("\\[int,") "[")) + (setenv "HOME" (getcwd)) + ;; Restrict OpenBLAS to MPI-only in preference to MPI+OpenMP. + (setenv "OPENBLAS_NUM_THREADS" "1"))) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (with-directory-excursion "test" + (invoke "pytest" + "unit" + ;; This test fails and is ignored. + "--deselect" + "unit/nls/test_PETScSNES_solver.py::test_snes_set_from_options" + ;; FIXME: Tests with binary encoded hdf5 files fail with a + ;; segfault. See fenics-project DOLFIN commit 6fbc9fb. + "--ignore" + "unit/io/test_XDMF.py"))))) + (add-after 'install 'install-demo-files + (lambda* (#:key outputs #:allow-other-keys) + (let* ((demos (string-append (assoc-ref outputs "out") + "/share/python-dolfin/demo"))) + (mkdir-p demos) + (with-directory-excursion "demo" + (for-each (lambda (file) + (let* ((dir (dirname file)) + (tgt-dir (string-append demos + "/" dir))) + (unless (equal? "." dir) + (mkdir-p tgt-dir) + (install-file file tgt-dir)))) + (find-files "." ".*\\.(py|gz|xdmf)$"))))))))) (home-page "https://fenicsproject.org/") (synopsis "High-level environment for solving differential equations") (description - "@code{fenics} is a computing platform for solving general classes of + "@code{fenics} is a computing platform for solving general classes of problems that involve differential equations. @code{fenics} facilitates access to efficient methods for dealing with ordinary differential equations (ODEs) and partial differential equations (PDEs). Systems of -- 2.39.5
Andreas Enge <andreas <at> enge.fr>
:Paul Garlick <pgarlick <at> tourbillion-technology.com>
:Message #10 received at 78954-done <at> debbugs.gnu.org (full text, mbox):
From: Andreas Enge <andreas <at> enge.fr> To: Paul Garlick <pgarlick <at> tourbillion-technology.com> Cc: 78954-done <at> debbugs.gnu.org Subject: Re: [PATCH] gnu: fenics: Fix build. Date: Sat, 5 Jul 2025 16:46:27 +0200
Thanks a lot for your detective work! I could build the package locally and have pushed to master. Andreas
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.