X-Git-Url: http://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/32750e8c3ed38df4cafb39cffa878c6851abc899..1bd1f42a31a970489583682434cda706b0269c26:/gnu/packages/maths.scm diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 58bde73a0a..1683f88ed1 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013, 2014, 2015, 2016, 2019, 2020 Andreas Enge ;;; Copyright © 2013 Nikita Karetnikov ;;; Copyright © 2014, 2016, 2017 John Darrington -;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Eric Bavier +;;; Copyright © 2014-2022 Eric Bavier ;;; Copyright © 2014 Federico Beffa ;;; Copyright © 2014 Mathieu Lirzin ;;; Copyright © 2015–2021 Ricardo Wurmus @@ -12,7 +12,7 @@ ;;; Copyright © 2015 Fabian Harfert ;;; Copyright © 2016 Roel Janssen ;;; Copyright © 2016, 2018, 2020, 2021 Kei Kebreau -;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès +;;; Copyright © 2016-2022 Ludovic Courtès ;;; Copyright © 2016 Leo Famulari ;;; Copyright © 2016, 2017 Thomas Danckaert ;;; Copyright © 2017, 2018, 2019, 2020, 2021 Paul Garlick @@ -30,11 +30,11 @@ ;;; Copyright © 2018 Eric Brown ;;; Copyright © 2018, 2021 Julien Lepiller ;;; Copyright © 2018 Amin Bandali -;;; Copyright © 2019, 2021 Nicolas Goaziou +;;; Copyright © 2019, 2021, 2022 Nicolas Goaziou ;;; Copyright © 2019 Steve Sprang ;;; Copyright © 2019 Robert Smith ;;; Copyright © 2020 Jakub Kądziołka -;;; Copyright © 2020, 2021 Felix Gruber +;;; Copyright © 2020–2022 Felix Gruber ;;; Copyright © 2020 R Veera Kumar ;;; Copyright © 2020 Vincent Legoll ;;; Copyright © 2020 Nicolò Balzarotti @@ -79,7 +79,9 @@ #:use-module (guix build-system cmake) #: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 python) #:use-module (guix build-system ruby) #:use-module (gnu packages algebra) @@ -95,6 +97,7 @@ #:use-module (gnu packages coq) #:use-module (gnu packages curl) #:use-module (gnu packages cyrus-sasl) + #:use-module (gnu packages datamash) #:use-module (gnu packages dbm) #:use-module (gnu packages documentation) #:use-module (gnu packages elf) @@ -168,9 +171,8 @@ (sha256 (base32 "1q1887ryqdr9sn0522hc7p16kqwlxxyz5dkmma8ar2nxplhgll7q")))) (build-system gnu-build-system) - (inputs `(("gtk+" ,gtk+) - ("libxml2" ,libxml2))) - (native-inputs `(("pkg-config" ,pkg-config))) + (inputs (list gtk+ libxml2)) + (native-inputs (list pkg-config)) (arguments `(#:configure-flags '("CFLAGS=-O2 -g -fcommon"))) (synopsis "Natural deduction first-order logic interface") @@ -196,11 +198,9 @@ beginners.") (base32 "1lniw4bsb5qs5ybf018qllf95pzixb1q3lvybzl4k3xz8zpkrm6k")))) (build-system gnu-build-system) (inputs - `(("ncurses" ,ncurses) - ("readline" ,readline))) + (list ncurses readline)) (native-inputs - `(("cunit" ,cunit) - ("pkg-config" ,pkg-config))) + (list cunit pkg-config)) (synopsis "Terminal based bit manipulator in ncurses") (description "Bitwise is a multi base interactive calculator supporting dynamic base conversion and bit manipulation. It's a handy tool for low level @@ -228,7 +228,7 @@ Some of the features include: "092412jzxy6wdvpk96pfj499hpmaww8xllavbvlqspfpr7ips9id")))) (build-system gnu-build-system) (inputs - `(("fortran" ,gfortran))) + (list gfortran)) (synopsis "Visualizing and demonstrating convolution") (description "GNU C-Graph is a tool for demonstrating the theory of convolution. @@ -273,7 +273,7 @@ interactive dialogs to guide them.") (arguments '(#:configure-flags '("--with-hdf4" "--with-hdf5" "--enable-python" "LIBS= -lz -lpcre -lexpat"))) - (synopsis "A common interface to various earth observation data formats") + (synopsis "Common interface to various earth observation data formats") (description "The Common Data Access toolbox (CODA) provides a set of interfaces for reading remote sensing data from earth observation data files. It consists of @@ -319,7 +319,7 @@ triangulations.") (define-public python-cvxopt (package (name "python-cvxopt") - (version "1.2.3") + (version "1.2.7") (source (origin (method git-fetch) (uri (git-reference @@ -328,7 +328,7 @@ triangulations.") (file-name (git-file-name name version)) (sha256 (base32 - "1kiy2m62xgs2d5id6dnnwy4vap85cd70p7pgkb9nh23qf9xnak7b")))) + "114z34wwx1bsv4q6xj9p5q99dffgnj9s4i4arx10g191xq9q8i5y")))) (build-system python-build-system) (arguments `(#:phases @@ -341,12 +341,12 @@ triangulations.") (setenv "CVXOPT_BUILD_GSL" "1") #t))))) (inputs - `(("fftw" ,fftw) - ("glpk" ,glpk) - ("gsl" ,gsl) - ("lapack" ,lapack) - ("openblas" ,openblas) - ("suitesparse" ,suitesparse))) + (list fftw + glpk + gsl + lapack + openblas + suitesparse)) (home-page "https://www.cvxopt.org") (synopsis "Python library for convex optimization") (description @@ -357,9 +357,6 @@ extensive standard library and on the strengths of Python as a high-level programming language.") (license license:gpl3+))) -(define-public python2-cvxopt - (package-with-python2 python-cvxopt)) - (define-public units (package (name "units") @@ -432,7 +429,7 @@ routines that have been extracted from the V8 JavaScript engine.") (base32 "194pzs1mlsj4ww6v37qq3961h5hckm5h805cv0r14xj3g9wfx2sk")))) (build-system gnu-build-system) - (inputs `(("tcl" ,tcl))) ;for 'tclsh' + (inputs (list tcl)) ;for 'tclsh' (synopsis "Local search for universal constants and scientific values") (description "GNU Dionysus is a convenient system for quickly retrieving the values of @@ -579,6 +576,10 @@ and C++. It includes a wide range of mathematical routines, with over 1000 functions in total. Subject areas covered by the library include: differential equations, linear algebra, Fast Fourier Transforms and random numbers.") + + ;; Linear algebra routines should benefit from SIMD optimizations. + (properties `((tunable? . #t))) + (license license:gpl3+))) ;; TODO: Merge back into the gsl package as a separate output. @@ -621,10 +622,7 @@ numbers.") (for-each make-file-writable (find-files ".")) #t))))) (inputs - `(("fftw" ,fftw) - ("gmp" ,gmp) - ("mpfr" ,mpfr) - ("openssl" ,openssl))) + (list fftw gmp mpfr openssl)) (home-page "https://sleef.org/") (synopsis "SIMD library for evaluating elementary functions and DFT") (description @@ -648,7 +646,7 @@ It can utilize SIMD instructions that are available on modern processors.") "05bgxidxj8d9xdp82niy7cy36w181cxq7p8vc3y2ixshpgp1642a")))) (build-system gnu-build-system) (inputs - `(("gmp" ,gmp))) + (list gmp)) (arguments `(#:configure-flags '("--with-gmp" "--disable-static"))) @@ -692,10 +690,9 @@ LP/MIP solver is included in the package.") (base32 "0rj92x6p9m3la5gasjbj7sa569im527ffmka5y2sv1amgd3fflrh")))) (build-system gnu-build-system) (native-inputs - `(("which" ,(@ (gnu packages base) which)))) ; for the tests + (list (@ (gnu packages base) which))) ; for the tests (inputs - `(("glpk" ,glpk) - ("gmp" ,gmp))) + (list glpk gmp)) (home-page "http://www.4ti2.de/") (synopsis "Mathematical tool suite for problems on linear spaces") (description @@ -719,7 +716,7 @@ integer programming problems and computes Markov bases for statistics.") "00zdgiqb91vx6gd2103h3ijij0llspsxc6zz3iw2bll39fvkl4xq")))) (build-system gnu-build-system) (inputs - `(("gmp" ,gmp))) + (list gmp)) (home-page "https://www.inf.ethz.ch/personal/fukudak/cdd_home/index.html") (synopsis "Library for convex hulls and extreme rays of polyhedra") (description @@ -745,7 +742,7 @@ computing convex hulls.") "05kq3hzam31dlmkccv3v358r478kpvx76mw37ka12c6ypwv5dsnk")))) (build-system gnu-build-system) (inputs - `(("gmp" ,gmp))) + (list gmp)) (arguments `(#:tests? #f ; no check phase #:make-flags `("CC=gcc" @@ -784,7 +781,7 @@ be solved.") (base32 "1ic2q7kvxpqmgxlishygvx8d00i4wn51vkq4fyac44ahhf6c3kwd")))) (build-system cmake-build-system) (native-inputs - `(("perl" ,perl))) + (list perl)) (home-page "https://jugit.fz-juelich.de/mlz/libcerf") (synopsis "Library for complex error functions") (description @@ -807,7 +804,7 @@ Dawson, Faddeeva, and Voigt functions.") "1aq0qc1y27iw9grhgnyji3290wwfznsrk3sg6ynqpxwjdda53h4m")))) (build-system gnu-build-system) (inputs - `(("lrslib" ,lrslib))) + (list lrslib)) (arguments `(#:tests? #f ; no check phase #:phases @@ -852,14 +849,9 @@ halfspaces) or by their double description with both representations.") "0l7as5z6xvbxly8alam9s4kws70952qq35a6vkljzayi4b9gbklx")))) (build-system gnu-build-system) (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("libtool" ,libtool) - ("pkg-config" ,pkg-config))) + (list autoconf automake libtool pkg-config)) (inputs - `(("eigen" ,eigen) - ("lapack" ,lapack) - ("fortran" ,gfortran))) + (list eigen lapack gfortran)) (synopsis "Fortran subroutines for solving eigenvalue problems") (description "ARPACK-NG is a collection of Fortran77 subroutines designed to solve @@ -1023,6 +1015,67 @@ singular value problems.") (license (license:non-copyleft "file://LICENSE" "See LICENSE in the distribution.")))) +(define-public feedgnuplot + (package + (name "feedgnuplot") + (version "1.60") + (home-page "https://github.com/dkogan/feedgnuplot") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0403hwlian2s431m36qdzcczhvfjvh7128m64hmmwbbrgh0n7md7")))) + (build-system perl-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'adjust-tests + (lambda _ + (substitute* "t/plots.t" + ;; XXX: The vnlog tests uses 'echo' with escaped strings, + ;; but does not enable escape interpretation. + (("echo -n ") + "echo -ne ")))) + (add-after 'install 'install-documentation + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (string-append out "/share/doc/feedgnuplot"))) + (mkdir-p doc) + (invoke "pod2html" "--title=feedgnuplot" "bin/feedgnuplot" + "--outfile" (string-append doc "/feedgnuplot.html"))))) + (add-after 'install 'wrap + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (gnuplot (search-input-file inputs "/bin/gnuplot")) + ;; XXX: We need List::MoreUtils as well as its supporting + ;; (propagated) modules; for now just refer to labels. + (modules '("perl-list-moreutils" "perl-exporter-tiny")) + (PERL5LIB (string-join + (map (lambda (input) + (string-append (assoc-ref inputs input) + "/lib/perl5/site_perl")) + modules) + ":"))) + (wrap-program (string-append out "/bin/feedgnuplot") + `("PERL5LIB" ":" suffix (,PERL5LIB)) + `("PATH" ":" suffix (,(dirname gnuplot)))))))))) + (inputs + (list gnuplot perl-list-moreutils vnlog)) + (native-inputs + ;; For tests. + (list perl-ipc-run perl-string-shellquote)) + (synopsis "Pipe-oriented plotting tool") + (description + "@command{feedgnuplot} is a tool to plot realtime and stored data +from the command line, using @command{gnuplot}. It can read data from +a pipe or file, make a variety of transformations, and render the result +in the terminal or with an external viewer.") + (license license:gpl1+))) ;any version + (define-public gnuplot (package (name "gnuplot") @@ -1035,11 +1088,7 @@ singular value problems.") (sha256 (base32 "1fp7rbhjmz2w63r72kicf8lfszzimz2csfx868fracw167hpaz75")))) (build-system gnu-build-system) - (inputs `(("readline" ,readline) - ("cairo" ,cairo) - ("pango" ,pango) - ("gd" ,gd) - ("lua" ,lua))) + (inputs (list readline cairo pango gd lua)) (native-inputs `(("pkg-config" ,pkg-config) ("texlive" ,texlive-tiny))) @@ -1074,7 +1123,7 @@ plotting engine by third-party applications like Octave.") (sha256 (base32 "11wqmd443b4nksdbzp1msdws3av948nmwq1xz80w6hka3ss2aigd")))) (native-inputs - `(("fortran" ,gfortran))) + (list gfortran)) (build-system gnu-build-system) (synopsis "General Cartographic Transformation Package (GCTP)") (description @@ -1103,9 +1152,7 @@ computations.") "hdf4-tirpc.patch")))) (build-system gnu-build-system) (native-inputs - `(("gfortran" ,gfortran) - ("bison" ,bison) - ("flex" ,flex))) + (list gfortran bison flex)) (inputs `(("zlib" ,zlib) ("libjpeg" ,libjpeg-turbo) @@ -1204,10 +1251,9 @@ incompatible with HDF5.") (patches (search-patches "hdf5-config-date.patch")))) (build-system gnu-build-system) (inputs - `(("zlib" ,zlib))) + (list zlib)) (native-inputs - `(("gfortran" ,gfortran) - ("perl" ,perl))) ;part of the test machinery needs Perl + (list gfortran perl)) ;part of the test machinery needs Perl (outputs '("out" ; core library "fortran")) ; fortran interface (arguments @@ -1504,7 +1550,7 @@ implemented in C.") "hdf-eos2-fortrantests.patch")))) (build-system gnu-build-system) (native-inputs - `(("gfortran" ,gfortran))) + (list gfortran)) (inputs `(("hdf4" ,hdf4-alt) ; assume most HDF-EOS2 users won't use the HDF4 netCDF API ;; XXX: These inputs are really dependencies of hdf4. @@ -1542,12 +1588,10 @@ System (Grid, Point and Swath).") "hdf-eos5-fix-szip.patch" "hdf-eos5-fortrantests.patch")))) (native-inputs - `(("gfortran" ,gfortran))) + (list gfortran)) (build-system gnu-build-system) (inputs - `(("hdf5" ,hdf5-1.8) - ("zlib" ,zlib) - ("gctp" ,gctp))) + (list hdf5-1.8 zlib gctp)) (arguments `(#:configure-flags '("--enable-install-include" "--enable-shared" "CC=h5cc -Df2cFortran" "LIBS=-lgctp") @@ -1624,8 +1668,7 @@ Swath).") (("ExternalProject_Add\\(project_blosc") "message(")) #t))))) (inputs - `(("c-blosc" ,c-blosc) - ("hdf5" ,hdf5-1.10))) + (list c-blosc hdf5-1.10)) (home-page "https://github.com/Blosc/hdf5-blosc") (synopsis "Filter for HDF5 using the Blosc compressor") (description "This is a filter for HDF5 that uses the Blosc compressor; by @@ -1646,7 +1689,7 @@ Blosc-compressed datasets.") (base32 "1gm76jbwhz9adbxgn14zx8cj33dmjdr2g5xcy0m9c2gakp8w59kj")))) (build-system gnu-build-system) - (inputs `(("hdf5" ,hdf5-1.8))) ;h5cc for tests + (inputs (list hdf5-1.8)) ;h5cc for tests (home-page "https://www.hdfgroup.org/products/hdf5_tools/h5check.html") (synopsis "HDF5 format checker") (description "@code{h5check} is a validation tool for verifying that an @@ -1667,8 +1710,7 @@ HDF5 file is encoded according to the HDF File Format Specification.") "14ddy2xnb6sgp4hiax9v5sv4pr4l4dd4ps76nfha3nrpr1ikhcqm")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ; Tests require googletest *sources* - (inputs `(("lapack" ,lapack) - ("fftw" ,fftw))) + (inputs (list lapack fftw)) ;; FIXME: Even though the fonts are available dvips complains: ;; "Font cmmi10 not found; characters will be left blank." (native-inputs @@ -1708,9 +1750,7 @@ similar to MATLAB, GNU Octave or SciPy.") (patches (search-patches "netcdf-date-time.patch")))) (build-system gnu-build-system) (native-inputs - `(("m4" ,m4) - ("doxygen" ,doxygen) - ("graphviz" ,graphviz))) + (list m4 doxygen graphviz)) (inputs `(("hdf4" ,hdf4-alt) ("hdf5" ,hdf5) @@ -1791,9 +1831,9 @@ sharing of scientific data.") "FFLAGS=-fallow-argument-mismatch") #:parallel-tests? #f)) (inputs - `(("netcdf" ,netcdf))) + (list netcdf)) (native-inputs - `(("gfortran" ,gfortran))) + (list gfortran)) (synopsis "Fortran interface for the netCDF library") (description (package-description netcdf)) (home-page (package-home-page netcdf)) @@ -1828,8 +1868,8 @@ sharing of scientific data.") (("libnlopt") (string-append out "/lib/libnlopt"))) #t)))))) - (inputs `(("guile" ,guile-2.0))) - (native-inputs `(("pkg-config" ,pkg-config))) + (inputs (list guile-2.0)) + (native-inputs (list pkg-config)) (home-page "http://ab-initio.mit.edu/wiki/") (synopsis "Library for nonlinear optimization") (description "NLopt is a library for nonlinear optimization, providing a @@ -1869,11 +1909,10 @@ online as well as original implementations of various other algorithms.") after "\n"))) #t)))))) (native-inputs - `(("gfortran" ,gfortran) - ("pkg-config" ,pkg-config))) + (list gfortran pkg-config)) (inputs ;; TODO: Maybe add dependency on COIN-MUMPS, ASL, and HSL. - `(("lapack" ,lapack))) ;for both libblas and liblapack + (list lapack)) ;for both libblas and liblapack (home-page "https://www.coin-or.org") (synopsis "Large-scale nonlinear optimizer") (description @@ -2047,10 +2086,9 @@ the result of costly computer simulations.") '(delete-file-recursively "ThirdParty")))) (build-system gnu-build-system) (native-inputs - `(("gfortran" ,gfortran) - ("pkg-config" ,pkg-config))) + (list gfortran pkg-config)) (inputs - `(("openblas" ,openblas))) + (list openblas)) (home-page "https://www.coin-or.org") (synopsis "Branch-and-cut solver") (description @@ -2078,10 +2116,9 @@ executable.") #t)))) (build-system gnu-build-system) (native-inputs - `(("gfortran" ,gfortran) - ("pkg-config" ,pkg-config))) + (list gfortran pkg-config)) (inputs - `(("openblas" ,openblas))) + (list openblas)) (home-page "https://www.coin-or.org") (synopsis "Linear programming solver") (description @@ -2153,9 +2190,7 @@ and quadratic objectives using the Simplex algorithm.") (add-after 'fix-rpath 'check (assoc-ref %standard-phases 'check))))) (native-inputs - `(("patchelf" ,patchelf) - ("perl" ,perl) - ("sed" ,sed))) + (list patchelf perl sed)) (home-page "https://www.gecode.org") (synopsis "Toolkit for developing constraint-based systems") (description "Gecode is a C++ toolkit for developing constraint-based @@ -2223,7 +2258,7 @@ systems and applications. It provides a modular and extensible solver.") (string-append static "/include")) #t)))))) (inputs - `(("gfortran" ,gfortran))) + (list gfortran)) (native-inputs `(("lapack" ,lapack) ("openblas" ,openblas) @@ -2323,7 +2358,7 @@ between aspif and smodels format or to a human-readable text format.") (rename-file "cmake/ClaspConfig.cmake.in" "cmake/clasp-config.cmake.in")))))) (inputs - `(("libpotassco" ,libpotassco))) + (list libpotassco)) (home-page "https://potassco.org/") (synopsis "Answer set solver") (description "clasp is an answer set solver for (extended) normal and @@ -2388,8 +2423,7 @@ satisfiability checking (SAT).") "propagator" "propgator-sequence-mining" "symbol" "visitor")))))))))) (inputs - `(("clasp" ,clasp) - ("libpotassco" ,libpotassco))) + (list clasp libpotassco)) (native-inputs `(("clasp-src" ,(package-source clasp)))) (home-page "https://potassco.org/") @@ -2400,7 +2434,7 @@ satisfiability checking (SAT).") (define-public ceres (package (name "ceres-solver") - (version "1.14.0") + (version "2.0.0") (home-page "http://ceres-solver.org/") (source (origin (method url-fetch) @@ -2408,7 +2442,7 @@ satisfiability checking (SAT).") version ".tar.gz")) (sha256 (base32 - "13lfxy8x58w8vprr0nkbzziaijlh0vvqshgahvcgw0mrqdgh0i27")))) + "00vng9vnmdb1qga01m0why90m0041w7bn6kxa2h4m26aflfqla8h")))) (build-system cmake-build-system) (arguments ;; TODO: Build HTML user documentation and install separately. @@ -2423,15 +2457,15 @@ satisfiability checking (SAT).") (("set\\(LIB_SUFFIX \"64\"\\)") "set(LIB_SUFFIX \"\")"))))))) (native-inputs - `(("pkg-config" ,pkg-config))) + (list pkg-config)) (propagated-inputs - `(("glog" ,glog))) ;for #include + (list glog)) ;for #include (inputs - `(("eigen" ,eigen) - ("blas" ,openblas) - ("lapack" ,lapack) - ("suitesparse" ,suitesparse) - ("gflags" ,gflags))) + (list eigen + openblas + lapack + suitesparse + gflags)) (synopsis "C++ library for solving large optimization problems") (description "Ceres Solver is a C++ library for modeling and solving large, @@ -2442,7 +2476,56 @@ can solve two kinds of problems: @item non-linear least squares problems with bounds constraints; @item general unconstrained optimization problems. @end enumerate\n") - (license license:bsd-3))) + (license license:bsd-3) + + ;; Mark as tunable to take advantage of SIMD code in Eigen. + (properties `((tunable? . #t))))) + +(define-public ceres-solver-benchmarks + (package + (inherit ceres) + (name "ceres-solver-benchmarks") + (arguments + '(#:modules ((ice-9 popen) + (ice-9 rdelim) + (guix build utils) + (guix build cmake-build-system)) + + #:phases (modify-phases %standard-phases + (delete 'configure) + (replace 'build + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (define flags + (string-tokenize + (read-line (open-pipe* OPEN_READ + "pkg-config" "eigen3" + "--cflags")))) + + (define (compile-file top-dir) + (lambda (file) + (let ((source (string-append file ".cc"))) + (format #t "building '~a'...~%" file) + (apply invoke "c++" "-fopenmp" "-O2" "-g" "-DNDEBUG" + source "-lceres" "-lbenchmark" "-lglog" + "-pthread" + "-o" (string-append bin "/" file) + "-I" top-dir flags)))) + + (mkdir-p bin) + (with-directory-excursion "internal/ceres" + (for-each (compile-file "..") + '("schur_eliminator_benchmark" + "small_blas_gemm_benchmark" + "small_blas_gemv_benchmark")) + (with-directory-excursion "autodiff_benchmarks" + ((compile-file "../..") "autodiff_benchmarks")))))) + (delete 'check) + (delete 'install)))) + (inputs (modify-inputs (package-inputs ceres) + (prepend googlebenchmark ceres))) + (synopsis "Benchmarks of the Ceres optimization problem solver"))) ;; For a fully featured Octave, users are strongly recommended also to install ;; the following packages: less, ghostscript, gnuplot. @@ -2492,19 +2575,19 @@ can solve two kinds of problems: ("texinfo" ,texinfo) ("zlib" ,zlib))) (native-inputs - `(("gfortran" ,gfortran) - ("pkg-config" ,pkg-config) - ("perl" ,perl) - ;; The following inputs are not actually used in the build process. - ;; However, the ./configure gratuitously tests for their existence and - ;; assumes that programs not present at build time are also not, and - ;; can never be, available at run time! If these inputs are therefore - ;; not present, support for them will be built out. However, Octave - ;; will still run without them, albeit without the features they - ;; provide. - ("less" ,less) - ("ghostscript" ,ghostscript) - ("gnuplot" ,gnuplot))) + (list gfortran + pkg-config + perl + ;; The following inputs are not actually used in the build process. + ;; However, the ./configure gratuitously tests for their existence and + ;; assumes that programs not present at build time are also not, and + ;; can never be, available at run time! If these inputs are therefore + ;; not present, support for them will be built out. However, Octave + ;; will still run without them, albeit without the features they + ;; provide. + less + ghostscript + gnuplot)) ;; Octave code uses this variable to detect directories holding multiple CA ;; certificates to verify peers with. This is required for the networking ;; functions that require encryption to work properly. @@ -2591,12 +2674,12 @@ script files.") (assoc-ref %outputs "out")) "-UCMAKE_INSTALL_RPATH"))) (inputs - `(("freetype" ,freetype) - ("glu" ,glu) - ("libxmu" ,libxmu) - ("mesa" ,mesa) - ("tcl" ,tcl) - ("tk" ,tk))) + (list freetype + glu + libxmu + mesa + tcl + tk)) (native-inputs `(("python" ,python-wrapper))) (home-page "https://github.com/tpaviot/oce") @@ -2625,7 +2708,7 @@ Open CASCADE library.") (define-public opencascade-occt (package (name "opencascade-occt") - (version "7.3.0p3") + (version "7.6.0") (source (origin (method git-fetch) @@ -2637,7 +2720,7 @@ Open CASCADE library.") version))))) (file-name (git-file-name name version)) (sha256 - (base32 "0bdywwxb6mk0ykbiajlvsb37295akqjp0a60y672qjfa67k0ljv4")) + (base32 "1rcwm9fkx0j4wrsyikb6g7qd611kpry7dand5dzdjvs5vzd13zvd")) (modules '((guix build utils))) (snippet '(begin @@ -2674,18 +2757,19 @@ Open CASCADE library.") "-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON" "-DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON" "-UCMAKE_INSTALL_LIBDIR"))) + (native-inputs (list fontconfig)) (inputs - `(("doxygen" ,doxygen) - ;("freeimage" ,freeimage) - ("freetype" ,freetype) - ("glu" ,glu) - ("libxext" ,libxext) - ("libxi" ,libxi) - ("libxmu" ,libxmu) - ("mesa" ,mesa) - ("tbb" ,tbb-2020) - ("tcl" ,tcl) - ("tk" ,tk))) + (list doxygen + ;("freeimage" ,freeimage) + freetype + glu + libxext + libxi + libxmu + mesa + tbb-2020 + tcl + tk)) ;; TODO: build Overview documentation and add 'doc' output. (home-page "https://www.opencascade.com") (synopsis "Libraries for 3D modeling and numerical simulation") @@ -2736,17 +2820,17 @@ This is the certified version of the Open Cascade Technology (OCCT) library.") #t)))) (build-system cmake-build-system) (propagated-inputs - `(("fltk" ,fltk) - ("gfortran" ,gfortran) - ("glu" ,glu) - ("gmp" ,gmp) - ("hdf5" ,hdf5) - ("lapack" ,lapack) - ("libx11" ,libx11) - ("libxext" ,libxext) - ("mesa" ,mesa) - ("metis" ,metis) - ("opencascade-occt" ,opencascade-occt))) + (list fltk + gfortran + glu + gmp + hdf5 + lapack + libx11 + libxext + mesa + metis + opencascade-occt)) (inputs `(("fontconfig" ,fontconfig) ("libxft" ,libxft) @@ -2834,19 +2918,18 @@ ASCII text files using Gmsh's own scripting language.") ,(list (string-append (assoc-ref inputs "qtsvg") "/lib/qt5/plugins/")))))))))) (native-inputs - `(("pkg-config" ,pkg-config) - ;;("python-astropy" ,python-astropy) ;; FIXME: Package this. - ("qttools" ,qttools) - ("python-sip" ,python-sip-4))) + (list pkg-config + ;;("python-astropy" ,python-astropy) ;; FIXME: Package this. + qttools python-sip-4)) (inputs - `(("ghostscript" ,ghostscript) ;optional, for EPS/PS output - ("python-dbus" ,python-dbus) - ("python-h5py" ,python-h5py) ;optional, for HDF5 data - ("python-pyqt" ,python-pyqt) - ("qtbase" ,qtbase-5) - ("qtsvg" ,qtsvg))) + (list ghostscript ;optional, for EPS/PS output + python-dbus + python-h5py ;optional, for HDF5 data + python-pyqt + qtbase-5 + qtsvg)) (propagated-inputs - `(("python-numpy" ,python-numpy))) + (list python-numpy)) (home-page "https://veusz.github.io/") (synopsis "Scientific plotting package") (description @@ -2898,15 +2981,12 @@ September 2004}") "examples")) ; ~30MiB of examples (build-system gnu-build-system) (native-inputs - `(("python" ,python) - ("which" ,which))) + (list python which)) (inputs - `(("gfortran" ,gfortran) - ("openblas" ,openblas) - ("superlu" ,superlu) - ;; leaving out hdf5 and fftw, as petsc expects them to be built with mpi - ;; leaving out opengl, as configuration seems to only be for mac - )) + (list gfortran openblas superlu + ;; leaving out hdf5 and fftw, as petsc expects them to be built with mpi + ;; leaving out opengl, as configuration seems to only be for mac + )) (arguments (list #:test-target "test" @@ -3040,8 +3120,8 @@ scientific applications modeled by partial differential equations.") (inherit petsc-complex) (name "petsc-complex-openmpi") (inputs - `(("openmpi" ,openmpi) - ,@(package-inputs petsc-complex))) + (modify-inputs (package-inputs petsc-complex) + (prepend openmpi))) (arguments (substitute-keyword-arguments (package-arguments petsc-complex) ((#:configure-flags cf) @@ -3089,7 +3169,7 @@ scientific applications modeled by partial differential equations.") (add-before 'check 'mpi-setup ,%openmpi-setup)))) (native-inputs - `(("python-cython" ,python-cython))) + (list python-cython)) (inputs `(("petsc" ,petsc-openmpi) ("python-numpy" ,python-numpy))) @@ -3148,7 +3228,7 @@ savings are consistently > 5x.") `(("arpack" ,arpack-ng) ("gfortran" ,gfortran))) (propagated-inputs - `(("petsc" ,petsc))) + (list petsc)) (arguments `(#:parallel-build? #f ;build is parallel by default #:configure-flags @@ -3293,8 +3373,7 @@ bindings to almost all functions of SLEPc.") (base32 "1s9hyknfvhj86g3giayyf3dxzg23iij0rs7bdvj075v9qbyhqn9b")))) (build-system gnu-build-system) (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake))) + (list autoconf automake)) (home-page "http://us.metamath.org/") (synopsis "Proof verifier based on a minimalistic formalism") (description @@ -3425,12 +3504,9 @@ book.") (string-append gecode "/bin/fzn-gecode")) (newline port))))))))) (native-inputs - `(("bison" ,bison) - ("flex" ,flex))) + (list bison flex)) (inputs - `(("cbc" ,cbc) - ("gecode" ,gecode) - ("zlib" ,zlib))) + (list cbc gecode zlib)) (home-page "https://www.minizinc.org") (synopsis "High-level constraint modeling language") (description "MiniZinc is a high-level modeling language for constraint @@ -3456,12 +3532,12 @@ language understood by many solvers.") "mumps-shared-pord.patch")))) (build-system gnu-build-system) (inputs - `(("fortran" ,gfortran) - ;; These are required for linking against mumps, but we let the user - ;; declare the dependency. - ("blas" ,openblas) - ("metis" ,metis) - ("scotch" ,scotch))) + (list gfortran + ;; These are required for linking against mumps, but we let the user + ;; declare the dependency. + openblas + metis + scotch)) (arguments `(#:modules ((ice-9 match) (ice-9 popen) @@ -3518,8 +3594,9 @@ ORDERINGSC = $(ORDERINGSF) LORDERINGS = $(LPORD) $(LMETIS) $(LSCOTCH) $(LIBSEQ) IORDERINGSF = $(ISCOTCH) IORDERINGSC = $(IPORD) $(IMETIS) $(ISCOTCH)" - (assoc-ref inputs "mpi") - (assoc-ref inputs "blas") + (->bool (which "mpicc")) ;MPI support enabled? + (dirname + (dirname (search-input-file inputs "/include/cblas.h"))) (assoc-ref inputs "scalapack") (assoc-ref inputs "metis") (match (list (assoc-ref inputs "pt-scotch") @@ -3530,7 +3607,7 @@ IORDERINGSC = $(IPORD) $(IMETIS) $(ISCOTCH)" `((,scotch "" "-Dscotch"))) ((ptscotch _) `((,ptscotch - "-lptesmumps -lptscotch -lptscotcherr " + "-lesmumps -lptscotch -lptscotcherr " "-Dptscotch"))))))))) (replace 'build ;; By default only the d-precision library is built. Make with "all" @@ -3580,19 +3657,20 @@ sparse system of linear equations A x = b using Gaussian elimination.") (license license:cecill-c))) (define-public mumps-metis - (package (inherit mumps) + (package + (inherit mumps) (name "mumps-metis") - (inputs - (alist-delete "scotch" (package-inputs mumps))))) + (inputs (modify-inputs (package-inputs mumps) + (delete "scotch"))))) (define-public mumps-openmpi - (package (inherit mumps) + (package + (inherit mumps) (name "mumps-openmpi") (inputs - `(("mpi" ,openmpi) - ("scalapack" ,scalapack) - ("pt-scotch" ,pt-scotch) - ,@(alist-delete "scotch" (package-inputs mumps)))) + (modify-inputs (package-inputs mumps) + (delete "scotch") + (prepend openmpi scalapack pt-scotch))) (arguments (substitute-keyword-arguments (package-arguments mumps) ((#:phases phases) @@ -3606,10 +3684,11 @@ sparse system of linear equations A x = b using Gaussian elimination.") (synopsis "Multifrontal sparse direct solver (with MPI)"))) (define-public mumps-metis-openmpi - (package (inherit mumps-openmpi) + (package + (inherit mumps-openmpi) (name "mumps-metis-openmpi") - (inputs - (alist-delete "pt-scotch" (package-inputs mumps-openmpi))))) + (inputs (modify-inputs (package-inputs mumps-openmpi) + (delete "pt-scotch"))))) (define-public ruby-asciimath (package @@ -3624,8 +3703,7 @@ sparse system of linear equations A x = b using Gaussian elimination.") "1aapydwwkydbwgz07n7ma3a5jy9n3v0shy6q6j8mi4wr3crhx45a")))) (build-system ruby-build-system) (native-inputs - `(("ruby-nokogiri" ,ruby-nokogiri) - ("ruby-rspec" ,ruby-rspec))) + (list ruby-nokogiri ruby-rspec)) (synopsis "AsciiMath parsing and conversion library") (description "A pure Ruby AsciiMath parsing and conversion library. AsciiMath is an @@ -3636,14 +3714,14 @@ easy-to-write markup language for mathematics.") (define-public superlu (package (name "superlu") - (version "5.2.2") + (version "5.3.0") (source (origin (method url-fetch) (uri (string-append "https://portal.nersc.gov/project/sparse/superlu/" - "superlu_" version ".tar.gz")) + "superlu-" version ".tar.gz")) (sha256 - (base32 "13520vk6fqspyl22cq4ak2jh3rlmhja4czq56j75fdx65fkk80s7")) + (base32 "0xvib7nk2rlbsiv1iwkwl9kxppkalkciv628bsyiiv0pv754n48q")) (modules '((guix build utils))) (snippet ;; Replace the non-free implementation of MC64 with a stub adapted @@ -3678,7 +3756,7 @@ void mc64ad_ (int *a, int *b, int *c, int *d, int *e, double *f, int *g, #t))))))) (build-system cmake-build-system) (native-inputs - `(("tcsh" ,tcsh))) + (list tcsh)) (inputs `(("blas" ,openblas) ("gfortran" ,gfortran))) @@ -3741,7 +3819,7 @@ void mc64ad_dist (int *a, int *b, int *c, int *d, int *e, double *f, int *g, "superlu-dist-awpm-grid.patch")))) (build-system cmake-build-system) (native-inputs - `(("tcsh" ,tcsh))) + (list tcsh)) (inputs `(("gfortran" ,gfortran) ("blas" ,openblas) @@ -3794,93 +3872,43 @@ implemented in ANSI C, and MPI for communications.") (define-public scotch (package (name "scotch") - (version "6.1.1") + (version "7.0.1") (source (origin - (method url-fetch) - (uri (string-append "https://gforge.inria.fr/frs/download.php/" - "latestfile/298/scotch_" version ".tar.gz")) - (sha256 - (base32 "04dkz24a2g20wq703fnyi4440ac4mwycy9gwrrllljj7zxcjy19r")) - (patches (search-patches "scotch-build-parallelism.patch" - "scotch-integer-declarations.patch")))) - (build-system gnu-build-system) + (method git-fetch) + (uri (git-reference + (url "https://gitlab.inria.fr/scotch/scotch") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1fvgxd3ipl5xswswyadvxvlcgv6an8c229ispnlksgnlwphg10ig")))) + (build-system cmake-build-system) (inputs - `(("zlib" ,zlib))) + (list zlib)) (native-inputs - `(("flex" ,flex) - ("bison" ,bison) - ("gfortran" ,gfortran))) + (list flex bison gfortran)) (outputs '("out" "metis")) (arguments - `(#:make-flags (list (string-append "prefix=" %output)) + `(#:configure-flags '("-DBUILD_SHARED_LIBS=YES" + "-DBUILD_PTSCOTCH=OFF") #:phases (modify-phases %standard-phases - (add-after - 'unpack 'chdir-to-src - (lambda _ (chdir "src") #t)) - (replace - 'configure - (lambda _ - (call-with-output-file "Makefile.inc" - (lambda (port) - (format port " -EXE = -LIB = .a -OBJ = .o -MAKE = make -AR = ar -ARFLAGS = -ruv -CAT = cat -CCS = gcc -CCP = mpicc -CCD = gcc -FC = gfortran -CPPFLAGS =~{ -D~a~} -CFLAGS = -O2 -g -fPIC $(CPPFLAGS) -LDFLAGS = -lz -lm -lrt -lpthread -CP = cp -LEX = flex -Pscotchyy -olex.yy.c -LN = ln -MKDIR = mkdir -MV = mv -RANLIB = ranlib -YACC = bison -pscotchyy -y -b y -" - '("COMMON_FILE_COMPRESS_GZ" - "COMMON_PTHREAD" - "COMMON_RANDOM_FIXED_SEED" - "INTSIZE64" ;use 'int64_t' - ;; Prevents symbol clashes with libesmumps - "SCOTCH_RENAME" - ;; XXX: Causes invalid frees in superlu-dist tests - ;; "SCOTCH_PTHREAD" - ;; "SCOTCH_PTHREAD_NUMBER=2" - "restrict=__restrict")))) - #t)) - (add-after 'build 'build-esmumps - (lambda _ - (invoke "make" - (format #f "-j~a" (parallel-job-count)) - "esmumps"))) - (add-before 'install 'make-install-dirs - (lambda* (#:key outputs #:allow-other-keys) - (mkdir (assoc-ref outputs "out")))) (add-after 'install 'install-metis (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "metis"))) - (mkdir out) - ;; metis files are not installed with 'make install' - (for-each (lambda (f) - (install-file f (string-append out "/include"))) - (find-files "../include/" ".*metis\\.h")) - (for-each (lambda (f) - (install-file f (string-append out "/lib"))) - (find-files "../lib/" ".*metis\\..*")) - #t)))))) + (let* ((out (assoc-ref outputs "out")) + (metis (assoc-ref outputs "metis")) + (prefix (string-length out))) + (for-each (lambda (file) + (let ((target (string-append + metis + (string-drop file prefix)))) + (mkdir-p (dirname target)) + (rename-file file target))) + (find-files out "metis")))))))) (home-page "https://www.labri.fr/perso/pelegrin/scotch/") (properties - `((release-monitoring-url . "https://gforge.inria.fr/frs/?group_id=248"))) + `((release-monitoring-url + . "https://gitlab.inria.fr/scotch/scotch/-/releases"))) (synopsis "Programs and libraries for graph algorithms") (description "SCOTCH is a set of programs and libraries which implement the static mapping and sparse matrix reordering algorithms developed within @@ -3895,178 +3923,57 @@ bio-chemistry.") (define-public scotch32 ;; This is the 'INTSIZE32' variant, which uses 32-bit integers, as needed by ;; some applications. - (package (inherit scotch) + (package + (inherit scotch) (name "scotch32") (arguments (substitute-keyword-arguments (package-arguments scotch) - ((#:phases scotch-phases) - `(modify-phases ,scotch-phases - (replace - 'configure - (lambda _ - (call-with-output-file "Makefile.inc" - (lambda (port) - (format port " -EXE = -LIB = .a -OBJ = .o -MAKE = make -AR = ar -ARFLAGS = -ruv -CAT = cat -CCS = gcc -CCP = mpicc -CCD = gcc -FC = gfortran -CPPFLAGS =~{ -D~a~} -CFLAGS = -O2 -g -fPIC $(CPPFLAGS) -LDFLAGS = -lz -lm -lrt -lpthread -CP = cp -LEX = flex -Pscotchyy -olex.yy.c -LN = ln -MKDIR = mkdir -MV = mv -RANLIB = ranlib -YACC = bison -pscotchyy -y -b y -" - '("COMMON_FILE_COMPRESS_GZ" - "COMMON_PTHREAD" - "COMMON_RANDOM_FIXED_SEED" - "INTSIZE32" ;use 32-bit integers. See INSTALL.txt - ;; Prevents symbolc clashes with libesmumps - "SCOTCH_RENAME" - ;; XXX: Causes invalid frees in superlu-dist tests - ;; "SCOTCH_PTHREAD" - ;; "SCOTCH_PTHREAD_NUMBER=2" - "restrict=__restrict")))))))))) + ((#:configure-flags flags ''()) + ''("-DBUILD_SHARED_LIBS=YES" "-DBUILD_PTSCOTCH=OFF" + "-DCMAKE_C_FLAGS=-DINTSIZE32=1")))) (synopsis "Programs and libraries for graph algorithms (32-bit integers)"))) -(define-public scotch-shared - (package (inherit scotch) - (name "scotch-shared") - (native-inputs - `(("gcc" ,gcc) - ("flex" ,flex) - ("bison" ,bison))) - (arguments - (substitute-keyword-arguments (package-arguments scotch) - ((#:phases scotch-shared-phases) - `(modify-phases ,scotch-shared-phases - (replace - 'configure - (lambda _ - ;; Otherwise, the RUNPATH will lack the final path component. - (setenv "RPATHFLAGS" (string-append "-Wl,-rpath=" - (assoc-ref %outputs "out") "/lib")) - (call-with-output-file "Makefile.inc" - (lambda (port) - (format port " -EXE = -LIB = .so -OBJ = .o -MAKE = make -AR = gcc -ARFLAGS = -shared -o -CAT = cat -CCS = gcc -CCP = mpicc -CCD = gcc -FC = gfortran -CPPFLAGS =~{ -D~a~} -CFLAGS = -O2 -g -fPIC $(CPPFLAGS) $(RPATHFLAGS) -CLIBFLAGS = -shared -fPIC -LDFLAGS = -lz -lm -lrt -lpthread -Xlinker --no-as-needed -CP = cp -LEX = flex -Pscotchyy -olex.yy.c -LN = ln -MKDIR = mkdir -MV = mv -RANLIB = echo -YACC = bison -pscotchyy -y -b y -" - '("COMMON_FILE_COMPRESS_GZ" - "COMMON_PTHREAD" - "COMMON_RANDOM_FIXED_SEED" - "INTSIZE64" ;use 'int64_t' - ;; Prevents symbolc clashes with libesmumps - "SCOTCH_RENAME" - ;; XXX: Causes invalid frees in superlu-dist tests - ;; "SCOTCH_PTHREAD" - ;; "SCOTCH_PTHREAD_NUMBER=2" - "restrict=__restrict" - ))))#t)) - (delete 'check))))) - (synopsis - "Programs and libraries for graph algorithms (shared libraries version)"))) - (define-public pt-scotch - (package (inherit scotch) + (package + (inherit scotch) (name "pt-scotch") (propagated-inputs - `(("openmpi" ,openmpi))) ;Headers include MPI headers + (list openmpi)) ;headers include MPI headers (arguments (substitute-keyword-arguments (package-arguments scotch) - ((#:phases scotch-phases) - `(modify-phases ,scotch-phases - (replace - 'build - (lambda _ - (invoke "make" (format #f "-j~a" (parallel-job-count)) - "ptscotch" "ptesmumps") - - ;; Install the serial metis compatibility library - (invoke "make" "-C" "libscotchmetis" "install"))) + ((#:configure-flags flags ''()) + ''("-DBUILD_SHARED_LIBS=YES" "-DBUILD_PTSCOTCH=ON")) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases (add-before 'check 'mpi-setup - ,%openmpi-setup) - (replace 'check - (lambda _ - (invoke "make" "ptcheck"))))))) + ,%openmpi-setup))))) (synopsis "Programs and libraries for graph algorithms (with MPI)"))) (define-public pt-scotch32 - (package (inherit scotch32) + (package + (inherit pt-scotch) (name "pt-scotch32") (propagated-inputs - `(("openmpi" ,openmpi))) ;headers include MPI headers + (list openmpi)) ;headers include MPI headers (arguments - (substitute-keyword-arguments (package-arguments scotch32) - ((#:phases scotch32-phases) - `(modify-phases ,scotch32-phases - (replace 'build - (lambda _ - (invoke "make" (format #f "-j~a" (parallel-job-count)) - "ptscotch" "ptesmumps") - ;; Install the serial metis compatibility library - (invoke "make" "-C" "libscotchmetis" "install"))) - (add-before 'check 'mpi-setup - ,%openmpi-setup) - (replace 'check - (lambda _ - (invoke "make" "ptcheck"))))))) + (substitute-keyword-arguments (package-arguments pt-scotch) + ((#:configure-flags flags ''()) + ''("-DBUILD_SHARED_LIBS=YES" "-DBUILD_PTSCOTCH=ON" + "-DCMAKE_C_FLAGS=-DINTSIZE32=1")))) (synopsis "Programs and libraries for graph algorithms (with MPI and 32-bit integers)"))) -(define-public pt-scotch-shared - (package (inherit scotch-shared) - (name "pt-scotch-shared") - (propagated-inputs - `(("openmpi" ,openmpi))) ;Headers include MPI headers - (arguments - (substitute-keyword-arguments (package-arguments scotch-shared) - ((#:phases scotch-shared-phases) - `(modify-phases ,scotch-shared-phases - (replace - 'build - (lambda _ - (invoke "make" (format #f "-j~a" (parallel-job-count)) - "ptscotch" "ptesmumps") +(define-public scotch-shared + ;; There used to be separate shared library variants while the default would + ;; provide .a files including PIC objects. With the switch to CMake, .a + ;; files contain non-PIC objects, which breaks some users, and switching to + ;; shared libraries by default seems to make more sense, as discussed here: + ;; . + (deprecated-package "scotch-shared" scotch)) - ;; Install the serial metis compatibility library - (invoke "make" "-C" "libscotchmetis" "install"))) - (add-before 'check 'mpi-setup - ,%openmpi-setup))))) - (synopsis "Graph algorithms (shared libraries version, with MPI)"))) +(define-public pt-scotch-shared + (deprecated-package "pt-scotch-shared" pt-scotch)) (define-public metis @@ -4170,10 +4077,9 @@ processor cores.") `(#:configure-flags (list "--disable-static"))) (inputs - `(("glib" ,glib) - ("gtk+" ,gtk+))) + (list glib gtk+)) (native-inputs - `(("pkg-config" ,pkg-config))) + (list pkg-config)) (home-page "https://www.gnu.org/software/gsegrafix/") (synopsis "GNOME application to create scientific and engineering plots") (description @@ -4206,9 +4112,7 @@ to BMP, JPEG or PNG image formats.") ("sed" ,sed) ("tk" ,tk))) ;Tcl/Tk is used by 'xmaxima' (native-inputs - `(("texinfo" ,texinfo) - ("perl" ,perl) - ("python" ,python))) + (list texinfo perl python)) (arguments `(#:configure-flags ,#~(list "--enable-sbcl" @@ -4312,12 +4216,12 @@ point numbers.") (native-inputs `(("gettext" ,gettext-minimal))) (inputs - `(("wxwidgets" ,wxwidgets) - ("maxima" ,maxima) - ;; Runtime support. - ("adwaita-icon-theme" ,adwaita-icon-theme) - ("gtk+" ,gtk+) - ("shared-mime-info" ,shared-mime-info))) + (list wxwidgets + maxima + ;; Runtime support. + adwaita-icon-theme + gtk+ + shared-mime-info)) (arguments `(#:tests? #f ; tests fail non-deterministically #:phases @@ -4487,6 +4391,8 @@ parts of it.") ;; Failed to detect CPU. ((string-prefix? "armhf" system) '("TARGET=ARMV7")) + ((string-prefix? "riscv64" system) + '("TARGET=RISCV64_GENERIC")) (else '())))) ;; no configure script #:phases @@ -4535,8 +4441,7 @@ parts of it.") "05ifil6jj9424sr8kmircl8k4bmxnl3y12a79vwj1kxxva5gz50g")) (file-name (git-file-name "blis" version)))) (native-inputs - `(("python" ,python) - ("perl" ,perl))) + (list python perl)) (build-system gnu-build-system) (arguments `(#:modules @@ -4756,11 +4661,7 @@ Fresnel integrals, and similar related functions as well.") (modify-phases %standard-phases (delete 'configure)))) ;no configure script (inputs - `(("tbb" ,tbb) - ("openblas" ,openblas) - ("gmp" ,gmp) - ("mpfr" ,mpfr) - ("metis" ,metis))) + (list tbb openblas gmp mpfr metis)) (native-inputs `(("cmake" ,cmake-minimal) ("m4" ,m4))) @@ -4911,7 +4812,7 @@ Failure to do so will result in a library with poor performance.") (define-public cglm (package (name "cglm") - (version "0.8.2") + (version "0.8.4") (source (origin (method git-fetch) @@ -4920,11 +4821,10 @@ Failure to do so will result in a library with poor performance.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1lcfl9ph4bnl3hckpx4hzwh8r4llnw94ik75igc5qy38wk468gmk")))) - (build-system cmake-build-system) + (base32 "0zgckh56vcdar3a4n51r84wrizyd2ssqal4nsvxd4qdjm0rvb4h0")))) + (build-system meson-build-system) (arguments - `(#:configure-flags - (list "-DCGLM_USE_TEST=ON"))) + `(#:configure-flags '("-Dbuild_tests=true"))) (home-page "https://github.com/recp/cglm") (synopsis "Mathematics C library for graphics programming") (description @@ -4977,7 +4877,7 @@ Version: ~a Cflags: -I${includedir}~%" out ,(version-prefix version 3))))) #t)))))) (native-inputs - `(("unzip" ,unzip))) + (list unzip)) (home-page "https://glm.g-truc.net/") (synopsis "OpenGL Mathematics library") (description "OpenGL Mathematics (GLM) is a header-only C++ mathematics @@ -5207,14 +5107,16 @@ A unique design feature of Trilinos is its focus on packages.") (define-public dealii (package (name "dealii") - (version "9.3.1") + (version "9.3.2") (source (origin (method url-fetch) (uri (string-append "https://github.com/dealii/dealii/releases/" "download/v" version "/dealii-" version ".tar.gz")) (sha256 - (base32 "1f0sqvlxvl0myqcn0q6xrn1vnp5pgx143lai4a4jkh1dmdv4cbx6")) + (base32 "1s0kawnljg24jj6nibwrif5gxdgg2daqfylhqqpl1lvmzmmxfhak")) + (patches (search-patches "dealii-fix-compiliation-with-boost-1.78.patch" + "dealii-fix-sundials.patch")) (modules '((guix build utils))) (snippet '(begin @@ -5225,16 +5127,14 @@ A unique design feature of Trilinos is its focus on packages.") (outputs '("out" "doc")) (native-inputs ;; Required to build the documentation. - `(("dot" ,graphviz) - ("doxygen" ,doxygen) - ("perl" ,perl))) + (list graphviz doxygen perl)) (inputs - `(("arpack" ,arpack-ng) - ("blas" ,openblas) - ("gfortran" ,gfortran) - ("lapack" ,lapack) - ("muparser" ,muparser) - ("zlib" ,zlib))) + (list arpack-ng + openblas + gfortran + lapack + muparser + zlib)) (propagated-inputs ;; Some scripts are installed into share/deal.II/scripts that require ;; perl and python, but they are not executable (and some are missing the @@ -5243,10 +5143,8 @@ A unique design feature of Trilinos is its focus on packages.") ;; Anyway, they are meant to be used at build time, so rather than adding ;; the interpreters here, any package depending on them should just add ;; the requisite interpreter to its native inputs. - `(("boost" ,boost) - ("hdf5" ,hdf5) - ("suitesparse" ,suitesparse) ; For UMFPACK. - ("tbb" ,tbb))) + (list boost hdf5 suitesparse ; For UMFPACK. + tbb)) (arguments `(#:build-type "DebugRelease" ; Supports only Debug, Release and DebugRelease. ;; The tests take too long and must be explicitly enabled with "make @@ -5324,7 +5222,7 @@ in finite element programs.") (build-system cmake-build-system) (outputs '("out")) (native-inputs - `(("unzip" ,unzip))) + (list unzip)) (inputs `(("hdf5" ,hdf5) ;; FIXME: 'mkoctfile' fails with a linker error: @@ -5377,8 +5275,7 @@ FLANN is written in C++ and contains bindings for C, Octave and Python.") "1vi8dl6rccqiq1apmpwawyg2ywx6a1ic1d3cvkf2hlwk1z11fb0f")))) (build-system gnu-build-system) (inputs - `(("mpfr" ,mpfr) - ("readline" ,readline))) + (list mpfr readline)) (home-page "http://w-calc.sourceforge.net/index.php") (synopsis "Flexible command-line scientific calculator") (description "Wcalc is a very capable calculator. It has standard functions @@ -5406,10 +5303,7 @@ evaluates expressions using the standard order of operations.") (native-inputs `(("gettext" ,gettext-minimal) ("qtbase" ,qtbase-5) ("qttools" ,qttools))) - (inputs `(("libx11" ,libx11) - ("zlib" ,zlib) - ("libpng" ,libpng) - ("gsl" ,gsl))) + (inputs (list libx11 zlib libpng gsl)) ;; The upstream project file ("XaoS.pro") and the Makefile it generates are ;; not enough for this package to install properly. These phases fix that. (arguments @@ -5485,6 +5379,7 @@ set.") ("texlive" ,(texlive-updmap.cfg (list texlive-adjustbox texlive-amsfonts texlive-bibtex + texlive-capt-of texlive-caption texlive-cm texlive-etoolbox @@ -5495,8 +5390,6 @@ set.") texlive-xcolor texlive-xypic texlive-generic-listofitems - texlive-generic-ulem - texlive-latex-capt-of texlive-latex-cmap texlive-latex-colortbl texlive-latex-etoc @@ -5519,6 +5412,7 @@ set.") texlive-latex-tocloft texlive-latex-upquote texlive-latex-varwidth + texlive-ulem texlive-wasysym texlive-latex-wrapfig))))) (inputs @@ -5619,8 +5513,7 @@ structured and unstructured grid problems."))) "0vr8c1mz1k6mz0sgh6n3scl5c3a71iqmy5fnydrgq504icj4vym4")))) (build-system gnu-build-system) (inputs - `(("zlib" ,zlib) - ("hdf5" ,hdf5-1.8))) + (list zlib hdf5-1.8)) (home-page "http://matio.sourceforge.net/") (synopsis "Library for reading and writing MAT files") (description "Matio is a library for reading and writing MAT files. It @@ -5710,7 +5603,7 @@ instruction sets. Thus, an application written with Vc can be compiled for: "1rllzcfwc042c336mhq262a8ha90x6afq30kvk60r7i4761j4yjm")))) (build-system gnu-build-system) (inputs - `(("openlibm" ,openlibm))) + (list openlibm)) (arguments `(#:tests? #f ; no tests #:phases @@ -5735,15 +5628,14 @@ Longest Commons Subsequence of a set of strings.") (define-public jacal (package (name "jacal") - (version "1c4") + (version "1c7") (source (origin (method url-fetch) (uri (string-append "http://groups.csail.mit.edu/mac/ftpdir/scm/jacal-" version ".zip")) - (sha256 (base32 - "055zrn12a1dmy0dqkwrkq3fklbhg3yir6vn0lacp4mvbg8573a3q")) - (patches (search-patches "jacal-fix-texinfo.patch")))) + (sha256 + (base32 "06a5sx9ikd62bpnd898g3yk818b020b1a27mk7dbfla2zizib4xz")))) (build-system gnu-build-system) (arguments `(#:phases @@ -5769,12 +5661,11 @@ Longest Commons Subsequence of a set of strings.") (chmod wrapper #o555)))) (replace 'configure (lambda* (#:key outputs #:allow-other-keys) - (invoke "./configure" + (invoke "sh" "configure" (string-append "--prefix=" (assoc-ref outputs "out")))))))) - (inputs `(("scm" ,scm))) - (native-inputs `(("unzip" ,unzip) - ("texinfo" ,texinfo))) + (inputs (list scm)) + (native-inputs (list unzip texinfo)) (synopsis "Symbolic mathematics system") (description "GNU JACAL is an interactive symbolic mathematics program based on Scheme. It manipulate and simplify a range of mathematical expressions such @@ -5902,9 +5793,9 @@ theories} (SMT) solver. It provides a C/C++ API, as well as Python bindings.") ("ocaml" ,ocaml) ("ocaml-findlib" ,ocaml-findlib))) (propagated-inputs - `(("ocaml-zarith" ,ocaml-zarith))) + (list ocaml-zarith)) (inputs - `(("z3" ,z3))))) + (list z3)))) (define-public elpa (package @@ -6012,7 +5903,7 @@ symmetric matrices.") (build-system cmake-build-system) (home-page "https://github.com/elemental/Elemental") (native-inputs - `(("gfortran" ,gfortran))) + (list gfortran)) (inputs `(("blas" ,openblas) ("gfortran:lib" ,gfortran "lib") @@ -6065,10 +5956,7 @@ reduction.") (base32 "1xgx3cd57vc7gbjic24j1q2za6j3ybz6nk4afvvpbwsf33xnlf4v")))) (inputs - `(("boost" ,boost) - ("glu" ,glu) - ("mesa" ,mesa) - ("qtbase" ,qtbase-5))) + (list boost glu mesa qtbase-5)) (build-system cmake-build-system) (synopsis "Toolset for the mCRL2 formal specification language") (description @@ -6086,7 +5974,7 @@ analysed.") (inherit mcrl2) (name "mcrl2-minimal") (inputs - `(("boost" ,boost))) + (list boost)) (arguments '(#:configure-flags '("-DMCRL2_ENABLE_GUI_TOOLS=OFF"))))) @@ -6183,7 +6071,8 @@ and comparisons are supported.") ("blas" ,openblas) ("suitesparse" ,suitesparse))) ;TODO: Add hypre (arguments - `(#:configure-flags `("-DEXAMPLES_ENABLE_C:BOOL=ON" + `(#:configure-flags `("-DCMAKE_C_FLAGS=-O2 -g -fcommon" + "-DEXAMPLES_ENABLE_C:BOOL=ON" "-DEXAMPLES_ENABLE_CXX:BOOL=ON" "-DEXAMPLES_ENABLE_F77:BOOL=ON" "-DEXAMPLES_ENABLE_F90:BOOL=ON" @@ -6203,6 +6092,9 @@ and comparisons are supported.") (description "SUNDIALS is a family of software packages implemented with the goal of providing robust time integrators and nonlinear solvers that can easily be incorporated into existing simulation codes.") + (properties + '((release-monitoring-url + . "https://computing.llnl.gov/projects/sundials/sundials-software"))) (license license:bsd-3))) (define-public sundials-openmpi @@ -6246,8 +6138,8 @@ easily be incorporated into existing simulation codes.") (base32 "0nx4sqhmi126m14myzm7syv2053harav9snl0a247wnkcgs5rxrv")))) (inputs - `(("lapack" ,lapack) - ,@(package-inputs sundials))) + (modify-inputs (package-inputs sundials) + (prepend lapack))) (arguments (substitute-keyword-arguments (package-arguments sundials) ((#:configure-flags flags '()) @@ -6308,7 +6200,7 @@ linear algebra primitives specifically targeting graph analytics.") (define-public dune-common (package (name "dune-common") - (version "2.7.0") + (version "2.7.1") (source (origin (method url-fetch) @@ -6316,23 +6208,22 @@ linear algebra primitives specifically targeting graph analytics.") version "/dune-common-" version ".tar.gz")) (sha256 (base32 - "140q1zh44cr5yrjwg4b5ga803rkqv55vk30l2cqm29aklj1wb0rw")))) + "0sidwdkyrrqjkqhpvrlc991pzi5xzlvxk91s2n7qk3widwy7fch2")))) (build-system cmake-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-after 'build 'build-tests - (lambda* (#:key make-flags #:allow-other-keys) - (apply invoke "make" "build_tests" make-flags)))))) + (lambda* (#:key make-flags parallel-build? #:allow-other-keys) + (apply invoke "make" "build_tests" + `(,@(if parallel-build? + `("-j" ,(number->string (parallel-job-count))) + '()) + ,@make-flags))))))) (inputs - `(("gmp" ,gmp) - ("metis" ,metis) - ("openblas" ,openblas) - ("python" ,python) - ("superlu" ,superlu))) + (list gmp metis openblas python superlu)) (native-inputs - `(("gfortran" ,gfortran) - ("pkg-config" ,pkg-config))) + (list gfortran pkg-config)) (home-page "https://dune-project.org/") (synopsis "Distributed and Unified Numerics Environment") (description "DUNE, the Distributed and Unified Numerics Environment is a @@ -6346,7 +6237,7 @@ Differences} (FD).") (define-public dune-geometry (package (name "dune-geometry") - (version "2.7.0") + (version "2.7.1") (source (origin (method url-fetch) @@ -6354,23 +6245,24 @@ Differences} (FD).") version "/dune-geometry-" version ".tar.gz")) (sha256 (base32 - "1cicvlwbyyw76npicnblxckyvhbfn3ip8isydiv3hlrlz8zcg5nr")))) + "068mh3fd110xl27rwxqlqy4d9cpqw2vqm2pzfrripiaqscb3byfy")))) (build-system cmake-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-after 'build 'build-tests - (lambda* (#:key make-flags #:allow-other-keys) - (apply invoke "make" "build_tests" make-flags)))))) + (lambda* (#:key make-flags parallel-build? #:allow-other-keys) + (apply invoke "make" "build_tests" + `(,@(if parallel-build? + `("-j" ,(number->string (parallel-job-count))) + '()) + ,@make-flags))))))) (inputs - `(("dune-common" ,dune-common) - ;; Optional - ("openblas" ,openblas) - ("gmp" ,gmp) - ("python" ,python))) + (list dune-common + ;; Optional + openblas gmp python)) (native-inputs - `(("gfortran" ,gfortran) - ("pkg-config" ,pkg-config))) + (list gfortran pkg-config)) (home-page "https://dune-project.org/") (synopsis "Distributed and Unified Numerics Environment") (description "DUNE, the Distributed and Unified Numerics Environment is a @@ -6386,7 +6278,7 @@ This package contains the basic DUNE geometry classes.") (define-public dune-uggrid (package (name "dune-uggrid") - (version "2.7.0") + (version "2.7.1") (source (origin (method git-fetch) @@ -6396,19 +6288,22 @@ This package contains the basic DUNE geometry classes.") (file-name (git-file-name name version)) (sha256 (base32 - "192miqgmfj6jwk969gydzpbv9ki7jg5nky3ydnrwa2nq29b5xkh0")))) + "11qz52g9d5k96fqik2lyi80xryw174rnny074pj70ardl6zzz83p")))) (build-system cmake-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-after 'build 'build-tests - (lambda* (#:key make-flags #:allow-other-keys) - (apply invoke "make" "build_tests" make-flags)))))) + (lambda* (#:key make-flags parallel-build? #:allow-other-keys) + (apply invoke "make" "build_tests" + `(,@(if parallel-build? + `("-j" ,(number->string (parallel-job-count))) + '()) + ,@make-flags))))))) (inputs - `(("dune-common" ,dune-common))) + (list dune-common)) (native-inputs - `(("gfortran" ,gfortran) - ("pkg-config" ,pkg-config))) + (list gfortran pkg-config)) (home-page "https://dune-project.org/") (synopsis "Distributed and Unified Numerics Environment") (description "DUNE, the Distributed and Unified Numerics Environment is a @@ -6423,7 +6318,7 @@ This package contains the DUNE UG grid classes.") (define-public dune-grid (package (name "dune-grid") - (version "2.7.0") + (version "2.7.1") (source (origin (method url-fetch) @@ -6431,26 +6326,29 @@ This package contains the DUNE UG grid classes.") version "/dune-grid-" version ".tar.gz")) (sha256 (base32 - "17fjz30qazjgl11sryyxnw9klai4yz1ji4bs68013xcxc5hdv27s")))) + "15iws03hkbmr4a4rqqb0rriz1m8szl96wdr7gw0jmrcnlzbdbbx5")))) (build-system cmake-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-after 'build 'build-tests - (lambda* (#:key make-flags #:allow-other-keys) - (apply invoke "make" "build_tests" make-flags)))))) + (lambda* (#:key make-flags parallel-build? #:allow-other-keys) + (apply invoke "make" "build_tests" + `(,@(if parallel-build? + `("-j" ,(number->string (parallel-job-count))) + '()) + ,@make-flags))))))) (inputs - `(("dune-common" ,dune-common) - ("dune-geometry" ,dune-geometry) - ("gmp" ,gmp) - ("metis" ,metis) - ("openblas" ,openblas) - ("python" ,python))) + (list dune-common + dune-geometry + gmp + metis + openblas + python)) (propagated-inputs - `(("dune-uggrid" ,dune-uggrid))) + (list dune-uggrid)) (native-inputs - `(("gfortran" ,gfortran) - ("pkg-config" ,pkg-config))) + (list gfortran pkg-config)) (home-page "https://dune-project.org/") (synopsis "Distributed and Unified Numerics Environment") (description "DUNE, the Distributed and Unified Numerics Environment is a @@ -6466,7 +6364,7 @@ This package contains the basic DUNE grid classes.") (define-public dune-istl (package (name "dune-istl") - (version "2.7.0") + (version "2.7.1") (source (origin (method url-fetch) @@ -6474,8 +6372,7 @@ This package contains the basic DUNE grid classes.") version "/dune-istl-" version ".tar.gz")) (sha256 (base32 - "0gl3wgz5rs6sb4m83440ny45sbx7z7lnbi3gx6r9nm3rvy5j33f9")) - (patches (search-patches "dune-istl-2.7-fix-non-mpi-tests.patch")))) + "1cy69s1266hvnh8blznlvvkrf8i2g640rc3mf7kp872wgvdz4nb9")))) (build-system cmake-build-system) (arguments `(#:phases @@ -6493,20 +6390,23 @@ This package contains the basic DUNE grid classes.") ":")) #t))) (add-after 'build 'build-tests - (lambda* (#:key make-flags #:allow-other-keys) - (apply invoke "make" "build_tests" make-flags)))))) + (lambda* (#:key make-flags parallel-build? #:allow-other-keys) + (apply invoke "make" "build_tests" + `(,@(if parallel-build? + `("-j" ,(number->string (parallel-job-count))) + '()) + ,@make-flags))))))) (inputs - `(("dune-common" ,dune-common) - ;; Optional - ("metis" ,metis) - ("suitesparse" ,suitesparse) - ("superlu" ,superlu) - ("openblas" ,openblas) - ("gmp" ,gmp) - ("python" ,python))) + (list dune-common + ;; Optional + metis + suitesparse + superlu + openblas + gmp + python)) (native-inputs - `(("gfortran" ,gfortran) - ("pkg-config" ,pkg-config))) + (list gfortran pkg-config)) (home-page "https://dune-project.org/") (synopsis "Distributed and Unified Numerics Environment") (description "DUNE, the Distributed and Unified Numerics Environment is a @@ -6525,7 +6425,7 @@ aggregation-based algebraic multigrid.") (define-public dune-localfunctions (package (name "dune-localfunctions") - (version "2.7.0") + (version "2.7.1") (source (origin (method url-fetch) @@ -6533,7 +6433,7 @@ aggregation-based algebraic multigrid.") version "/dune-localfunctions-" version ".tar.gz")) (sha256 (base32 - "1yih59h6vngii696bx1c2vil02lriij4kz0nc583mjn9kiaqxfqd")))) + "031i42anrhi0ngpvp42rdjbkic7v3008fwild9xg7flffwvnpshg")))) (build-system cmake-build-system) (arguments `(#:phases @@ -6551,18 +6451,21 @@ aggregation-based algebraic multigrid.") ":")) #t))) (add-after 'build 'build-tests - (lambda* (#:key make-flags #:allow-other-keys) - (apply invoke "make" "build_tests" make-flags)))))) + (lambda* (#:key make-flags parallel-build? #:allow-other-keys) + (apply invoke "make" "build_tests" + `(,@(if parallel-build? + `("-j" ,(number->string (parallel-job-count))) + '()) + ,@make-flags))))))) (inputs - `(("dune-common" ,dune-common) - ("dune-geometry" ,dune-geometry) - ;; Optional - ("metis" ,metis) - ("superlu" ,superlu) - ("gmp" ,gmp))) + (list dune-common + dune-geometry + ;; Optional + metis + superlu + gmp)) (native-inputs - `(("gfortran" ,gfortran) - ("pkg-config" ,pkg-config))) + (list gfortran pkg-config)) (home-page "https://dune-project.org/") (synopsis "Distributed and Unified Numerics Environment") ; TODO (description "This DUNE module provides interface and implementation for @@ -6578,99 +6481,111 @@ assemble global function spaces on finite-element grids.") (license license:gpl2))) (define-public dune-alugrid - (package - (name "dune-alugrid") - (version "2.7.0-git-81d35682") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.dune-project.org/extensions/dune-alugrid.git") - (commit "81d356827c84454b971937db02c02b90bbcd7fe5"))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0z54lwfp53prcrs94k8gwh047l9z642jll3l56xlyfr69z0b2zz1")))) - (build-system cmake-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-include - (lambda _ - (substitute* "dune/alugrid/test/test-alugrid.cc" - (("doc/grids/gridfactory/testgrids") - "doc/dune-grid/grids/gridfactory/testgrids")) - #t)) - (add-after 'build 'build-tests - (lambda* (#:key inputs make-flags #:allow-other-keys) - (setenv "CPLUS_INCLUDE_PATH" - (string-append (assoc-ref inputs "dune-grid") "/share")) - (apply invoke "make" "build_tests" make-flags)))))) - (inputs - `(("dune-common" ,dune-common) - ("dune-geometry" ,dune-geometry) - ("dune-grid" ,dune-grid) - ;; Optional - ("metis" ,metis) - ("openblas" ,openblas) - ("python" ,python) - ("superlu" ,superlu) - ("gmp" ,gmp) - ("zlib" ,zlib))) - (native-inputs - `(("gfortran" ,gfortran) - ("pkg-config" ,pkg-config))) - (home-page "https://dune-project.org/") - (synopsis "Distributed and Unified Numerics Environment") - (description "ALUGrid is an adaptive, loadbalancing, unstructured + ;; This was the last commit on the releases/2.7 branch as of 2021-12-17, + ;; unfortunately there was no tag for any 2.7 release. + (let ((commit "51bde29a2dfa7cfac4fb73d40ffd42b9c1eb1d3d")) + (package + (name "dune-alugrid") + (version (git-version "2.7.1" "0" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.dune-project.org/extensions/dune-alugrid.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0z16wg6llzxs7vjg2yilg31vwnkz8k050j6bspg3blbym0razy15")))) + (build-system cmake-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-include + (lambda _ + (substitute* "dune/alugrid/test/test-alugrid.cc" + (("doc/grids/gridfactory/testgrids") + "doc/dune-grid/grids/gridfactory/testgrids")) + #t)) + (add-after 'build 'build-tests + (lambda* (#:key make-flags parallel-build? #:allow-other-keys) + (setenv "CPLUS_INCLUDE_PATH" + (string-append (assoc-ref inputs "dune-grid") "/share")) + (apply invoke "make" "build_tests" + `(,@(if parallel-build? + `("-j" ,(number->string (parallel-job-count))) + '()) + ,@make-flags))))))) + (inputs + (list dune-common + dune-geometry + dune-grid + ;; Optional + metis + openblas + python + superlu + gmp + zlib)) + (native-inputs + (list gfortran pkg-config)) + (home-page "https://dune-project.org/") + (synopsis "Distributed and Unified Numerics Environment") + (description "ALUGrid is an adaptive, loadbalancing, unstructured implementation of the DUNE grid interface supporting either simplices or cubes.") - (license license:gpl2+))) + (license license:gpl2+)))) (define-public dune-subgrid - (package - (name "dune-subgrid") - (version "2.7.0-git-2103a363") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://git.imp.fu-berlin.de/agnumpde/dune-subgrid") - (commit "2103a363f32e8d7b60e66eee7ddecf969f6cf762"))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1wsjlypd3835c3arqjkw836cxx5q67zy447wa65q634lf6f6v9ia")))) - (build-system cmake-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'build 'build-tests - (lambda* (#:key make-flags #:allow-other-keys) - (apply invoke "make" "build_tests" make-flags)))))) - (inputs - `(("dune-common" ,dune-common) - ("dune-geometry" ,dune-geometry) - ("dune-grid" ,dune-grid) - ;; Optional - ("metis" ,metis) - ("openblas" ,openblas) - ("gmp" ,gmp))) - (native-inputs - `(("gfortran" ,gfortran) - ("pkg-config" ,pkg-config))) - (home-page "http://numerik.mi.fu-berlin.de/dune-subgrid/index.php") - (synopsis "Distributed and Unified Numerics Environment") - (description "The dune-subgrid module marks elements of + ;; This was the last commit on the releases/2.7 branch as of 2021-12-17. + ;; Unfortunately the dune-subgrid repository contains no release tags. + (let ((commit "45d1ee9f3f711e209695deee97912f4954f7f280")) + (package + (name "dune-subgrid") + (version (git-version "2.7.1" "0" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.imp.fu-berlin.de/agnumpde/dune-subgrid") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0xjf7865wil7kzym608kv3nc3ff3m3nlqich4k9wjyvy3lz6panh")))) + (build-system cmake-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'build 'build-tests + (lambda* (#:key make-flags parallel-build? #:allow-other-keys) + (apply invoke "make" "build_tests" + `(,@(if parallel-build? + `("-j" ,(number->string (parallel-job-count))) + '()) + ,@make-flags))))))) + (inputs + (list dune-common + dune-geometry + dune-grid + ;; Optional + metis + openblas + gmp)) + (native-inputs + (list gfortran pkg-config)) + (home-page "http://numerik.mi.fu-berlin.de/dune-subgrid/index.php") + (synopsis "Distributed and Unified Numerics Environment") + (description "The dune-subgrid module marks elements of another hierarchical dune grid. The set of marked elements can then be accessed as a hierarchical dune grid in its own right. Dune-Subgrid provides the full grid interface including adaptive mesh refinement.") - (license license:gpl2+))) + (license license:gpl2+)))) (define-public dune-typetree (package (name "dune-typetree") - (version "2.7.0") + (version "2.7.1") (source (origin (method git-fetch) @@ -6680,25 +6595,28 @@ provides the full grid interface including adaptive mesh refinement.") (file-name (git-file-name name version)) (sha256 (base32 - "1rhv25yg0q1hw50c8wlfqhgwrjl4mh62zq9v14ilwgzbfgxmpiy7")))) + "1kx9k8i7pdw6l6ny6nq85v5p1nd6yxldzaj8k3nizaz3q1j407pv")))) (build-system cmake-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-after 'build 'build-tests - (lambda* (#:key make-flags #:allow-other-keys) - (apply invoke "make" "build_tests" make-flags)))))) + (lambda* (#:key make-flags parallel-build? #:allow-other-keys) + (apply invoke "make" "build_tests" + `(,@(if parallel-build? + `("-j" ,(number->string (parallel-job-count))) + '()) + ,@make-flags))))))) (inputs - `(("dune-common" ,dune-common) - ;; Optional - ("openblas" ,openblas) - ("python" ,python) - ("metis" ,metis) - ("superlu" ,superlu) - ("gmp" ,gmp))) + (list dune-common + ;; Optional + openblas + python + metis + superlu + gmp)) (native-inputs - `(("gfortran" ,gfortran) - ("pkg-config" ,pkg-config))) + (list gfortran pkg-config)) (home-page "https://dune-project.org/") (synopsis "Distributed and Unified Numerics Environment") (description "TypeTree is a template library for constructing and @@ -6709,7 +6627,7 @@ operating on statically typed trees of objects.") (define-public dune-functions (package (name "dune-functions") - (version "2.7.0") + (version "2.7.1") (source (origin (method git-fetch) @@ -6719,7 +6637,7 @@ operating on statically typed trees of objects.") (file-name (git-file-name name version)) (sha256 (base32 - "1na4gcih0kin37ksj2xj07ds04v7zx53pjdhm1hzy55jjfqdjk8h")))) + "04dhr4asnl38bf1gp8hrk31maav33m7q71lhl2n5yk1q1x6i77nw")))) (build-system cmake-build-system) (arguments `(#:phases @@ -6731,23 +6649,26 @@ operating on statically typed trees of objects.") "--exclude-regex gridviewfunctionspacebasistest") #t)) (add-after 'build 'build-tests - (lambda* (#:key make-flags #:allow-other-keys) - (apply invoke "make" "build_tests" make-flags)))))) + (lambda* (#:key make-flags parallel-build? #:allow-other-keys) + (apply invoke "make" "build_tests" + `(,@(if parallel-build? + `("-j" ,(number->string (parallel-job-count))) + '()) + ,@make-flags))))))) (inputs - `(("dune-common" ,dune-common) - ("dune-istl" ,dune-istl) - ("dune-localfunctions" ,dune-localfunctions) - ("dune-grid" ,dune-grid) - ("dune-geometry" ,dune-geometry) - ("dune-typetree" ,dune-typetree) - ("openblas" ,openblas) - ("metis" ,metis) - ("python" ,python) - ("superlu" ,superlu) - ("gmp" ,gmp))) + (list dune-common + dune-istl + dune-localfunctions + dune-grid + dune-geometry + dune-typetree + openblas + metis + python + superlu + gmp)) (native-inputs - `(("gfortran" ,gfortran) - ("pkg-config" ,pkg-config))) + (list gfortran pkg-config)) (home-page "https://dune-project.org/") (synopsis "Distributed and Unified Numerics Environment") (description "The dune-functions module provides an abstraction layer for @@ -6757,45 +6678,47 @@ implemented as callable objects, and bases of finite element spaces.") (license (list license:lgpl3+ license:gpl2)))) (define-public dune-pdelab - (package - (name "dune-pdelab") - (version "2.7.0-git-476fe437") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://gitlab.dune-project.org/pdelab/dune-pdelab") - (commit "476fe43763fa6f459c5e4658e2a2b4b5582db834"))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0cs36piqzn6rq0j2ih3ab3q3q9yg199wk72k5qi86pkzh7i7fdn1")))) - (build-system cmake-build-system) - (arguments '(#:tests? #f)) ; XXX: the tests cannot be compiled - (inputs - `(("dune-common" ,dune-common) - ("dune-istl" ,dune-istl) - ("dune-localfunctions" ,dune-localfunctions) - ("dune-geometry" ,dune-geometry) - ("dune-grid" ,dune-grid) - ("dune-typetree" ,dune-typetree) - ("dune-functions" ,dune-functions) - ;; Optional - ("openblas" ,openblas) - ("eigen" ,eigen) - ("metis" ,metis) - ("python" ,python) - ("superlu" ,superlu) - ("gmp" ,gmp))) - (native-inputs - `(("gfortran" ,gfortran) - ("pkg-config" ,pkg-config))) - (home-page "https://dune-project.org/") - (synopsis "Differential equations solver toolbox") - (description "PDELab is a partial differential equations solver toolbox + ;; This was the last commit on the releases/2.7 branch as of 2021-12-17, + ;; unfortunately there was no tag for any 2.7 release. + (let ((commit "09aef74d95661d18a7789d2f517ae77797eec738")) + (package + (name "dune-pdelab") + (version (git-version "2.7.1" "0" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.dune-project.org/pdelab/dune-pdelab") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0nv69ayr4gln9m1s94z9zkrxqi8nzar3z6awnvgqz595nmjf82ac")))) + (build-system cmake-build-system) + (arguments '(#:tests? #f)) ; XXX: the tests cannot be compiled + (inputs + (list dune-common + dune-istl + dune-localfunctions + dune-geometry + dune-grid + dune-typetree + dune-functions + ;; Optional + openblas + eigen + metis + python + superlu + gmp)) + (native-inputs + (list gfortran pkg-config)) + (home-page "https://dune-project.org/") + (synopsis "Differential equations solver toolbox") + (description "PDELab is a partial differential equations solver toolbox built on top of DUNE, the Distributed and Unified Numerics Environment.") - ;; Either GPL version 2 with "runtime exception" or LGPLv3+. - (license (list license:lgpl3+ license:gpl2)))) + ;; Either GPL version 2 with "runtime exception" or LGPLv3+. + (license (list license:lgpl3+ license:gpl2))))) (define add-openmpi-to-dune-package (let ((dune-package? @@ -6805,8 +6728,8 @@ built on top of DUNE, the Distributed and Unified Numerics Environment.") (if (dune-package? p) (package (inherit p) (name (string-append (package-name p) "-openmpi")) - (inputs `(,@(package-inputs p) - ("openmpi" ,openmpi))) + (inputs (modify-inputs (package-inputs p) + (append openmpi))) (arguments (substitute-keyword-arguments (package-arguments p) ((#:phases phases '%standard-phases) @@ -6863,7 +6786,7 @@ built on top of DUNE, the Distributed and Unified Numerics Environment.") (base32 "0h4xj6pyyac79ka5ibqjilfa3s9j3yxnzgpwc57b54kfh2bj3447")))) (build-system gnu-build-system) (inputs - `(("python2" ,python-2))) + (list python-2)) (arguments `(#:tests? #f ; no tests #:phases @@ -6954,7 +6877,7 @@ management via the GIMPS project's Primenet server.") (append '("formats.txt" "README" "schreier.txt") (find-files "." "\\.pdf$"))))))))) (inputs - `(("gmp" ,gmp))) ;for sumlines + (list gmp)) ;for sumlines (home-page "https://pallini.di.uniroma1.it/") (synopsis "Library for graph automorphisms") (description "@code{nauty} (No AUTomorphisms, Yes?) is a set of @@ -6985,10 +6908,9 @@ compiled against the nauty library.") "1j5aji1g2vmdvc0gqz45n2ll2l2f6czca04wiyfl5g3sm3a6vhvb")))) (build-system gnu-build-system) (native-inputs - `(("m4" ,m4))) + (list m4)) (inputs - `(("glpk" ,glpk) - ("gmp" ,gmp))) + (list glpk gmp)) (home-page "https://www.bugseng.com/parma-polyhedra-library") (synopsis "Parma Polyhedra Library for computations with polyhedra") @@ -7024,8 +6946,8 @@ functions.") (base32 "0vh7cd1915bjqzkdp3sk25ngy8cq624mkh8c53c5bnzk357kb0fk")))) (build-system cmake-build-system) - (inputs `(("qtbase" ,qtbase-5))) - (native-inputs `(("qttools" ,qttools))) + (inputs (list qtbase-5)) + (native-inputs (list qttools)) (arguments `(#:phases (modify-phases %standard-phases @@ -7107,14 +7029,13 @@ researchers and developers alike to get started on SAT.") ("doxygen" ,doxygen) ("file" ,file))) (inputs - `(("gmp" ,gmp) - ("mpfr" ,mpfr) - ("libxml2" ,libxml2) - ("curl" ,curl) - ("icu4c" ,icu4c) - ("gnuplot" ,gnuplot) - ("readline" ,readline) - ("libiconv" ,libiconv))) + (list gmp + mpfr + libxml2 + curl + icu4c + gnuplot + readline)) (arguments `(#:phases (modify-phases %standard-phases @@ -7150,19 +7071,19 @@ cli.") (base32 "1nrx7gp6f1yalbdda1gb97azhbr4xclq2xf08vvbvsk8jfd6fd2v")))) (build-system glib-or-gtk-build-system) (native-inputs - `(("pkg-config" ,pkg-config) - ("intltool" ,intltool) - ("automake" ,automake) - ("autoconf" ,autoconf) - ("libtool" ,libtool) - ("file" ,file))) + (list pkg-config + intltool + automake + autoconf + libtool + file)) (inputs - `(("gmp" ,gmp) - ("mpfr" ,mpfr) - ("libqalculate" ,libqalculate) - ("libxml2" ,libxml2) - ("glib" ,glib) - ("gtk+" ,gtk+))) + (list gmp + mpfr + libqalculate + libxml2 + glib + gtk+)) (arguments `(#:phases (modify-phases %standard-phases @@ -7227,21 +7148,11 @@ numeric differences and differences in numeric formats.") "0pfsiddnk26f384wbazfpgzh1n1ibf3xq101q74mxvczi7z0a791")))) (build-system ocaml-build-system) (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("coq" ,coq) - ("ocaml" ,ocaml) - ("which" ,which))) + (list autoconf automake coq ocaml which)) (propagated-inputs - `(("camlzip" ,camlzip) - ("ocaml-graph" ,ocaml-graph) - ("ocaml-menhir" ,ocaml-menhir) - ("ocaml-num" ,ocaml-num) - ("ocaml-zarith" ,ocaml-zarith))) + (list camlzip ocaml-graph ocaml-menhir ocaml-num ocaml-zarith)) (inputs - `(("coq-flocq" ,coq-flocq) - ("emacs-minimal" ,emacs-minimal) - ("zlib" ,zlib))) + (list coq-flocq emacs-minimal zlib)) (arguments `(#:phases (modify-phases %standard-phases @@ -7282,14 +7193,14 @@ of C, Java, or Ada programs.") (define-public frama-c (package (name "frama-c") - (version "23.1") + (version "24.0") (source (origin (method url-fetch) (uri (string-append "http://frama-c.com/download/frama-c-" - version "-Vanadium.tar.gz")) + version "-Chromium.tar.gz")) (sha256 (base32 - "1rgkq9sg436smw005ag0j6y3xryhjn18a07m5wjfrfp0s1438nnj")))) + "0x1xgip50jdz1phsb9rzwf2ra8lshn1hmd9g967xia402wrg3sjf")))) (build-system ocaml-build-system) (arguments `(#:tests? #f; no test target in Makefile @@ -7300,14 +7211,14 @@ of C, Java, or Ada programs.") (setenv "CONFIG_SHELL" (search-input-file inputs "/bin/sh"))))))) (inputs - `(("gmp" ,gmp))) + (list gmp)) (propagated-inputs - `(("ocaml-biniou" ,ocaml-biniou) - ("ocaml-easy-format" ,ocaml-easy-format) - ("ocaml-graph" ,ocaml-graph) - ("ocaml-yojson" ,ocaml-yojson) - ("ocaml-zarith" ,ocaml-zarith) - ("why3" ,why3))) + (list ocaml-biniou + ocaml-easy-format + ocaml-graph + ocaml-yojson + ocaml-zarith + why3)) (native-search-paths (list (search-path-specification (variable "FRAMAC_SHARE") @@ -7351,8 +7262,7 @@ projects up to the certification of critical software.") (invoke "make" "-j" (number->string (parallel-job-count)) "blitz-doc")))))) (native-inputs - `(("python" ,python) - ("texinfo" ,texinfo))) + (list python texinfo)) (synopsis "C++ template class library for multidimensional arrays") (description "Blitz++ is a C++ template class library that provides high-performance multidimensional array containers for scientific computing.") @@ -7380,8 +7290,7 @@ high-performance multidimensional array containers for scientific computing.") (patches (search-patches "fxdiv-system-libraries.patch")))) (build-system cmake-build-system) (inputs - `(("googletest" ,googletest) - ("googlebenchmark" ,googlebenchmark))) + (list googletest googlebenchmark)) (synopsis "C++ library for division via fixed-point multiplication by inverse") (description @@ -7433,11 +7342,9 @@ when an application performs repeated divisions by the same divisor.") file)))) (find-files include "\\.py$")))))))) (native-inputs - `(("python-wrapper" ,python-wrapper))) + (list python-wrapper)) (inputs - `(("psimd" ,psimd) - ("googletest" ,googletest) - ("googlebenchmark" ,googlebenchmark))) + (list psimd googletest googlebenchmark)) (synopsis "C++ library for half-precision floating point formats") (description "This header-only C++ library implements conversion to and from