gnu: elpa: Update to 2025.06.001.

* gnu/packages/maths.scm (elpa): Update to 2025.06.001.
[source]: Switch to ‘git-fetch’.
[native-inputs]: Add Autotools and Python; remove labels.
[inputs]: Remove labels.
[arguments]: Use gexps.
[properties]: New field.
(elpa-openmpi): Use ‘package/inherit’.
[inputs]: Remove labels.
[arguments]: Use gexps.

Change-Id: Ie12fa7242e15779e8dd3965822f7699f6078e39a
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Merges: #5475
This commit is contained in:
Ludovic Courtès 2026-01-08 14:29:12 +01:00
parent 97c360a09c
commit c9f41f7202
No known key found for this signature in database
GPG key ID: 090B11993D9AEBB5

View file

@ -12,7 +12,7 @@
;;; Copyright © 2015 Fabian Harfert <fhmgufs@web.de> ;;; Copyright © 2015 Fabian Harfert <fhmgufs@web.de>
;;; Copyright © 2016 Roel Janssen <roel@gnu.org> ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
;;; Copyright © 2016, 2018, 2020, 2021 Kei Kebreau <kkebreau@posteo.net> ;;; Copyright © 2016, 2018, 2020, 2021 Kei Kebreau <kkebreau@posteo.net>
;;; Copyright © 2016-2025 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016-2026 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
;;; Copyright © 2017, 2018, 2019, 2020, 2021 Paul Garlick <pgarlick@tourbillion-technology.com> ;;; Copyright © 2017, 2018, 2019, 2020, 2021 Paul Garlick <pgarlick@tourbillion-technology.com>
@ -8705,92 +8705,103 @@ theories} (SMT) solver. It provides a C/C++ API, as well as Python bindings.")
(define-public elpa (define-public elpa
(package (package
(name "elpa") (name "elpa")
(version "2018.11.001") (version "2025.06.001")
(source (origin (source
(method url-fetch) (origin
(uri (string-append "https://elpa.mpcdf.mpg.de/software/" (method git-fetch)
"tarball-archive/Releases/" (uri (git-reference
version "/elpa-" version ".tar.gz")) (url "https://gitlab.mpcdf.mpg.de/elpa/elpa")
(sha256 (commit (string-append "new_release_" version))))
(base32 (file-name (git-file-name name version))
"05hv3v5i6xmziaizw350ff72y1c3k662r85fm3xfdrkclj5zw9yc")))) (sha256
(base32 "1j2mqa8g76z6xmwji99320v6q98p823glvxjsdcdpaji59wgvdql"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs
`(("fortran" ,gfortran)
("perl" ,perl))) ;for configure and deps
(inputs
`(("blas" ,openblas)))
(arguments (arguments
`(#:configure-flags (list #:configure-flags
`("--enable-openmp" #~`("--enable-openmp" "--with-mpi=no"
"--with-mpi=no" ;; ELPA unfortunately does not support runtime dispatch, so we
;; ELPA unfortunately does not support runtime dispatch, so we can ;; can only enable the "generic" kernels. See the "Cross
;; only enable the "generic" kernels. See the "Cross compilation" ;; compilation" section of INSTALL.md.
;; section of INSTALL.md. "--enable-generic-kernels"
"--enable-generic" "--disable-sse"
"--disable-sse" "--disable-sse-assembly" ;Require SSE3 "--disable-sse-assembly" ;Require SSE3
"--disable-avx" "--disable-avx2" "--disable-avx512" "--disable-avx"
,(string-append "CFLAGS=-O3 " "--disable-avx2"
"-funsafe-loop-optimizations -funsafe-math-optimizations " "--disable-avx512"
"-ftree-vect-loop-version -ftree-vectorize " #$(string-append "CFLAGS=-O3 -funsafe-loop-optimizations "
,(let ((system (or (%current-target-system) "-funsafe-math-optimizations "
(%current-system)))) "-ftree-vect-loop-version -ftree-vectorize "
(cond (let ((system (or (%current-target-system)
((or (string-prefix? "x86_64" system) (%current-system))))
(string-prefix? "i686" system)) (cond
"-msse2") ((or (string-prefix? "x86_64" system)
(else ""))))) (string-prefix? "i686" system))
#:parallel-tests? #f ;tests are multi-threaded, via BLAS "-msse2")
#:phases (else "")))))
(modify-phases %standard-phases #:parallel-tests? #f ;tests are multi-threaded, via BLAS
(add-before 'configure 'patch-header-generation #:phases
(lambda _ #~(modify-phases %standard-phases
(substitute* "configure" (add-before 'bootstrap 'patch-shebangs-early
(("^ *make.*top_srcdir=\"\\$srcdir\"" &) (lambda _
(string-append & " CPP=\"$CPP\""))) (patch-shebang "generate_automake_test_programs.py")))
#t)) (add-before 'configure 'patch-header-generation
(add-before 'check 'setup-tests (lambda _
(lambda _ (substitute* "configure"
;; Decrease test time and RAM use by computing fewer eigenvalues. (("^ *make.*top_srcdir=\"\\$srcdir\"" &)
;; The flags are (MATRIX-SIZE, EIGENVALUES, BLOCK-SIZE), where (string-append & " CPP=\"$CPP\""))) #t))
;; the default is (500, 250, 16) for C tests and (5000, 150, 16) (add-before 'check 'setup-tests
;; for Fortran. This also causes several tests to pass that (lambda _
;; otherwise would otherwise fail with matrix size 5000; possibly ;; Decrease test time and RAM use by computing fewer
;; due to floating point tolerances that are too tight. ;; eigenvalues. The flags are (MATRIX-SIZE, EIGENVALUES,
(setenv "TEST_FLAGS" "1500 50 16") ;from elpa.spec ;; BLOCK-SIZE), where the default is (500, 250, 16) for C
(setenv "OMP_NUM_THREADS" (number->string (parallel-job-count))) ;; tests and (5000, 150, 16) for Fortran. This also causes
(substitute* "Makefile" ;; several tests to pass that otherwise would otherwise
;; Test scripts are generated, patch the shebang ;; fail with matrix size 5000; possibly due to floating
(("#!/bin/bash") (string-append "#!" (which "sh")))) ;; point tolerances that are too tight.
#t))))) (setenv "TEST_FLAGS" "1500 50 16") ;from elpa.spec
(setenv "OMP_NUM_THREADS"
(number->string (parallel-job-count)))
(substitute* "Makefile"
;; Test scripts are generated, patch the shebang
(("#!/bin/bash")
(string-append "#!" (which "sh")))))))))
(native-inputs
(list autoconf-2.71
automake
libtool
gfortran
perl
python))
(inputs (list openblas))
(home-page "https://elpa.mpcdf.mpg.de") (home-page "https://elpa.mpcdf.mpg.de")
(synopsis "Eigenvalue solvers for symmetric matrices") (synopsis "Eigenvalue solvers for symmetric matrices")
(description (description
"The ELPA library provides efficient and scalable direct eigensolvers for "The ELPA library provides efficient and scalable direct eigensolvers for
symmetric matrices.") symmetric matrices.")
(license license:lgpl3))) (license license:lgpl3)
(properties '((tunable? . #t)))))
(define-public elpa-openmpi (define-public elpa-openmpi
(package (inherit elpa) (package/inherit elpa
(name "elpa-openmpi") (name "elpa-openmpi")
(inputs (inputs
`(("mpi" ,openmpi) (modify-inputs (package-inputs elpa)
("scalapack" ,scalapack) (prepend openmpi scalapack zlib)))
,@(package-inputs elpa)))
(arguments (arguments
(substitute-keyword-arguments (package-arguments elpa) (substitute-keyword-arguments (package-arguments elpa)
((#:configure-flags cf '()) ((#:configure-flags cf #~())
`(cons "--with-mpi=yes" (delete "--with-mpi=no" ,cf))) #~(cons "--with-mpi=yes"
((#:phases phases '%standard-phases) (delete "--with-mpi=no" #$cf)))
`(modify-phases ,phases ((#:phases phases #~%standard-phases)
(add-before 'check 'mpi-setup #~(modify-phases #$phases
(lambda _ (add-before 'check 'mpi-setup
;; Tests use 2 mpi tasks by default, use our remaining build (lambda _
;; cores as OpenMP threads. ;; Tests use 2 mpi tasks by default, use our remaining build
(setenv "OMP_NUM_THREADS" (number->string ;; cores as OpenMP threads.
(max (quotient (parallel-job-count) 2) (setenv "OMP_NUM_THREADS"
1))) (number->string (max (quotient (parallel-job-count) 2)
(,%openmpi-setup))))))) 1)))
(#$%openmpi-setup)))))))
(synopsis "Eigenvalue solvers for symmetric matrices (with MPI support)"))) (synopsis "Eigenvalue solvers for symmetric matrices (with MPI support)")))
(define-public elemental (define-public elemental