guix-glicid/glicid/packages/maths.scm

295 lines
11 KiB
Scheme

(define-module (glicid packages maths)
#:use-module (guix packages)
#:use-module (guix utils)
#:use-module ((gnu packages maths) #:prefix gnu:)
#:use-module (gnu packages commencement)
#:use-module (gnu packages mpi)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (gnu packages)
#:use-module (gnu packages compression)
#:use-module (guix build-system cmake)
#:use-module ((guix licenses) #:prefix license:)
#: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
(package
(inherit gnu:scalapack)
(name "scalapack-upstream")
(version "2.1.0-new-upstream")
(source (origin
(method git-fetch)
(uri (git-reference
(url
"https://oauth2:glpat-RsX2GjsD2WrzXubiJeou@gitlab.univ-nantes.fr/CCIPL/legacy_code_mirror/scalapack.git")
(commit "myv2.0.2")))
(file-name "scalapack-univ-myv2")
;; (patches (search-patches "scalapack-blacs-mpi-deprecations.patch"))
(sha256
(base32
"1ccic46psf2hl9wsyflvkn5rxg8k17q578m9mzimvm9brbggf0na"))))
(arguments
`(#:configure-flags `("-DBUILD_SHARED_LIBS:BOOL=YES")
#:phases (modify-phases %standard-phases
(add-before 'check 'mpi-setup
,%openmpi-setup))))))
(define local:scalapack
scalapack-upstream)
(define-public scalapack-latest
(latest-version local:scalapack gnu:scalapack))
(define-public openblas-upstream-0.3.15
(package
(inherit gnu:openblas)
(name "openblas-upstream")
(version "0.3.15")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/xianyi/OpenBLAS/releases/download/v"
version "/OpenBLAS-" version ".tar.gz"))
(sha256
(base32
"1gjbkrsh6n28hdp2ciyjigc8vg764d2r0jbzl63v753mjzn9va9h"))))))
(define-public hdf5-glicid
(package
(inherit gnu:hdf5-parallel-openmpi)
(name "hdf5-glicid")
(inputs (modify-inputs (package-inputs gnu:hdf5-parallel-openmpi)
(prepend gfortran-toolchain)))))
(define local:openblas
openblas-upstream-0.3.15)
(define-public scalapack-latest
(latest-version local:openblas gnu:openblas))
(use-modules (guix packages))
(use-modules (guix download))
(use-modules (gnu packages linux))
(use-modules (gnu packages gcc))
(use-modules (gnu packages compression))
;(use-modules (gnu packages glicid))
(use-modules (guix git-download))
(use-modules (guix build-system cmake))
(use-modules ((guix licenses)
#:prefix license:))
(define-public libsolv-upstream
(package
(name "libsolv")
(version "0.7.23")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/openSUSE/libsolv.git")
(commit version)))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32 "12z63kcna9swh3vzxk3sac0l4by5z8q22wip9cyq5b7wp9m3hn4b"))))
(build-system cmake-build-system)
(inputs (list zlib))
(home-page "https://github.com/openSUSE/libsolv")
(synopsis "libsolv, a free package dependency solver using a satisfiability algorithm.")
(description "libsolv, a free package dependency solver using a satisfiability algorithm.")
(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)")))