Add glicid-dealii and glicid-dealii-openmpi to guix/packages/maths.scm

This commit is contained in:
Guy Moebs 2024-10-29 16:39:13 +01:00
parent 0be729b009
commit ee51922384

View file

@ -10,8 +10,112 @@
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (guix build-system cmake) #:use-module (guix build-system cmake)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#:use-module (glicid utils)) #:use-module (glicid utils)
#:use-module (ice-9 regex)
#:use-module (ice-9 match)
#:use-module (guix gexp)
#:use-module ((guix build utils) #:select (alist-replace))
#:use-module (guix build-system ant)
#:use-module (guix build-system copy)
#:use-module (guix build-system dune)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system gnu)
#:use-module (guix build-system meson)
#:use-module (guix build-system ocaml)
#:use-module (guix build-system perl)
#:use-module (guix build-system pyproject)
#:use-module (guix build-system python)
#:use-module (guix build-system ruby)
#:use-module (gnu packages algebra)
#:use-module (gnu packages audio)
#:use-module (gnu packages autotools)
#:use-module (gnu packages backup)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages boost)
#:use-module (gnu packages calendar)
#:use-module (gnu packages check)
#:use-module (gnu packages cmake)
#:use-module (gnu packages coq)
#:use-module (gnu packages curl)
#:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages cpp)
#:use-module (gnu packages datamash)
#:use-module (gnu packages dbm)
#:use-module (gnu packages documentation)
#:use-module (gnu packages elf)
#:use-module (gnu packages emacs)
#:use-module (gnu packages file)
#:use-module (gnu packages flex)
#:use-module (gnu packages fltk)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gettext)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gd)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages glib)
#:use-module (gnu packages gperf)
#:use-module (gnu packages graphviz)
#:use-module (gnu packages groff)
#:use-module (gnu packages gtk)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
#:use-module (gnu packages image-processing)
#:use-module (gnu packages java)
#:use-module (gnu packages less)
#:use-module (gnu packages lisp)
#:use-module (gnu packages linux)
#:use-module (gnu packages llvm)
#:use-module (gnu packages logging)
#:use-module (gnu packages lua)
#:use-module (gnu packages gnome)
#:use-module (gnu packages guile)
#:use-module (gnu packages xorg)
#:use-module (gnu packages gl)
#:use-module (gnu packages imagemagick)
#:use-module (gnu packages m4)
#:use-module (gnu packages mpi)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages netpbm)
#:use-module (gnu packages ocaml)
#:use-module (gnu packages onc-rpc)
#:use-module (gnu packages parallel)
#:use-module (gnu packages pcre)
#:use-module (gnu packages popt)
#:use-module (gnu packages perl)
#:use-module (gnu packages prolog)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
#:use-module (gnu packages python-build)
#:use-module (gnu packages python-science)
#:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages qt)
#:use-module (gnu packages readline)
#:use-module (gnu packages ruby)
#:use-module (gnu packages tbb)
#:use-module (gnu packages scheme)
#:use-module (gnu packages serialization)
#:use-module (gnu packages shells)
#:use-module (gnu packages simulation)
#:use-module (gnu packages sphinx)
#:use-module (gnu packages sqlite)
#:use-module (gnu packages swig)
#:use-module (gnu packages tcl)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages tex)
#:use-module (gnu packages time)
#:use-module (gnu packages tls)
#:use-module (gnu packages version-control)
#:use-module (gnu packages wxwidgets)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xml)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26))
(define-public scalapack-upstream (define-public scalapack-upstream
(package (package
(inherit gnu:scalapack) (inherit gnu:scalapack)
@ -103,3 +207,89 @@
(license license:bsd-3)) (license license:bsd-3))
) )
(define-public glicid-dealii
(package
(inherit dealii)
(version "9.6.0")
(name "glicid-dealii")
(arguments
(list #:build-type "Release" ; Only Debug, Release or DebugRelease.
;; The tests take too long and must be explicitly enabled with
;; "make setup_tests".
;; See https://www.dealii.org/developer/developers/testsuite.html.
;; (They can also be run for an already installed deal.II.)
#:tests? #f
#:configure-flags
#~(let ((doc (string-append #$output:doc "/share/doc/"
#$name "-" #$version)))
(list "-DDEAL_II_COMPONENT_DOCUMENTATION=OFF"
(string-append "-DCMAKE_CXX_FLAGS='-march=znver3'")
(string-append "-DDEAL_II_DOCREADME_RELDIR=" doc)
(string-append "-DDEAL_II_DOCHTML_RELDIR=" doc "/html")
;; Don't compile the examples because the source and
;; CMakeLists.txt are installed anyway, allowing users to
;; do so for themselves.
"-DDEAL_II_COMPILE_EXAMPLES=OFF"
(string-append "-DDEAL_II_EXAMPLES_RELDIR=" doc
"/examples")))
#:phases
#~(modify-phases %standard-phases
;; Without unsetting CPATH, the build fails with the following
;; error (similar to <https://bugs.gnu.org/30756>):
;;
;; /gnu/store/…-gcc-11.3.0/include/c++/math.h:30:16: fatal error: math.h: No such file or directory
;; 30 | # include_next <math.h>
;; | ^~~~~~~~
;;
;; Why does unsetting CPATH magically fix the error?
;; TODO: Properly fix this issue.
(add-after 'set-paths 'unset-cpath
(lambda _
(unsetenv "CPATH")))
(add-after 'install 'remove-build-logs
;; These build logs leak the name of the build directory by
;; storing the values of CMAKE_SOURCE_DIR and
;; CMAKE_BINARY_DIR.
(lambda _
(let ((doc (string-append #$output:doc "/share/doc/"
#$name "-" #$version)))
(for-each delete-file
(map (lambda (f) (string-append doc "/" f))
'("detailed.log" "summary.log")))))))))
))
(define trilinos-for-dealii-openmpi
(@@ (gnu packages maths) trilinos-for-dealii-openmpi))
(define-public glicid-dealii-openmpi
(package
(inherit glicid-dealii)
(name "glicid-dealii-openmpi")
(inputs
(modify-inputs (package-inputs glicid-dealii)
(delete "arpack")
(prepend arpack-ng-openmpi
metis
scalapack)))
(propagated-inputs
(modify-inputs (package-propagated-inputs glicid-dealii)
(delete "hdf5" "kokkos" "sundials")
(prepend hdf5-parallel-openmpi
openmpi
p4est-openmpi
petsc-openmpi
slepc-openmpi
sundials-openmpi
trilinos-for-dealii-openmpi)))
(arguments
(substitute-keyword-arguments (package-arguments glicid-dealii)
((#:configure-flags flags)
#~(cons "-DDEAL_II_WITH_MPI=ON" #$flags))
((#:phases phases #~%standard-phases)
#~(modify-phases #$phases
;; The build failure fixed by this phase does not manifest when
;; Kokkos is included via Trilinos.
(delete 'unset-cpath)))))
(synopsis "Finite element library (with MPI support)")))