X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/6ca2d7dae09953fcff59e6332f131c3a40eb05bf..ade7638d84779b58d5a4c961666bcb35ebf43394:/gnu/packages/maths.scm diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 73ee161e81..ce393cba80 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -5,28 +5,28 @@ ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Eric Bavier ;;; Copyright © 2014 Federico Beffa ;;; Copyright © 2014 Mathieu Lirzin -;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus +;;; 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 Efraim Flashner +;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner ;;; Copyright © 2015 Fabian Harfert ;;; Copyright © 2016 Roel Janssen ;;; Copyright © 2016, 2018, 2020 Kei Kebreau -;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès +;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ludovic Courtès ;;; Copyright © 2016 Leo Famulari ;;; Copyright © 2016, 2017 Thomas Danckaert ;;; Copyright © 2017, 2018, 2019, 2020 Paul Garlick -;;; Copyright © 2017 ng0 +;;; Copyright © 2017 Nikita ;;; Copyright © 2017 Ben Woodcroft ;;; Copyright © 2017 Theodoros Foradis ;;; Copyright © 2017, 2019 Arun Isaac -;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice +;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice ;;; Copyright © 2017 Dave Love -;;; Copyright © 2018, 2019 Jan Nieuwenhuizen +;;; Copyright © 2018, 2019, 2020 Jan Nieuwenhuizen ;;; Copyright © 2018 Joshua Sierles, Nextjournal ;;; Copyright © 2018 Nadya Voronova ;;; Copyright © 2018 Adam Massmann -;;; Copyright © 2018 Marius Bakke +;;; Copyright © 2018, 2020 Marius Bakke ;;; Copyright © 2018 Eric Brown ;;; Copyright © 2018 Julien Lepiller ;;; Copyright © 2018 Amin Bandali @@ -38,6 +38,8 @@ ;;; Copyright © 2020 R Veera Kumar ;;; Copyright © 2020 Vincent Legoll ;;; Copyright © 2020 Nicolò Balzarotti +;;; Copyright © 2020 B. Wilson +;;; Copyright © 2020 Vinicius Monego ;;; ;;; This file is part of GNU Guix. ;;; @@ -133,7 +135,8 @@ #:use-module (gnu packages version-control) #:use-module (gnu packages wxwidgets) #:use-module (gnu packages xml) - #:use-module (srfi srfi-1)) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26)) (define-public aris (package @@ -227,15 +230,15 @@ programming languages.") (define-public qhull (package (name "qhull") - (version "2015.2") + (version "2019.1") (source (origin (method url-fetch) (uri (string-append "http://www.qhull.org/download/qhull-" (car (string-split version #\.)) - "-src-7.2.0.tgz")) + "-src-7.3.2.tgz")) (sha256 (base32 - "0dm4b2xr3asy6w74khq2zg4gf26zsy3qf9sq7pf7lmrvbj911c3q")))) + "1ys3vh3qq0v9lh452xb932vp63advds1pxk42lk7cc1niiar0y9b")))) (build-system cmake-build-system) (synopsis "Calculate convex hulls and related structures") (description @@ -262,7 +265,7 @@ triangulations.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/cvxopt/cvxopt.git") + (url "https://github.com/cvxopt/cvxopt") (commit version))) (file-name (git-file-name name version)) (sha256 @@ -460,23 +463,46 @@ precision floating point numbers.") (define-public gsl (package (name "gsl") - (version "2.5") + (version "2.6") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/gsl/gsl-" version ".tar.gz")) (sha256 (base32 - "1395y9hlhqadn5g9j8q22224fds5sd92jxi9czfavjj24myasq04")) - (patches (search-patches "gsl-test-i686.patch")))) + "1a460zj9xmbgvcymkdhqh313c4l29mn9cffbi5vf33x3qygk70mp")))) (build-system gnu-build-system) (arguments - `(;; Currently there are numerous tests that fail on "exotic" - ;; architectures such as aarch64 and ppc64le. - ,@(if (string-prefix? "aarch64-linux" - (or (%current-target-system) (%current-system))) - '(#:tests? #f) - '()))) + (let ((system (%current-system))) + (cond + ((or (string-prefix? "aarch64" system) + (string-prefix? "powerpc" system)) + ;; Some sparse matrix tests are failing on AArch64 and PowerPC: + ;; https://lists.gnu.org/archive/html/bug-gsl/2020-04/msg00001.html + '(#:phases (modify-phases %standard-phases + (add-before 'check 'disable-failing-tests + (lambda _ + (substitute* "spmatrix/test.c" + ((".*test_complex.*") "\n")) + #t))))) + ((string-prefix? "i686" system) + ;; There are rounding issues with these tests on i686: + ;; https://lists.gnu.org/archive/html/bug-gsl/2016-10/msg00000.html + ;; https://lists.gnu.org/archive/html/bug-gsl/2020-04/msg00000.html + '(#:phases (modify-phases %standard-phases + (add-before 'check 'disable-failing-tests + (lambda _ + (substitute* "linalg/test.c" + ((".*gsl_test\\(test_LU_decomp.*") "\n") + ((".*gsl_test\\(test_LUc_decomp.*") "\n") + ((".*gsl_test\\(test_cholesky_decomp.*") "\n") + ((".*gsl_test\\(test_COD_lssolve2.*") "\n")) + (substitute* "spmatrix/test.c" + ((".*test_all.*") "\n") + ((".*test_float.*") "\n") + ((".*test_complex.*") "\n")) + #t))))) + (else '())))) (home-page "https://www.gnu.org/software/gsl/") (synopsis "Numerical library for C and C++") (description @@ -487,6 +513,50 @@ differential equations, linear algebra, Fast Fourier Transforms and random numbers.") (license license:gpl3+))) +(define-public sleef + (package + (name "sleef") + (version "3.4.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/shibatch/sleef") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1gvf7cfvszmgjrsqivwmyy1jnp3hy80dmszxx827lhjz8yqq5019")))) + (build-system cmake-build-system) + (arguments + '(#:configure-flags (list "-DCMAKE_BUILD_TYPE=Release" + (string-append "-DCMAKE_INSTALL_LIBDIR=" + (assoc-ref %outputs "out") + "/lib") + (string-append "-DCMAKE_INSTALL_PREFIX=" + (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + ;; SLEEF generates a header library during the build process and writes + ;; to it via shell redirection. Make the checkout writable so the + ;; build can succeed. + (add-after 'unpack 'make-git-checkout-writable + (lambda _ + (for-each make-file-writable (find-files ".")) + #t))))) + (inputs + `(("fftw" ,fftw) + ("gmp" ,gmp) + ("mpfr" ,mpfr) + ("openssl" ,openssl))) + (home-page "https://sleef.org/") + (synopsis "SIMD library for evaluating elementary functions and DFT") + (description + "SLEEF (SIMD Library for Evaluating Elementary Functions) is a library that +implements vectorized versions of all C99 real floating point math functions. +It can utilize SIMD instructions that are available on modern processors.") + (license (list license:boost1.0 ;sleef + license:cc-by4.0)))) ;simplex algorithm + (define-public glpk (package (name "glpk") @@ -571,7 +641,7 @@ computing convex hulls.") (define-public lrslib (package (name "lrslib") - (version "7.0a") + (version "7.1") (source (origin (method url-fetch) @@ -580,7 +650,7 @@ computing convex hulls.") (string-delete #\. version) ".tar.gz")) (sha256 (base32 - "034fa45r9hwx6ljmgpxk2872q34nklkalpdkc6s9hqw57rivi36k")))) + "05kq3hzam31dlmkccv3v358r478kpvx76mw37ka12c6ypwv5dsnk")))) (build-system gnu-build-system) (inputs `(("gmp" ,gmp))) @@ -740,6 +810,62 @@ problems in numerical linear algebra.") (license (license:non-copyleft "file://LICENSE" "See LICENSE in the distribution.")))) +(define-public clapack + (package + (name "clapack") + (version "3.2.1") + (source + (origin + (method url-fetch) + (uri (string-append "http://www.netlib.org/clapack/clapack-" + version "-CMAKE.tgz")) + (sha256 + (base32 + "0nnap9q1mv14g57dl3vkvxrdr10k5w7zzyxs6rgxhia8q8mphgqb")))) + (build-system cmake-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; These tests use a lot of stack variables and segfault without + ;; lifting resource limits. + (add-after 'unpack 'disable-broken-tests + (lambda _ + (substitute* "TESTING/CMakeLists.txt" + (("add_lapack_test.* xeigtstz\\)") "")) + #t)) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (libdir (string-append out "/lib")) + (f2cinc (string-append out "/include/libf2c"))) + (mkdir-p f2cinc) + (display (getcwd)) + (for-each (lambda (file) + (install-file file libdir)) + '("SRC/liblapack.a" + "F2CLIBS/libf2c/libf2c.a" + "TESTING/MATGEN/libtmglib.a" + "BLAS/SRC/libblas.a")) + (for-each (lambda (file) + (install-file file f2cinc)) + (cons "F2CLIBS/libf2c/arith.h" + (find-files (string-append "../clapack-" + ,version "-CMAKE/F2CLIBS/libf2c") + "\\.h$"))) + (copy-recursively (string-append "../clapack-" + ,version "-CMAKE/INCLUDE") + (string-append out "/include")) + #t)))))) + (home-page "https://www.netlib.org/clapack/") + (synopsis "Numerical linear algebra library for C") + (description + "The CLAPACK library was built using a Fortran to C conversion utility +called f2c. The entire Fortran 77 LAPACK library is run through f2c to obtain +C code, and then modified to improve readability. CLAPACK's goal is to +provide LAPACK for someone who does not have access to a Fortran compiler.") + (license (license:non-copyleft "file://LICENSE" + "See LICENSE in the distribution.")))) + (define-public scalapack (package (name "scalapack") @@ -816,7 +942,7 @@ plotting engine by third-party applications like Octave.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/OkoSanto/GCTP.git") + (url "https://github.com/OkoSanto/GCTP") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -856,7 +982,7 @@ computations.") ("flex" ,flex))) (inputs `(("zlib" ,zlib) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libtirpc" ,libtirpc))) (arguments `(#:parallel-tests? #f @@ -897,7 +1023,17 @@ computations.") (("(/gnu/store/)([a-Z0-9]*)" all prefix hash) (string-append prefix (string-take hash 10) "..."))) #t)) - ))) + (add-after 'install 'provide-absolute-libjpeg-reference + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (libjpeg (assoc-ref inputs "libjpeg"))) + ;; libjpeg-turbo does not provide a .la file, so libtool is + ;; unable to add an absolute reference for -ljpeg in the .la + ;; files. Fix it manually to avoid having to propagate it. + (substitute* (find-files (string-append out "/lib") "\\.la$") + (("-ljpeg") + (string-append "-L" libjpeg "/lib -ljpeg"))) + #t)))))) (home-page "https://www.hdfgroup.org/products/hdf4/") (synopsis "Library and multi-object file format for storing and managing data") @@ -918,7 +1054,7 @@ incompatible with HDF5.") (synopsis "HDF4 without netCDF API, can be combined with the regular netCDF library"))) -(define-public hdf5 +(define-public hdf5-1.8 (package (name "hdf5") (version "1.8.21") @@ -1046,23 +1182,27 @@ extremely large and complex data collections.") "https://www.hdfgroup.org/ftp/HDF5/current/src/unpacked/COPYING")))) (define-public hdf5-1.10 - (package (inherit hdf5) - (version "1.10.6") + (package/inherit hdf5-1.8 + (version "1.10.7") (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 "1gf38x51128hn00744358w27xgzjk0ff4wra4yxh2lk804ck1mh9")) - (patches (search-patches "hdf5-config-date.patch")))))) + (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 "0pm5xxry55i0h7wmvc7svzdaa90rnk7h78rrjmnlkz2ygsn8y082")) + (patches (search-patches "hdf5-config-date.patch")))))) + +(define-public hdf5 + ;; Default version of HDF5. + hdf5-1.8) (define-public hdf-java (package @@ -1096,7 +1236,7 @@ extremely large and complex data collections.") `(("hdf4" ,hdf4) ("hdf5" ,hdf5) ("zlib" ,zlib) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("slf4j-api" ,java-slf4j-api))) (arguments `(#:configure-flags @@ -1153,10 +1293,15 @@ extremely large and complex data collections.") (jhdf (string-append lib "/jhdf.jar")) (jhdf5 (string-append lib "/jhdf5.jar")) (testjars - (map (lambda (i) - (string-append (assoc-ref inputs i) - "/share/java/" i ".jar")) - '("junit" "hamcrest-core" "slf4j-api" "slf4j-simple"))) + (append + (map (lambda (i) + (string-append (assoc-ref inputs i) + "/share/java/" i ".jar")) + '("slf4j-api" "slf4j-simple")) + (list + (car (find-files (assoc-ref inputs "junit") "jar$")) + (car (find-files (assoc-ref inputs "hamcrest-core") + "jar$"))))) (class-path (string-join `("." ,build-dir ,jhdf ,jhdf5 ,@testjars) ":"))) @@ -1213,7 +1358,7 @@ implemented in C.") `(("hdf4" ,hdf4-alt) ; assume most HDF-EOS2 users won't use the HDF4 netCDF API ;; XXX: These inputs are really dependencies of hdf4. ("zlib" ,zlib) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libtirpc" ,libtirpc) ("gctp" ,gctp))) @@ -1267,7 +1412,7 @@ Swath).") (license (license:non-copyleft home-page)))) (define-public hdf5-parallel-openmpi - (package (inherit hdf5) + (package/inherit hdf5-1.10 ;use the latest (name "hdf5-parallel-openmpi") (inputs `(("mpi" ,openmpi) @@ -1293,11 +1438,50 @@ Swath).") (substitute* "testpar/Makefile" (("(^TEST_PROG_PARA.*)t_pflush1(.*)" front back) (string-append front back "\n"))) - (substitute* "tools/h5diff/testph5diff.sh" + (substitute* "tools/test/h5diff/testph5diff.sh" (("/bin/sh") (which "sh"))) #t)))))) (synopsis "Management suite for data with parallel IO support"))) +(define-public hdf5-blosc + (package + (name "hdf5-blosc") + (version "1.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Blosc/hdf5-blosc") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1nj2bm1v6ymm3fmyvhbn6ih5fgdiapavlfghh1pvbmhw71cysyqs")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags + (list (string-append "-DBLOSC_INSTALL_DIR=" + (assoc-ref %build-inputs "c-blosc")) + (string-append "-DPLUGIN_INSTALL_PATH=" + (assoc-ref %outputs "out") + "/hdf5/lib/plugin")) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'do-not-build-blosc + (lambda _ + (substitute* "CMakeLists.txt" + (("set\\(BLOSC_INSTALL_DIR.*") "") + (("ExternalProject_Add\\(project_blosc") "message(")) + #t))))) + (inputs + `(("c-blosc" ,c-blosc) + ("hdf5" ,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 +installing this filter, you can read and write HDF5 files with +Blosc-compressed datasets.") + (license license:expat))) + (define-public h5check (package (name "h5check") @@ -1373,7 +1557,7 @@ similar to MATLAB, GNU Octave or SciPy.") `(("hdf4" ,hdf4-alt) ("hdf5" ,hdf5) ("zlib" ,zlib) - ("libjpeg" ,libjpeg))) + ("libjpeg" ,libjpeg-turbo))) (arguments `(#:configure-flags '("--enable-doxygen" "--enable-dot" "--enable-hdf4") @@ -1424,7 +1608,11 @@ sharing of scientific data.") "--enable-parallel-tests" ;; Shared libraries not supported with parallel IO. "--disable-shared" "--with-pic" - ,flags)))))) + ,flags)) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-after 'build 'mpi-setup + ,%openmpi-setup))))))) (define-public netcdf-fortran (package @@ -1495,7 +1683,7 @@ online as well as original implementations of various other algorithms.") (source (origin (method url-fetch) (uri (string-append - "http://www.coin-or.org/download/source/Ipopt/Ipopt-" + "https://www.coin-or.org/download/source/Ipopt/Ipopt-" version".tgz")) (sha256 (base32 @@ -1529,7 +1717,7 @@ online as well as original implementations of various other algorithms.") (inputs ;; TODO: Maybe add dependency on COIN-MUMPS, ASL, and HSL. `(("lapack" ,lapack))) ;for both libblas and liblapack - (home-page "http://www.coin-or.org") + (home-page "https://www.coin-or.org") (synopsis "Large-scale nonlinear optimizer") (description "The Interior Point Optimizer (IPOPT) is a software package for @@ -1540,14 +1728,14 @@ interfaces.") (define-public clp (package (name "clp") - (version "1.17.1") + (version "1.17.6") (source (origin (method url-fetch) (uri (string-append "https://www.coin-or.org/download/source/" "Clp/Clp-" version ".tgz")) (sha256 (base32 - "1wdg820g3iikf9344ijwsc8sy6c0m6im42bzzizm6rlmkvnmxhk9")) + "0ap1f0lxppa6pnbc4bg7ih7a96avwaki482nig8w5fr3vg9wvkzr")) (modules '((guix build utils))) (snippet ;; Make sure we don't use the bundled software. @@ -1569,6 +1757,84 @@ linear and quadratic objectives. There are limited facilities for nonlinear and quadratic objectives using the Simplex algorithm.") (license license:epl1.0))) +(define-public libflame + (package + (name "libflame") + (version "5.2.0") + (outputs '("out" "static")) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/flame/libflame") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1n6lf0wvpp77lxqlr721h2jbfbzigphdp19wq8ajiccilcksh7ay")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + ;; Sensible defaults: https://github.com/flame/libflame/issues/28 + (list "--enable-dynamic-build" + "--enable-max-arg-list-hack" + "--enable-lapack2flame" + "--enable-verbose-make-output" + "--enable-multithreading=pthreads" ; Openblas isn't built with openmp. + ,@(if (any (cute string-prefix? <> (or (%current-target-system) + (%current-system))) + '("x86_64" "i686")) + '("--enable-vector-intrinsics=sse") + '()) + "--enable-supermatrix" + "--enable-memory-alignment=16" + "--enable-ldim-alignment") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-/usr/bin/env-bash + (lambda _ + (substitute* "build/config.mk.in" + (("/usr/bin/env bash") (which "bash"))) + #t)) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (substitute* "test/Makefile" + (("LIBBLAS .*") "LIBBLAS = -lblas\n") + (("LIBLAPACK .*") "LIBLAPACK = -llapack\n")) + (if tests? + (with-directory-excursion "test" + (mkdir "obj") + (invoke "make") + (invoke "./test_libflame.x")) + #t))) + (add-after 'install 'install-static + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (static (assoc-ref outputs "static"))) + (mkdir-p (string-append static "/lib")) + (rename-file (string-append out "/lib/libflame.a") + (string-append static "/lib/libflame.a")) + (install-file (string-append out "/include/FLAME.h") + (string-append static "/include")) + #t)))))) + (inputs + `(("gfortran" ,gfortran))) + (native-inputs + `(("lapack" ,lapack) + ("openblas" ,openblas) + ("perl" ,perl) + ("python" ,python-wrapper))) + (home-page "https://github.com/flame/libflame") + (synopsis "High-performance object-based library for DLA computations") + (description "@code{libflame} is a portable library for dense matrix +computations, providing much of the functionality present in LAPACK, developed +by current and former members of the @acronym{SHPC, Science of High-Performance +Computing} group in the @url{https://www.ices.utexas.edu/, Institute for +Computational Engineering and Sciences} at The University of Texas at Austin. +@code{libflame} includes a compatibility layer, @code{lapack2flame}, which +includes a complete LAPACK implementation.") + (license license:bsd-3))) + (define-public ceres (package (name "ceres-solver") @@ -1646,6 +1912,12 @@ can solve two kinds of problems: ("glpk" ,glpk) ("glu" ,glu) ("graphicsmagick" ,graphicsmagick) + + ;; TODO: libjpeg-turbo is indirectly required through libtiff. In + ;; the next rebuild cycle, add an absolute reference for -ljpeg in + ;; libtiff.la instead of having to provide it here. + ("libjpeg" ,libjpeg-turbo) + ("hdf5" ,hdf5) ("lapack" ,lapack) ("libsndfile" ,libsndfile) @@ -1684,7 +1956,12 @@ can solve two kinds of problems: `(#:configure-flags (list (string-append "--with-shell=" (assoc-ref %build-inputs "bash") - "/bin/sh")) + "/bin/sh") + + ;; XXX: Without this flag, linking octave-cli fails with + ;; undefined references to 'logf@GLIBCXX_3.4' et.al. due to + ;; not pulling in liboctinterp.la for -lstdc++. + "--enable-link-all-dependencies") #:phases (modify-phases %standard-phases (add-after 'configure 'configure-makeinfo @@ -1706,8 +1983,6 @@ script files.") (define-public octave (package (inherit octave-cli) (name "octave") - (source (origin - (inherit (package-source octave-cli)))) (inputs `(("qscintilla" ,qscintilla) ("qt" ,qtbase) @@ -1739,7 +2014,7 @@ script files.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/tpaviot/oce.git") + (url "https://github.com/tpaviot/oce") (commit (string-append "OCE-" version)))) (file-name (git-file-name name version)) (patches (search-patches "opencascade-oce-glibc-2.26.patch")) @@ -1930,6 +2205,70 @@ modules is done either interactively using the graphical user interface or in ASCII text files using Gmsh's own scripting language.") (license license:gpl2+))) +(define-public veusz + (package + (name "veusz") + (version "3.2.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "veusz" version)) + (sha256 + (base32 "00vmfpvyd6f33l5awlf02qdik3gmbhzyfizfwwbx7qnam2i9bbwy")))) + (build-system python-build-system) + (arguments + `(;; Tests will fail because they depend on optional packages like + ;; python-astropy, which is not packaged. + #:tests? #f + #:phases + (modify-phases %standard-phases + ;; Veusz will append 'PyQt5' to sip_dir by default. That is not how + ;; the path is defined in Guix, therefore we have to change it. + (add-after 'unpack 'fix-sip-dir + (lambda _ + (substitute* "pyqtdistutils.py" + (("os.path.join\\(sip_dir, 'PyQt5'\\)") "sip_dir")) + #t)) + ;; Now we have to pass the correct sip_dir to setup.py. + (replace 'build + (lambda* (#:key inputs #:allow-other-keys) + ;; We need to tell setup.py where to locate QtCoremod.sip + ((@@ (guix build python-build-system) call-setuppy) + "build_ext" + (list (string-append "--sip-dir=" + (assoc-ref inputs "python-pyqt") + "/share/sip")) + #t))) + ;; Ensure that icons are found at runtime. + (add-after 'install 'wrap-executable + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (wrap-program (string-append out "/bin/veusz") + `("QT_PLUGIN_PATH" prefix + ,(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))) + (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) + ("qtsvg" ,qtsvg))) + (propagated-inputs + `(("python-numpy" ,python-numpy))) + (home-page "https://veusz.github.io/") + (synopsis "Scientific plotting package") + (description + "Veusz is a scientific plotting and graphing program with a graphical +user interface, designed to produce publication-ready 2D and 3D plots. In +addition it can be used as a module in Python for plotting. It supports +vector and bitmap output, including PDF, Postscript, SVG and EMF.") + (license license:gpl2+))) + (define-public maxflow (package (name "maxflow") @@ -1939,7 +2278,7 @@ ASCII text files using Gmsh's own scripting language.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/gerddie/maxflow.git") + (url "https://github.com/gerddie/maxflow") (commit version))) (file-name (git-file-name name version)) (sha256 @@ -2326,6 +2665,36 @@ message-passing communication. @code{slepc4py} provides Python bindings to almost all functions of SLEPc.") (license license:bsd-3))) +(define-public metamath + (package + (name "metamath") + (version "0.192") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/metamath/metamath-exe") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1k31zw36h2b0w5r6sbn9qc0v4hj42vw53qlhf5l7q2h3p5qlzvic")))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake))) + (home-page "http://us.metamath.org/") + (synopsis "Proof verifier based on a minimalistic formalism") + (description + "Metamath is a tiny formal language and that can express theorems in +abstract mathematics, with an accompyaning @command{metamath} executable that +verifies databases of these proofs. There is a public database, +@url{https://github.com/metamath/set.mm, set.mm}, implementing first-order +logic and Zermelo-Frenkel set theory with Choice, along with a large swath of +associated, high-level theorems, e.g.@: the fundamental theorem of arithmetic, +the Cauchy-Schwarz inequality, Stirling's formula, etc. See the Metamath +book.") + (license license:gpl2+))) + (define-public mumps (package (name "mumps") @@ -2502,28 +2871,17 @@ sparse system of linear equations A x = b using Gaussian elimination.") (define-public ruby-asciimath (package (name "ruby-asciimath") - (version "1.0.4") + (version "2.0.1") (source (origin (method url-fetch) (uri (rubygems-uri "asciimath" version)) (sha256 (base32 - "1d80kiph5mc78zps7si1hv48kv4k12mzaq8jk5kb3pqpjdr72qmc")))) + "1aapydwwkydbwgz07n7ma3a5jy9n3v0shy6q6j8mi4wr3crhx45a")))) (build-system ruby-build-system) - (arguments - '(#:phases - (modify-phases %standard-phases - ;; Apply this patch - ;; https://github.com/asciidoctor/asciimath/commit/1c06fdc8086077f4785479f78b0823a4a72d7948 - (add-after 'unpack 'patch-remove-spurious-backslashes - (lambda _ - (substitute* "spec/parser_spec.rb" - (("\\\\\"") - "\"")) - #t))))) (native-inputs - `(("bundler" ,bundler) + `(("ruby-nokogiri" ,ruby-nokogiri) ("ruby-rspec" ,ruby-rspec))) (synopsis "AsciiMath parsing and conversion library") (description @@ -2995,7 +3353,7 @@ to BMP, JPEG or PNG image formats.") (define-public maxima (package (name "maxima") - (version "5.43.0") + (version "5.44.0") (source (origin (method url-fetch) @@ -3003,7 +3361,7 @@ to BMP, JPEG or PNG image formats.") version "-source/" name "-" version ".tar.gz")) (sha256 (base32 - "0xyahp4c6509haxh4n1swiqm3421gplkdisa0zypclh3252sbzfw")) + "1v6jr5s6hhj6r18gfk6hgxk2qd6z1dxkrjq9ss2z1y6sqi45wgyr")) (patches (search-patches "maxima-defsystem-mkdir.patch")))) (build-system gnu-build-system) (inputs @@ -3110,16 +3468,16 @@ point numbers.") (define-public wxmaxima (package (name "wxmaxima") - (version "20.03.1") + (version "20.06.6") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/wxMaxima-developers/wxmaxima.git") + (url "https://github.com/wxMaxima-developers/wxmaxima") (commit (string-append "Version-" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "09ciip0wkahps5jdsqqr72bwjrd15bacw38zp23v3hm71xfk8hky")))) + (base32 "054f7n5kx75ng5j20rd5q27n9xxk03mrd7sbxyym1lsswzimqh4w")))) (build-system cmake-build-system) (native-inputs `(("gettext" ,gettext-minimal) @@ -3137,6 +3495,14 @@ point numbers.") `(#:test-target "test" #:phases (modify-phases %standard-phases + (add-after 'unpack 'patch-doc-path + (lambda _ + ;; Don't look in share/doc/wxmaxima-xx.xx.x for the + ;; documentation. Only licensing information is placed there by + ;; Guix. + (substitute* "src/Dirstructure.cpp" + (("/doc/wxmaxima-\\%s") "/doc/wxmaxima")) + #t)) (add-before 'check 'pre-check (lambda _ ;; Tests require a running X server. @@ -3223,7 +3589,7 @@ associated functions (e.g., contiguous and non-contiguous submatrix views).") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/beltoforion/muparser.git") + (url "https://github.com/beltoforion/muparser") (commit (string-append "v" upstream-version)))) (file-name (git-file-name name version)) (sha256 @@ -3243,7 +3609,7 @@ parts of it.") (define-public openblas (package (name "openblas") - (version "0.3.7") + (version "0.3.9") (source (origin (method url-fetch) @@ -3252,7 +3618,7 @@ parts of it.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0jbdjsi0qsxahdcm42agnn1y7xpmg0hrhwjsxg0zbhs9wwy3p568")))) + "14iz9xnrb9xiwgj84j94mc74gg0zn2vsy9fmsijxxma1n7dck4w3")))) (build-system gnu-build-system) (arguments `(#:test-target "test" @@ -3424,7 +3790,7 @@ access to BLIS implementations via traditional BLAS routine calls.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/JuliaLang/openlibm.git") + (url "https://github.com/JuliaLang/openlibm") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -3463,7 +3829,7 @@ environments.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/JuliaLang/openspecfun.git") + (url "https://github.com/JuliaLang/openspecfun") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -3501,7 +3867,7 @@ Fresnel integrals, and similar related functions as well.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/DrTimothyAldenDavis/SuiteSparse.git") + (url "https://github.com/DrTimothyAldenDavis/SuiteSparse") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -3688,16 +4054,43 @@ Failure to do so will result in a library with poor performance.") (define-public glm (package (name "glm") - (version "0.9.9.6") + (version "0.9.9.8") (source (origin (method url-fetch) (uri (string-append "https://github.com/g-truc/glm/releases/download/" version "/glm-" version ".zip")) (sha256 - (base32 "1l0pi1qi37mk6s0yrkrw07lspv4gcqnr9ryg3521hrl77ff37dwx")) - (patches (search-patches "glm-restore-install-target.patch")))) + (base32 "0k6yk9v46h690rshdx49x98y5qspkzibld1wb51jwcm35vba7qip")))) (build-system cmake-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + ;; Since version 0.9.9.6, 'make install' is not supported + ;; and we have to do it "manually". Upstream discussion: + ;; . + (let* ((source (string-append "../glm")) + (out (assoc-ref outputs "out")) + (inc (string-append out "/include")) + (lib (string-append out "/lib")) + (pkgconfig (string-append lib "/pkgconfig"))) + (with-directory-excursion source + (mkdir-p inc) + (mkdir-p pkgconfig) + (copy-recursively "glm" (string-append inc "/glm")) + (copy-recursively "cmake" (string-append lib "/cmake")) + (call-with-output-file (string-append pkgconfig "/glm.pc") + (lambda (port) + (format port + "prefix=~a +includedir=${prefix}/include + +Name: GLM +Description: OpenGL Mathematics +Version: ~a +Cflags: -I${includedir}~%" out ,(version-prefix version 3))))) + #t)))))) (native-inputs `(("unzip" ,unzip))) (home-page "https://glm.g-truc.net/") @@ -3854,26 +4247,28 @@ in finite element programs.") (define-public flann (package (name "flann") - (version "1.8.4") + (version "1.9.1") + (home-page "https://github.com/mariusmuja/flann/") (source (origin - (method url-fetch) - (uri - (string-append - "http://www.cs.ubc.ca/research/flann/uploads/FLANN/flann-" - version "-src.zip")) + (method git-fetch) + (uri (git-reference (url home-page) (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "022w8hph7bli5zbpnk3z1qh1c2sl5hm8fw2ccim651ynn0hr7fyz")) + "0p56fl2yx1r86ds1mgjq40926jdcgq3hka7p3l1hv2acv9jxp15x")) (patches (search-patches "flann-cmake-3.11.patch")))) (build-system cmake-build-system) - (outputs '("out" - "octave")) ;46 MiB .mex file that pulls Octave + (outputs '("out")) (native-inputs `(("unzip" ,unzip))) (inputs `(("hdf5" ,hdf5) - ("octave" ,octave-cli) + ;; FIXME: 'mkoctfile' fails with a linker error: + ;; ld: cannot find -loctinterp + ;; ld: cannot find -loctave + ;; Disable it for now. + ;;("octave" ,octave-cli) ("python" ,python-2) ; print syntax ;; ("python2-numpy" ,python2-numpy) ; only required for the tests ("zlib" ,zlib))) @@ -3886,14 +4281,6 @@ in finite element programs.") ;; Save 12 MiB by not installing .a files. Passing ;; '-DBUILD_STATIC_LIBS=OFF' has no effect. #:phases (modify-phases %standard-phases - (add-before 'configure 'set-octave-directory - (lambda* (#:key outputs #:allow-other-keys) - ;; Install the .mex file in the "octave" output. - (let ((out (assoc-ref outputs "octave"))) - (substitute* "src/matlab/CMakeLists.txt" - (("share/flann/octave") - (string-append out "/share/flann/octave"))) - #t))) (add-after 'install 'remove-static-libraries (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -3903,7 +4290,6 @@ in finite element programs.") #t)))) #:tests? #f)) ; The test data are downloaded from the Internet. - (home-page "http://www.cs.ubc.ca/research/flann/") (synopsis "Library for approximate nearest neighbors computation") (description "FLANN is a library for performing fast approximate nearest neighbor searches in high dimensional spaces. It implements a @@ -3943,30 +4329,70 @@ evaluates expressions using the standard order of operations.") (define-public xaos (package (name "xaos") - (version "3.6") + (version "4.0") (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/xaos/XaoS/" version - "/xaos-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/xaos-project/XaoS") + (commit (string-append "release-" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "15cd1cx1dyygw6g2nhjqq3bsfdj8sj8m4va9n75i0f3ryww3x7wq")))) + "00110p5xscjsmn7avfqgydn656zbmdj3l3y2fpv9b4ihzpid8n7a")))) (build-system gnu-build-system) - (native-inputs `(("gettext" ,gettext-minimal))) + (native-inputs `(("gettext" ,gettext-minimal) + ("qtbase" ,qtbase) + ("qttools" ,qttools))) (inputs `(("libx11" ,libx11) ("zlib" ,zlib) ("libpng" ,libpng) ("gsl" ,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 `(#:tests? #f ;no "check" target - #:make-flags '("LOCALEDIR=$DATAROOTDIR/locale"))) + #:phases + (modify-phases %standard-phases + (add-before 'configure 'make-qt-deterministic + (lambda _ + ;; Make Qt deterministic. + (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1") + #t)) + (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" + (("DESTDIR.*$") + (string-append "DESTDIR=" out "/bin"))) + (substitute* "src/include/config.h" + (("/usr/share/XaoS") + (string-append out "/share/XaoS"))) + (invoke "qmake")))) + (add-after 'install 'install-data + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (share (string-append out "/share"))) + (mkdir-p share) + (for-each + (lambda (folder) + (copy-recursively folder + (string-append share "/XaoS/" folder))) + '("catalogs" "examples" "tutorial")) + (install-file "xdg/xaos.png" + (string-append share "/pixmaps")) + (install-file "xdg/xaos.desktop" + (string-append share "/applications"))) + #t))))) (synopsis "Real-time fractal zoomer") (description "GNU XaoS is a graphical program that generates fractal patterns and allows you to zoom in and out of them infinitely in a fluid, continuous manner. It also includes tutorials that help to explain how fractals are built. It can generate many different fractal types such as the Mandelbrot set.") - (home-page "https://www.gnu.org/software/xaos/") + (home-page "https://xaos-project.github.io/") (license license:gpl2+))) (define-public hypre @@ -3977,7 +4403,7 @@ set.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/LLNL/hypre.git") + (url "https://github.com/LLNL/hypre") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -4274,7 +4700,7 @@ as equations, scalars, vectors, and matrices.") (define-public z3 (package (name "z3") - (version "4.8.7") + (version "4.8.8") (home-page "https://github.com/Z3Prover/z3") (source (origin (method git-fetch) @@ -4283,7 +4709,7 @@ as equations, scalars, vectors, and matrices.") (file-name (git-file-name name version)) (sha256 (base32 - "0hprcdwhhyjigmhhk6514m71bnmvqci9r8gglrqilgx424r6ff7q")))) + "1rn538ghqwxq0v8i6578j8mflk6fyv0cp4hjfqynzvinjbps56da")))) (build-system gnu-build-system) (arguments `(#:imported-modules ((guix build python-build-system) @@ -4433,7 +4859,7 @@ symmetric matrices.") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/elemental/Elemental.git") + (url "https://github.com/elemental/Elemental") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 @@ -4485,7 +4911,7 @@ reduction.") (define-public mcrl2 (package (name "mcrl2") - (version "201908.0") + (version "202006.0") (source (origin (method url-fetch) (uri (string-append @@ -4493,7 +4919,7 @@ reduction.") version ".tar.gz")) (sha256 (base32 - "1i4xgl2d5fgiz1mwi50cyfkrrcpm8nxfayfjgmhq7chs58wlhfsz")))) + "167ryrzk1a2j53c2j198jlxa98amcaym070gkcj730619gymv5zl")))) (inputs `(("boost" ,boost) ("glu" ,glu) @@ -4833,6 +5259,18 @@ This package contains the basic DUNE grid classes.") (arguments `(#:phases (modify-phases %standard-phases + ;; XXX: istl/test/matrixtest.cc includes and fails to find + ;; the stdlib types when the gfortran header is used. Remove gfortran + ;; from CPLUS_INCLUDE_PATH as a workaround. + (add-after 'set-paths 'hide-gfortran + (lambda* (#:key inputs #:allow-other-keys) + (let ((gfortran (assoc-ref inputs "gfortran"))) + (setenv "CPLUS_INCLUDE_PATH" + (string-join + (delete (string-append gfortran "/include/c++") + (string-split (getenv "CPLUS_INCLUDE_PATH") #\:)) + ":")) + #t))) (add-after 'build 'build-tests (lambda* (#:key make-flags #:allow-other-keys) (apply invoke "make" "build_tests" make-flags)))))) @@ -4879,6 +5317,18 @@ aggregation-based algebraic multigrid.") (arguments `(#:phases (modify-phases %standard-phases + ;; XXX: localfunctions/test/lagrangeshapefunctiontest.cc includes + ;; and fails to find the stdlib types when the gfortran header is used. + ;; Hide gfortran from CPLUS_INCLUDE_PATH to ensure we get the GCC header. + (add-after 'set-paths 'hide-gfortran + (lambda* (#:key inputs #:allow-other-keys) + (let ((gfortran (assoc-ref inputs "gfortran"))) + (setenv "CPLUS_INCLUDE_PATH" + (string-join + (delete (string-append gfortran "/include/c++") + (string-split (getenv "CPLUS_INCLUDE_PATH") #\:)) + ":")) + #t))) (add-after 'build 'build-tests (lambda* (#:key make-flags #:allow-other-keys) (apply invoke "make" "build_tests" make-flags)))))) @@ -5232,20 +5682,20 @@ management via the GIMPS project's Primenet server.") (define-public nauty (package (name "nauty") - (version "2.6r12") - (source (origin - (method url-fetch) - (uri (string-append - "https://pallini.di.uniroma1.it/" - "nauty" (string-join (string-split version #\.) "") - ".tar.gz")) - (sha256 - (base32 - "1p4mxf8q5wm47nxyskxbqwa5p1vvkycv1zgswvnk9nsn6vff0al6")))) + (version "2.7r1") + (source + (origin + (method url-fetch) + (uri (string-append + "https://pallini.di.uniroma1.it/" + "nauty" (string-join (string-split version #\.) "") ".tar.gz")) + (sha256 + (base32 "0xsfqfcknbd6g6wzpa5l7crmmk3bf3zjh37rhylq6b20dqcmvjkn")))) (build-system gnu-build-system) (outputs '("out" "lib")) (arguments `(#:test-target "checks" + #:configure-flags '("--enable-generic") ;prevent -march-native #:phases (modify-phases %standard-phases ;; Default make target does not build all available @@ -5265,15 +5715,16 @@ management via the GIMPS project's Primenet server.") (include (string-append lib-output "/include/nauty")) (lib (string-append lib-output "/lib/nauty"))) (for-each (lambda (f) (install-file f bin)) - '("dreadnaut" "NRswitchg" "addedgeg" "amtog" "biplabg" - "blisstog" "bliss2dre" "catg" "checks6" "complg" - "converseg" "copyg" "countg" "cubhamg" "deledgeg" - "delptg" "directg" "dretodot" "dretog" "genbg" + '("addedgeg" "amtog" "assembleg" "biplabg" "blisstog" + "bliss2dre" "catg" "checks6" "complg" "converseg" + "copyg" "countg" "cubhamg" "deledgeg" "delptg" + "directg" "dreadnaut" "dretodot" "dretog" "genbg" "genbgL" "geng" "genquarticg" "genrang" "genspecialg" "gentourng" "gentreeg" "hamheuristic" "labelg" "linegraphg" "listg" "multig" "newedgeg" "pickg" "planarg" "ranlabg" "shortg" "showg" "subdivideg" - "sumlines" "twohamg" "vcolg" "watercluster2")) + "sumlines" "twohamg" "underlyingg" "vcolg" + "watercluster2" "NRswitchg")) (for-each (lambda (f) (install-file f include)) (find-files "." "\\.h$")) (for-each (lambda (f) (install-file f lib)) @@ -5381,7 +5832,7 @@ fields of knowledge.") (origin (method git-fetch) (uri (git-reference - (url "https://github.com/niklasso/minisat.git") + (url "https://github.com/niklasso/minisat") (commit commit))) (file-name (string-append name "-" version "-checkout")) (sha256 @@ -5516,6 +5967,6 @@ cli.") multi-purpose GUI desktop calculator. It provides basic and advanced functionality. Features include customizable functions, unit calculations, and conversions, physical constants, symbolic calculations (including -integrals and equations), arbitrary precision, uncertainity propagation, +integrals and equations), arbitrary precision, uncertainty propagation, interval arithmetic, plotting.") (license license:gpl2+)))