X-Git-Url: http://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/5f40ad9ae2a199609ee28640288a69769532dbf0..ea1778ebd45ca6a9c44c27c82d29848eaa4ad6ef:/gnu/packages/maths.scm diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 5c90a4f5c0..f6658971da 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -2,17 +2,17 @@ ;;; 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 Eric Bavier +;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Eric Bavier ;;; Copyright © 2014 Federico Beffa ;;; Copyright © 2014 Mathieu Lirzin ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus ;;; Copyright © 2015 Sou Bunnbu ;;; Copyright © 2015, 2018 Mark H Weaver -;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner +;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner ;;; Copyright © 2015 Fabian Harfert ;;; Copyright © 2016 Roel Janssen ;;; Copyright © 2016, 2018, 2020 Kei Kebreau -;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ludovic Courtès +;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès ;;; Copyright © 2016 Leo Famulari ;;; Copyright © 2016, 2017 Thomas Danckaert ;;; Copyright © 2017, 2018, 2019, 2020 Paul Garlick @@ -28,20 +28,24 @@ ;;; Copyright © 2018 Adam Massmann ;;; Copyright © 2018, 2020 Marius Bakke ;;; Copyright © 2018 Eric Brown -;;; Copyright © 2018 Julien Lepiller +;;; Copyright © 2018, 2021 Julien Lepiller ;;; Copyright © 2018 Amin Bandali -;;; Copyright © 2019 Nicolas Goaziou +;;; Copyright © 2019, 2021 Nicolas Goaziou ;;; Copyright © 2019 Steve Sprang ;;; Copyright © 2019 Robert Smith ;;; Copyright © 2020 Jakub Kądziołka -;;; Copyright © 2020 Felix Gruber +;;; Copyright © 2020, 2021 Felix Gruber ;;; Copyright © 2020 R Veera Kumar ;;; Copyright © 2020 Vincent Legoll ;;; Copyright © 2020 Nicolò Balzarotti ;;; Copyright © 2020 B. Wilson -;;; Copyright © 2020 Vinicius Monego +;;; Copyright © 2020, 2021 Vinicius Monego ;;; Copyright © 2020 Simon Tournier ;;; Copyright © 2020 Martin Becze +;;; Copyright © 2021 Gerd Heber +;;; Copyright © 2021 Franck Pérignon +;;; Copyright © 2021 Philip McGrath +;;; Copyright © 2021 Paul A. Patience ;;; ;;; This file is part of GNU Guix. ;;; @@ -71,6 +75,7 @@ #: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 ocaml) #:use-module (guix build-system python) #:use-module (guix build-system ruby) #:use-module (gnu packages algebra) @@ -82,11 +87,13 @@ #:use-module (gnu packages check) #:use-module (gnu packages cmake) #:use-module (gnu packages compression) + #:use-module (gnu packages coq) #:use-module (gnu packages curl) #:use-module (gnu packages cyrus-sasl) #: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) @@ -104,6 +111,7 @@ #: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) @@ -115,6 +123,7 @@ #:use-module (gnu packages mpi) #:use-module (gnu packages multiprecision) #:use-module (gnu packages netpbm) + #:use-module (gnu packages ocaml) #:use-module (gnu packages onc-rpc) #:use-module (gnu packages pcre) #:use-module (gnu packages popt) @@ -232,16 +241,19 @@ programming languages.") (define-public qhull (package (name "qhull") - (version "2019.1") + (version "2020.2") (source (origin (method url-fetch) (uri (string-append "http://www.qhull.org/download/qhull-" (car (string-split version #\.)) - "-src-7.3.2.tgz")) + "-src-8.0.2.tgz")) (sha256 (base32 - "1ys3vh3qq0v9lh452xb932vp63advds1pxk42lk7cc1niiar0y9b")))) + "0zlbhg0lb6j60188c2xhcrvviskr079552icjldqhy1jhgmxghmm")))) (build-system cmake-build-system) + (arguments + `(#:configure-flags '("-DLINK_APPS_SHARED=ON" + "-DCMAKE_POSITION_INDEPENDENT_CODE=ON"))) (synopsis "Calculate convex hulls and related structures") (description "@code{Qhull} computes the convex hull, Delaunay triangulation, Voronoi @@ -562,7 +574,7 @@ It can utilize SIMD instructions that are available on modern processors.") (define-public glpk (package (name "glpk") - (version "4.65") + (version "5.0") (source (origin (method url-fetch) @@ -570,12 +582,13 @@ It can utilize SIMD instructions that are available on modern processors.") version ".tar.gz")) (sha256 (base32 - "040sfaa9jclg2nqdh83w71sv9rc1sznpnfiripjdyr48cady50a2")))) + "05bgxidxj8d9xdp82niy7cy36w181cxq7p8vc3y2ixshpgp1642a")))) (build-system gnu-build-system) (inputs `(("gmp" ,gmp))) (arguments - `(#:configure-flags '("--with-gmp"))) + `(#:configure-flags '("--with-gmp" + "--disable-static"))) (home-page "https://www.gnu.org/software/glpk/") (synopsis "GNU Linear Programming Kit, supporting the MathProg language") (description @@ -586,6 +599,20 @@ translator for the language. In addition to the C library, a stand-alone LP/MIP solver is included in the package.") (license license:gpl3+))) +(define-public glpk-4 + (package + (inherit glpk) + (name "glpk") + (version "4.65") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/glpk/glpk-" + version ".tar.gz")) + (sha256 + (base32 + "040sfaa9jclg2nqdh83w71sv9rc1sznpnfiripjdyr48cady50a2")))))) + (define-public 4ti2 (package (name "4ti2") @@ -679,6 +706,30 @@ in memory, so even problems with very large output sizes can sometimes be solved.") (license license:gpl2+))) +(define-public libcerf + (package + (name "libcerf") + (version "1.14") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://jugit.fz-juelich.de/mlz/libcerf") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1ic2q7kvxpqmgxlishygvx8d00i4wn51vkq4fyac44ahhf6c3kwd")))) + (build-system cmake-build-system) + (native-inputs + `(("perl" ,perl))) + (home-page "https://jugit.fz-juelich.de/mlz/libcerf") + (synopsis "Library for complex error functions") + (description + "@code{libcerf} is a self-contained numeric library that provides an +efficient and accurate implementation of complex error functions, along with +Dawson, Faddeeva, and Voigt functions.") + (license license:expat))) + (define-public vinci (package (name "vinci") @@ -727,7 +778,7 @@ halfspaces) or by their double description with both representations.") (define-public arpack-ng (package (name "arpack-ng") - (version "3.6.3") + (version "3.8.0") (home-page "https://github.com/opencollab/arpack-ng") (source (origin (method git-fetch) @@ -735,14 +786,16 @@ halfspaces) or by their double description with both representations.") (file-name (git-file-name name version)) (sha256 (base32 - "1wljl96yqxc9v8r49c37lscwkdp58kaacfb9p6s6nvpm31haax4y")))) + "0l7as5z6xvbxly8alam9s4kws70952qq35a6vkljzayi4b9gbklx")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) - ("libtool" ,libtool))) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config))) (inputs - `(("lapack" ,lapack) + `(("eigen" ,eigen) + ("lapack" ,lapack) ("fortran" ,gfortran))) (synopsis "Fortran subroutines for solving eigenvalue problems") (description @@ -755,16 +808,15 @@ large scale eigenvalue problems.") (package (inherit arpack-ng) (version "3.3.0") - (name (package-name arpack-ng)) - (home-page (package-home-page arpack-ng)) (source (origin - (method url-fetch) - (uri (string-append home-page "/archive/" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference (url (package-home-page arpack-ng)) + (commit version))) + (file-name (git-file-name (package-name arpack-ng) version)) (sha256 (base32 - "1cz53wqzcf6czmcpfb3vb61xi0rn5bwhinczl65hpmbrglg82ndd")))))) + "00h6bjvxjq7bv0b8pwnc0gw33ns6brlqv00xx2rh3w9b5n205918")))))) (define-public arpack-ng-openmpi (package (inherit arpack-ng) @@ -904,14 +956,14 @@ singular value problems.") (define-public gnuplot (package (name "gnuplot") - (version "5.2.7") + (version "5.4.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/gnuplot/gnuplot/" version "/gnuplot-" version ".tar.gz")) (sha256 - (base32 "1vglp4la40f5dpj0zdj63zprrkyjgzy068p35bz5dqxjyczm1zlp")))) + (base32 "03jrqs5lvxmbbz2c4g17dn2hrxqwd3hfadk9q8wbkbkyas2h8sbb")))) (build-system gnu-build-system) (inputs `(("readline" ,readline) ("cairo" ,cairo) @@ -923,7 +975,9 @@ singular value problems.") ("texlive" ,texlive-tiny))) (arguments `(#:configure-flags (list (string-append "--with-texdir=" %output - "/texmf-local/tex/latex/gnuplot")))) + "/texmf-local/tex/latex/gnuplot")) + ;; Plot on a dumb terminal during tests. + #:make-flags '("GNUTERM=dumb"))) (home-page "http://www.gnuplot.info") (synopsis "Command-line driven graphing utility") (description "Gnuplot is a portable command-line driven graphing @@ -1059,7 +1113,7 @@ incompatible with HDF5.") (define-public hdf5-1.8 (package (name "hdf5") - (version "1.8.21") + (version "1.8.22") (source (origin (method url-fetch) @@ -1074,9 +1128,8 @@ incompatible with HDF5.") (string-append major minor))) "/src/hdf5-" version ".tar.bz2"))) (sha256 - (base32 "03glk4w4wyb1jyb443g53y3y1ncnf6mj2cqwm6avfr2awkgb3cg5")) - (patches (search-patches "hdf5-config-date.patch" - "hdf5-1.8-mpi-deprecations.patch")))) + (base32 "194ki2s5jrgl4czkvy5nc9nwjyapah0fj72l0gb0aysplp38i6v8")) + (patches (search-patches "hdf5-config-date.patch")))) (build-system gnu-build-system) (inputs `(("zlib" ,zlib))) @@ -1125,7 +1178,7 @@ incompatible with HDF5.") ;; libhdf5.so. We truncate the hashes to avoid ;; unnecessary store references to those compilers: (substitute* "src/libhdf5.settings" - (("(/gnu/store/)([a-Z0-9]*)" all prefix hash) + (("(/gnu/store/)([a-zA-Z0-9]*)" all prefix hash) (string-append prefix (string-take hash 10) "...")) ;; Don't record the build-time kernel version to make the ;; settings file reproducible. @@ -1184,7 +1237,8 @@ extremely large and complex data collections.") "https://www.hdfgroup.org/ftp/HDF5/current/src/unpacked/COPYING")))) (define-public hdf5-1.10 - (package/inherit hdf5-1.8 + (package + (inherit hdf5-1.8) (version "1.10.7") (source (origin @@ -1202,6 +1256,26 @@ extremely large and complex data collections.") (base32 "0pm5xxry55i0h7wmvc7svzdaa90rnk7h78rrjmnlkz2ygsn8y082")) (patches (search-patches "hdf5-config-date.patch")))))) +(define-public hdf5-1.12 + (package + (inherit hdf5-1.8) + (version "1.12.0") + (source + (origin + (method url-fetch) + (uri (list (string-append "https://support.hdfgroup.org/ftp/HDF5/releases/" + "hdf5-" (version-major+minor version) + "/hdf5-" version "/src/hdf5-" + version ".tar.bz2") + (string-append "https://support.hdfgroup.org/ftp/HDF5/" + "current" + (apply string-append + (take (string-split version #\.) 2)) + "/src/hdf5-" version ".tar.bz2"))) + (sha256 + (base32 "0qazfslkqbmzg495jafpvqp0khws3jkxa0z7rph9qvhacil6544p")) + (patches (search-patches "hdf5-config-date.patch")))))) + (define-public hdf5 ;; Default version of HDF5. hdf5-1.10) @@ -1682,21 +1756,16 @@ online as well as original implementations of various other algorithms.") (define-public ipopt (package (name "ipopt") - (version "3.12.12") + (version "3.13.4") (source (origin - (method url-fetch) - (uri (string-append - "https://www.coin-or.org/download/source/Ipopt/Ipopt-" - version".tgz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/coin-or/Ipopt") + (commit (string-append "releases/" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "07yn9rzdswjk8n246qq6ci9ssf2bcplkifcpsfz9j6cdxw9vgbkv")) - (modules '((guix build utils))) - (snippet - ;; Make sure we don't use the bundled software. - '(begin - (delete-file-recursively "ThirdParty") - #t)))) + "08gznhwhqv1x4baksz350ih8q16r5rd0k8vals6078m3h94khr4b")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases @@ -1716,7 +1785,8 @@ online as well as original implementations of various other algorithms.") after "\n"))) #t)))))) (native-inputs - `(("gfortran" ,gfortran))) + `(("gfortran" ,gfortran) + ("pkg-config" ,pkg-config))) (inputs ;; TODO: Maybe add dependency on COIN-MUMPS, ASL, and HSL. `(("lapack" ,lapack))) ;for both libblas and liblapack @@ -1726,6 +1796,35 @@ online as well as original implementations of various other algorithms.") "The Interior Point Optimizer (IPOPT) is a software package for large-scale nonlinear optimization. It provides C++, C, and Fortran interfaces.") + (license license:epl2.0))) + +(define-public cbc + (package + (name "cbc") + (version "2.10.5") + (source (origin + (method url-fetch) + (uri (string-append "https://www.coin-or.org/download/source/" + "Cbc/Cbc-" version ".tgz")) + (sha256 + (base32 + "0wk9vr6zc62gw71v7gnra5wxqlcljcgbhm5lasx236v791b986ns")) + (modules '((guix build utils))) + (snippet + ;; Make sure we don't use the bundled software. + '(delete-file-recursively "ThirdParty")))) + (build-system gnu-build-system) + (native-inputs + `(("gfortran" ,gfortran) + ("pkg-config" ,pkg-config))) + (inputs + `(("openblas" ,openblas))) + (home-page "https://www.coin-or.org") + (synopsis "Branch-and-cut solver") + (description + "Cbc (Coin-or branch and cut) is a mixed integer linear programming +solver written in C++. It can be used as a library or as a standalone +executable.") (license license:epl1.0))) (define-public clp @@ -1891,15 +1990,15 @@ can solve two kinds of problems: (define-public octave-cli (package (name "octave-cli") - (version "5.2.0") + (version "6.2.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/octave/octave-" - version ".tar.lz")) + version ".tar.xz")) (sha256 (base32 - "1848dq6nxzal8gwjrcp6xhi5gq96w89nss9d9rz75q408gb3mbl6")))) + "06id09zspya24gshcwgp039cp35c06150mdlxysawgnbrhj16wkv")))) (build-system gnu-build-system) (inputs `(("alsa-lib" ,alsa-lib) @@ -1934,8 +2033,7 @@ can solve two kinds of problems: ("texinfo" ,texinfo) ("zlib" ,zlib))) (native-inputs - `(("lzip" ,lzip) - ("gfortran" ,gfortran) + `(("gfortran" ,gfortran) ("pkg-config" ,pkg-config) ("perl" ,perl) ;; The following inputs are not actually used in the build process. @@ -1975,7 +2073,7 @@ can solve two kinds of problems: "\"" (assoc-ref inputs "texinfo") "/bin/makeinfo\""))) #t))))) (home-page "https://www.gnu.org/software/octave/") - (synopsis "High-level language for numerical computation") + (synopsis "High-level language for numerical computation (no GUI)") (description "GNU Octave is a high-level interpreted language that is specialized for numerical computations. It can be used for both linear and non-linear applications and it provides great support for visualizing results. @@ -2007,7 +2105,8 @@ script files.") (substitute* "configure" (("qscintilla2-qt5") "qscintilla2_qt5")) - #t)))))))) + #t)))))) + (synopsis "High-level language for numerical computation (with GUI)"))) (define-public opencascade-oce (package @@ -2211,13 +2310,13 @@ ASCII text files using Gmsh's own scripting language.") (define-public veusz (package (name "veusz") - (version "3.2.1") + (version "3.3.1") (source (origin (method url-fetch) (uri (pypi-uri "veusz" version)) (sha256 - (base32 "00vmfpvyd6f33l5awlf02qdik3gmbhzyfizfwwbx7qnam2i9bbwy")))) + (base32 "1q7hi1qwwg4pgiz62isvv1pia85m13bspdpp1q3mrnwl11in0ag0")))) (build-system python-build-system) (arguments `(;; Tests will fail because they depend on optional packages like @@ -2253,7 +2352,8 @@ ASCII text files using Gmsh's own scripting language.") (native-inputs `(("pkg-config" ,pkg-config) ;;("python-astropy" ,python-astropy) ;; FIXME: Package this. - ("qttools" ,qttools))) + ("qttools" ,qttools) + ("python-sip" ,python-sip-4))) (inputs `(("ghostscript" ,ghostscript) ;optional, for EPS/PS output ("python-dbus" ,python-dbus) @@ -2599,7 +2699,7 @@ savings are consistently > 5x.") "test.log" "error.log" "RDict.db" "uninstall.py")) #t)))))) - (home-page "http://slepc.upv.es") + (home-page "https://slepc.upv.es") (synopsis "Scalable library for eigenproblems") (description "SLEPc is a software library for the solution of large sparse eigenproblems on parallel computers. It can be used for the solution of @@ -3210,6 +3310,63 @@ YACC = bison -pscotchyy -y -b y (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 +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) (name "pt-scotch") @@ -3257,6 +3414,28 @@ YACC = bison -pscotchyy -y -b y (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") + + ;; 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 metis (package (name "metis") @@ -3269,6 +3448,9 @@ YACC = bison -pscotchyy -y -b y (sha256 (base32 "1cjxgh41r8k6j029yxs8msp3z6lcnpm16g5pvckk35kc7zhfpykn")))) + (properties + `((release-monitoring-url + . "http://glaros.dtc.umn.edu/gkhome/metis/metis/download"))) (build-system cmake-build-system) (inputs `(("blas" ,openblas))) @@ -3487,7 +3669,7 @@ point numbers.") (define-public wxmaxima (package (name "wxmaxima") - (version "20.06.6") + (version "21.04.0") (source (origin (method git-fetch) @@ -3496,13 +3678,10 @@ point numbers.") (commit (string-append "Version-" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "054f7n5kx75ng5j20rd5q27n9xxk03mrd7sbxyym1lsswzimqh4w")))) + (base32 "0xj95zk16x8kac8qhzd5kvf3b00x7hgdw85da9ww63xyndvhh2lw")))) (build-system cmake-build-system) (native-inputs - `(("gettext" ,gettext-minimal) - ("xorg-server" ,xorg-server-for-tests))) - ;; TODO: Add libomp for multithreading support. - ;; As of right now, enabling libomp causes the imageCells.wxm test to fail. + `(("gettext" ,gettext-minimal))) (inputs `(("wxwidgets" ,wxwidgets) ("maxima" ,maxima) @@ -3511,7 +3690,7 @@ point numbers.") ("gtk+" ,gtk+) ("shared-mime-info" ,shared-mime-info))) (arguments - `(#:test-target "test" + `(#:tests? #f ; tests fail non-deterministically #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-doc-path @@ -3522,13 +3701,6 @@ point numbers.") (substitute* "src/Dirstructure.cpp" (("/doc/wxmaxima-\\%s") "/doc/wxmaxima")) #t)) - (add-before 'check 'pre-check - (lambda _ - ;; Tests require a running X server. - (system "Xvfb :1 &") - (setenv "DISPLAY" ":1") - (setenv "HOME" (getcwd)) - #t)) (add-after 'install 'wrap-program (lambda* (#:key inputs outputs #:allow-other-keys) (wrap-program (string-append (assoc-ref outputs "out") @@ -3715,52 +3887,94 @@ parts of it.") (synopsis "Optimized BLAS library based on GotoBLAS (ILP64 version)") (license license:bsd-3))) -(define* (make-blis implementation #:optional substitutable?) - "Return a BLIS package with the given IMPLEMENTATION (see config/ in the -source tree for a list of implementations.) - -SUBSTITUTABLE? determines whether the package is made available as a -substitute. - -Currently the specialization must be selected at configure-time, but work is -underway to allow BLIS to select the right optimized kernels at run time: -." +(define-public blis (package - (name (if (string=? implementation "reference") - "blis" - (string-append "blis-" implementation))) - (version "0.2.2") + (name "blis") + (version "0.8.1") (home-page "https://github.com/flame/blis") (source (origin (method git-fetch) (uri (git-reference (url home-page) (commit version))) (sha256 (base32 - "1wr79a50nm4abhw8w3sn96nmwp5mrzifcigk7khw9qcgyyyqayfh")) + "05ifil6jj9424sr8kmircl8k4bmxnl3y12a79vwj1kxxva5gz50g")) (file-name (git-file-name "blis" version)))) + (native-inputs + `(("python" ,python) + ("perl" ,perl))) (build-system gnu-build-system) (arguments - `(#:test-target "test" - - #:substitutable? ,substitutable? - - #:phases (modify-phases %standard-phases - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - ;; This is a home-made 'configure' script. - (let ((out (assoc-ref outputs "out"))) - (invoke "./configure" "-p" out - "-d" "opt" - "--disable-static" - "--enable-shared" - "--enable-threading=openmp" - - ,implementation)))) - (add-before 'check 'show-test-output - (lambda _ - ;; By default "make check" is silent. Make it verbose. - (system "tail -F output.testsuite &") - #t))))) + `(#:modules + ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-1)) + #:test-target "test" + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key outputs + target + system + (configure-flags '()) + #:allow-other-keys) + ;; This is a home-made 'configure' script. + (let* ((out (assoc-ref outputs "out")) + ;; Guix-specific support for choosing the configuration + ;; via #:configure-flags: see below for details. + (config-flag-prefix "--blis-config=") + (maybe-config-flag (find + (lambda (s) + (string-prefix? config-flag-prefix s)) + configure-flags)) + (configure-flags (if maybe-config-flag + (delete maybe-config-flag + configure-flags) + configure-flags)) + ;; Select the "configuration" to build. + ;; The "generic" configuration is non-optimized but + ;; portable (no assembly). + ;; The "x86_64" configuration family includes + ;; sub-configurations for all supported + ;; x86_64 microarchitectures. + ;; BLIS currently lacks runtime hardware detection + ;; for other architectures: see + ;; . + ;; Conservatively, we stick to "generic" on armhf, + ;; aarch64, and ppc64le for now. (But perhaps + ;; "power9", "cortexa9", and "cortexa57" might be + ;; general enough to use?) + ;; Another approach would be to use the "auto" + ;; configuration and make this package + ;; non-substitutable. + ;; The build is fairly intensive, though. + (blis-config + (cond + (maybe-config-flag + (substring maybe-config-flag + (string-length config-flag-prefix))) + ((string-prefix? "x86_64" (or target system)) + "x86_64") + (else + "generic"))) + (configure-args + `("-p" ,out + "-d" "opt" + "--disable-static" + "--enable-shared" + "--enable-threading=openmp" + "--enable-verbose-make" + ,@configure-flags + ,blis-config))) + (format #t "configure args: ~s~%" configure-args) + (apply invoke + "./configure" + configure-args) + #t))) + (add-before 'check 'show-test-output + (lambda _ + ;; By default "make check" is silent. Make it verbose. + (system "tail -F output.testsuite &") + #t))))) (synopsis "High-performance basic linear algebra (BLAS) routines") (description "BLIS is a portable software framework for instantiating high-performance @@ -3772,35 +3986,12 @@ it also includes a BLAS compatibility layer which gives application developers access to BLIS implementations via traditional BLAS routine calls.") (license license:bsd-3))) -(define-public blis - ;; This is the "reference" implementation, which is the non-optimized but - ;; portable variant (no assembly). - (make-blis "reference" #t)) +(define-public blis-sandybridge (deprecated-package "blis-sandybridge" blis)) +(define-public blis-haswell (deprecated-package "blis-haswell" blis)) +(define-public blis-knl (deprecated-package "blis-knl" blis)) (define ignorance blis) -(define-syntax-rule (blis/x86_64 processor) - "Expand to a package specialized for PROCESSOR." - (package - (inherit (make-blis processor)) - (supported-systems '("x86_64-linux")))) - -(define-public blis-sandybridge - ;; BLIS specialized for Sandy Bridge processors (launched 2011): - ;; . - (blis/x86_64 "sandybridge")) - -(define-public blis-haswell - ;; BLIS specialized for Haswell processors (launched 2013): - ;; . - (blis/x86_64 "haswell")) - -(define-public blis-knl - ;; BLIS specialized for Knights Landing processor (launched 2016): - ;; . - (blis/x86_64 "knl")) - - (define-public openlibm (package (name "openlibm") @@ -3881,7 +4072,7 @@ Fresnel integrals, and similar related functions as well.") (define-public suitesparse (package (name "suitesparse") - (version "5.8.1") + (version "5.9.0") (source (origin (method git-fetch) @@ -3891,7 +4082,7 @@ Fresnel integrals, and similar related functions as well.") (file-name (git-file-name name version)) (sha256 (base32 - "0qjlyfxs8s48rs63c2fzspisgq1kk4bwkgnhmh125hgkdhrq2w1c")) + "1zhkix58afw92s7p291prljdm3yi0pjg1kbi3lczdb8rb14jkz5n")) (patches (search-patches "suitesparse-mongoose-cmake.patch")) (modules '((guix build utils))) (snippet @@ -3901,9 +4092,9 @@ Fresnel integrals, and similar related functions as well.") #t)))) (build-system gnu-build-system) (arguments - '(#:tests? #f ;no "check" target + `(#:tests? #f ;no "check" target #:make-flags - (list "CC=gcc" + (list (string-append "CC=" ,(cc-for-target)) "TBB=-ltbb" "MY_METIS_LIB=-lmetis" ;; Flags for cmake (required to build GraphBLAS and Mongoose) @@ -3913,7 +4104,8 @@ Fresnel integrals, and similar related functions as well.") " -DCMAKE_C_FLAGS_RELEASE=\"$(CFLAGS) $(CPPFLAGS)\"" " -DCMAKE_CXX_FLAGS_RELEASE=\"$(CXXFLAGS) $(CPPFLAGS)\"" " -DCMAKE_SKIP_RPATH=TRUE" - " -DCMAKE_BUILD_TYPE=Release") + " -DCMAKE_BUILD_TYPE=Release" + " -DCMAKE_INSTALL_LIBDIR=lib") (string-append "INSTALL_LIB=" (assoc-ref %outputs "out") "/lib") (string-append "INSTALL_INCLUDE=" @@ -4071,6 +4263,34 @@ done in the BIOS, or, on GNU/Linux, with the following command: Failure to do so will result in a library with poor performance.") (license license:bsd-3))) +(define-public cglm + (package + (name "cglm") + (version "0.8.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/recp/cglm") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1lcfl9ph4bnl3hckpx4hzwh8r4llnw94ik75igc5qy38wk468gmk")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags + (list "-DCGLM_USE_TEST=ON"))) + (home-page "https://github.com/recp/cglm") + (synopsis "Mathematics C library for graphics programming") + (description + "@acronym{CGLM, C OpenGL Mathematics} is an optimised 3D maths library +for graphics software based on the @acronym{GLSL, OpenGL Shading Language} +specifications. + +It's similar to the original C++ GLM library but written in C99 and compatible +with C89.") + (license license:expat))) + (define-public glm (package (name "glm") @@ -4349,7 +4569,7 @@ evaluates expressions using the standard order of operations.") (define-public xaos (package (name "xaos") - (version "4.0") + (version "4.2.1") (source (origin (method git-fetch) (uri (git-reference @@ -4358,7 +4578,7 @@ evaluates expressions using the standard order of operations.") (file-name (git-file-name name version)) (sha256 (base32 - "00110p5xscjsmn7avfqgydn656zbmdj3l3y2fpv9b4ihzpid8n7a")))) + "0maw5am6rrkyjrprfg113zjq37mqj0iaznkg4h2927ff7wrprc94")))) (build-system gnu-build-system) (native-inputs `(("gettext" ,gettext-minimal) ("qtbase" ,qtbase) @@ -4381,12 +4601,14 @@ evaluates expressions using the standard order of operations.") (replace 'configure (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) - ;; The DESTDIR is originally set to install the xaos binary to - ;; the "bin" folder inside the build directory. Setting make - ;; flags doesn't seem to change this. (substitute* "XaoS.pro" + ;; The DESTDIR is originally set to install the xaos binary to + ;; the "bin" folder inside the build directory. Setting make + ;; flags doesn't seem to change this. (("DESTDIR.*$") - (string-append "DESTDIR=" out "/bin"))) + (string-append "DESTDIR=" out "/bin")) + ;; Set the correct path to the lrelease binary. + (("lrelease-qt5") "lrelease")) (substitute* "src/include/config.h" (("/usr/share/XaoS") (string-append out "/share/XaoS"))) @@ -4423,7 +4645,7 @@ set.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/LLNL/hypre") + (url "https://github.com/hypre-space/hypre") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -4509,7 +4731,8 @@ set.") '("HYPRE_usr_manual" "HYPRE_ref_manual"))) #t)))))) - (home-page "http://www.llnl.gov/casc/hypre/") + (home-page "https://computing.llnl.gov/projects\ +/hypre-scalable-linear-solvers-multigrid-methods") (synopsis "Library of solvers and preconditioners for linear equations") (description "HYPRE is a software library of high performance preconditioners and @@ -4543,7 +4766,7 @@ structured and unstructured grid problems."))) (define-public matio (package (name "matio") - (version "1.5.6") + (version "1.5.19") (source (origin (method url-fetch) @@ -4551,7 +4774,7 @@ structured and unstructured grid problems."))) "matio-" version ".tar.gz")) (sha256 (base32 - "0y2qymgxank8wdiwc68ap8bxdzrhvyw86i29yh3xgn4z1njfd9ir")))) + "0vr8c1mz1k6mz0sgh6n3scl5c3a71iqmy5fnydrgq504icj4vym4")))) (build-system gnu-build-system) (inputs `(("zlib" ,zlib) @@ -4842,7 +5065,7 @@ theories} (SMT) solver. It provides a C/C++ API, as well as Python bindings.") ;; Test scripts are generated, patch the shebang (("#!/bin/bash") (string-append "#!" (which "sh")))) #t))))) - (home-page "http://elpa.mpcdf.mpg.de") + (home-page "https://elpa.mpcdf.mpg.de") (synopsis "Eigenvalue solvers for symmetric matrices") (description "The ELPA library provides efficient and scalable direct eigensolvers for @@ -5935,7 +6158,7 @@ researchers and developers alike to get started on SAT.") (define-public libqalculate (package (name "libqalculate") - (version "3.8.0") + (version "3.19.0") (source (origin (method git-fetch) @@ -5944,7 +6167,7 @@ researchers and developers alike to get started on SAT.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1vbaza9c7159xf2ym90l0xkyj2mp6c3hbghhsqn29yvz08fda9df")) + (base32 "1w44407wb552q21dz4m2nwwdi8b9hzjb2w1l3ffsikzqckc7wbyj")) (patches (search-patches "libqalculate-3.8.0-libcurl-ssl-fix.patch")))) (build-system gnu-build-system) @@ -6042,3 +6265,140 @@ and conversions, physical constants, symbolic calculations (including integrals and equations), arbitrary precision, uncertainty propagation, interval arithmetic, plotting.") (license license:gpl2+))) + +(define-public numdiff + (package + (name "numdiff") + (version "5.9.0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://savannah/numdiff/numdiff-" + version ".tar.gz")) + (sha256 + (base32 + "1vzmjh8mhwwysn4x4m2vif7q2k8i19x8azq7pzmkwwj4g48lla47")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; There are no tests. + #:phases + (modify-phases %standard-phases + (add-before 'compress-documentation 'delete-precompressed-info-file + (lambda _ + (delete-file (string-append (assoc-ref %outputs "out") + "/share/info/numdiff.info.gz")) + #t))))) + (home-page "https://nongnu.org/numdiff/") + (synopsis "Compare files with numeric fields") + (description + "Numdiff compares files line by line and field by field, ignoring small +numeric differences and differences in numeric formats.") + (license license:gpl3+))) + +(define-public why3 + (package + (name "why3") + (version "1.3.1") + (source (origin + (method url-fetch) + (uri (string-append "https://gforge.inria.fr/frs/download.php/file" + "/38291/why3-" version ".tar.gz")) + (sha256 + (base32 + "16zcrc60zz2j3gd3ww93z2z9x2jkxb3kr57y8i5rcgmacy7mw3bv")))) + (build-system ocaml-build-system) + (native-inputs + `(("coq" ,coq) + ("ocaml" ,ocaml) + ("which" ,which))) + (propagated-inputs + `(("camlzip" ,camlzip) + ("ocaml-graph" ,ocaml-graph) + ("ocaml-menhir" ,ocaml-menhir) + ("ocaml-num" ,ocaml-num) + ("ocaml-zarith" ,ocaml-zarith))) + (inputs + `(("coq-flocq" ,coq-flocq) + ("emacs-minimal" ,emacs-minimal) + ("zlib" ,zlib))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'configure 'fix-configure + (lambda _ + (setenv "CONFIG_SHELL" (which "sh")) + (substitute* "configure" + ;; find ocaml-num in the correct directory + (("\\$DIR/nums.cma") "$DIR/../nums.cma") + (("\\$DIR/num.cmi") "$DIR/../num.cmi")) + #t)) + (add-after 'configure 'fix-makefile + (lambda _ + (substitute* "Makefile" + ;; find ocaml-num in the correct directory + (("site-lib/num") "site-lib")) + #t)) + (add-after 'install 'install-lib + (lambda _ + (invoke "make" "byte") + (invoke "make" "install-lib") + #t))))) + (home-page "http://why3.lri.fr") + (synopsis "Deductive program verification") + (description "Why3 provides a language for specification and programming, +called WhyML, and relies on external theorem provers, both automated and +interactive, to discharge verification conditions. Why3 comes with a standard +library of logical theories (integer and real arithmetic, Boolean operations, +sets and maps, etc.) and basic programming data structures (arrays, queues, +hash tables, etc.). A user can write WhyML programs directly and get +correct-by-construction OCaml programs through an automated extraction +mechanism. WhyML is also used as an intermediate language for the verification +of C, Java, or Ada programs.") + (license license:lgpl2.1))) + +(define-public frama-c + (package + (name "frama-c") + (version "22.0") + (source (origin + (method url-fetch) + (uri (string-append "http://frama-c.com/download/frama-c-" + version "-Titanium.tar.gz")) + (sha256 + (base32 + "1mq1fijka95ydrla486yr4w6wdl9l7vmp512s1q00b0p6lmfwmkh")))) + (build-system ocaml-build-system) + (arguments + `(#:tests? #f; no test target in Makefile + #:phases + (modify-phases %standard-phases + (add-before 'configure 'export-shell + (lambda* (#:key inputs #:allow-other-keys) + (setenv "CONFIG_SHELL" (string-append (assoc-ref inputs "bash") + "/bin/sh")) + #t))))) + (inputs + `(("gmp" ,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))) + (native-search-paths + (list (search-path-specification + (variable "FRAMAC_SHARE") + (files '("share/frama-c")) + (separator #f)) + (search-path-specification + (variable "FRAMAC_LIB") + (files '("lib/frama-c")) + (separator #f)))) + (home-page "http://frama-c.com") + (synopsis "C source code analysis platform") + (description "Frama-C is an extensible and collaborative platform dedicated +to source-code analysis of C software. The Frama-C analyzers assist you in +various source-code-related activities, from the navigation through unfamiliar +projects up to the certification of critical software.") + (license license:lgpl2.1+)))