X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/c745b6f62c9c70f0ac286c1540cbee240ebac59f..ade7638d84779b58d5a4c961666bcb35ebf43394:/gnu/packages/maths.scm diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 05cea4713c..ce393cba80 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -5,24 +5,24 @@ ;;; 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 @@ -35,6 +35,11 @@ ;;; Copyright © 2019 Robert Smith ;;; Copyright © 2020 Jakub Kądziołka ;;; Copyright © 2020 Felix Gruber +;;; 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. ;;; @@ -62,6 +67,7 @@ #:use-module (guix utils) #:use-module ((guix build utils) #:select (alist-replace)) #: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 python) #:use-module (guix build-system ruby) @@ -79,6 +85,7 @@ #:use-module (gnu packages dbm) #:use-module (gnu packages documentation) #:use-module (gnu packages elf) + #:use-module (gnu packages file) #:use-module (gnu packages flex) #:use-module (gnu packages fltk) #:use-module (gnu packages fontutils) @@ -86,8 +93,10 @@ #:use-module (gnu packages gcc) #:use-module (gnu packages gd) #:use-module (gnu packages ghostscript) + #:use-module (gnu packages glib) #:use-module (gnu packages graphviz) #:use-module (gnu packages gtk) + #:use-module (gnu packages icu4c) #:use-module (gnu packages image) #:use-module (gnu packages java) #:use-module (gnu packages less) @@ -126,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 @@ -220,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 @@ -255,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 @@ -375,6 +385,81 @@ semiconductors.") (license license:gpl3+) (home-page "https://www.gnu.org/software/dionysus/"))) +(define-public dsfmt + (package + (name "dsfmt") + (version "2.2.3") + (source + (origin + (method url-fetch) + (uri + (string-append + "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/" + "dSFMT-src-" version ".tar.gz")) + (sha256 + (base32 + "03kaqbjbi6viz0n33dk5jlf6ayxqlsq4804n7kwkndiga9s4hd42")) + (modules '((guix build utils))) + ;; Don't distribute html documentation with bundled jquery. + (snippet + '(begin + (delete-file-recursively "html") #t)) + ;; Add patches borrowed from Julia. + (patches + (list + (origin + (method url-fetch) + (uri (string-append + "https://raw.githubusercontent.com/JuliaLang/julia/" + "v1.3.0/deps/patches/dSFMT.c.patch")) + (sha256 (base32 + "09mhv11bms8jsmkmdqvlcgljwhzw3b6n9nncpi2b6dla9798hw2y")) + (file-name "dSFMT.c.patch")) + (origin + (method url-fetch) + (uri (string-append + "https://raw.githubusercontent.com/JuliaLang/julia/" + "v1.3.0/deps/patches/dSFMT.h.patch")) + (sha256 (base32 + "1py5rd0yxic335lzka23f6x2dhncrpizpyrk57gi2f28c0p98y5n")) + (file-name "dSFMT.h.patch")))))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'configure) ; no configure script + (replace 'build + ;; Upstream Makefile does not build a shared library. Borrow from Julia + ;; https://github.com/JuliaLang/julia/blob/v1.3.0/deps/dsfmt.mk + (lambda _ + (invoke + "gcc" "-DNDEBUG" "-DDSFMT_MEXP=19937" + "-fPIC" "-DDSFMT_DO_NOT_USE_OLD_NAMES" + "-O3" "-finline-functions" "-fomit-frame-pointer" + "-fno-strict-aliasing" "--param" "max-inline-insns-single=1800" + "-Wmissing-prototypes" "-Wall" "-std=c99" "-shared" "dSFMT.c" + "-o" "libdSFMT.so"))) + (replace 'install ; no "install" target + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib")) + (inc (string-append out "/include")) + (doc (string-append out "/share/doc/" ,name "-" ,version))) + (install-file "libdSFMT.so" lib) + (install-file "dSFMT.h" inc) + (install-file "LICENSE.txt" doc) + #t)))))) + (synopsis "Double precision SIMD-oriented Fast Mersenne Twister") + (description + "The dSMFT package speeds up Fast Mersenne Twister generation by avoiding +the expensive conversion of integer to double (floating point). dSFMT directly +generates double precision floating point pseudorandom numbers which have the +IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std 754-1985) +format. dSFMT is only available on the CPUs which use IEEE 754 format double +precision floating point numbers.") + (home-page "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/") + (license license:bsd-3))) + (define-public gsl (package (name "gsl") @@ -390,8 +475,9 @@ semiconductors.") (arguments (let ((system (%current-system))) (cond - ((string-prefix? "aarch64" system) - ;; Some sparse matrix tests are failing on AArch64: + ((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 @@ -399,7 +485,7 @@ semiconductors.") (substitute* "spmatrix/test.c" ((".*test_complex.*") "\n")) #t))))) - ((string-prefix? "i686" (%current-system)) + ((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 @@ -427,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") @@ -511,7 +641,7 @@ computing convex hulls.") (define-public lrslib (package (name "lrslib") - (version "7.0a") + (version "7.1") (source (origin (method url-fetch) @@ -520,7 +650,7 @@ computing convex hulls.") (string-delete #\. version) ".tar.gz")) (sha256 (base32 - "034fa45r9hwx6ljmgpxk2872q34nklkalpdkc6s9hqw57rivi36k")))) + "05kq3hzam31dlmkccv3v358r478kpvx76mw37ka12c6ypwv5dsnk")))) (build-system gnu-build-system) (inputs `(("gmp" ,gmp))) @@ -680,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") @@ -756,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 @@ -837,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") @@ -858,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") @@ -986,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 @@ -1093,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) ":"))) @@ -1207,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) @@ -1233,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") @@ -1364,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 @@ -1435,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 @@ -1469,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 @@ -1480,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. @@ -1509,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") @@ -1586,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) @@ -1624,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 @@ -1646,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) @@ -1679,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")) @@ -1870,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") @@ -1879,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 @@ -2266,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") @@ -2442,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 @@ -2642,8 +3060,9 @@ implemented in ANSI C, and MPI for communications.") "scotch-integer-declarations.patch")))) (build-system gnu-build-system) (inputs - `(("zlib" ,zlib) - ("flex" ,flex) + `(("zlib" ,zlib))) + (native-inputs + `(("flex" ,flex) ("bison" ,bison))) (outputs '("out" "metis")) (arguments @@ -2934,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) @@ -2942,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 @@ -3049,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) @@ -3076,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. @@ -3162,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 @@ -3363,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 @@ -3402,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 @@ -3440,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 @@ -3627,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/") @@ -3793,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))) @@ -3825,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")) @@ -3842,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 @@ -3882,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 @@ -3916,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 @@ -4213,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) @@ -4222,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) @@ -4372,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 @@ -4424,7 +4911,7 @@ reduction.") (define-public mcrl2 (package (name "mcrl2") - (version "201908.0") + (version "202006.0") (source (origin (method url-fetch) (uri (string-append @@ -4432,7 +4919,7 @@ reduction.") version ".tar.gz")) (sha256 (base32 - "1i4xgl2d5fgiz1mwi50cyfkrrcpm8nxfayfjgmhq7chs58wlhfsz")))) + "167ryrzk1a2j53c2j198jlxa98amcaym070gkcj730619gymv5zl")))) (inputs `(("boost" ,boost) ("glu" ,glu) @@ -4600,7 +5087,7 @@ linear algebra primitives specifically targeting graph analytics.") (define-public dune-common (package (name "dune-common") - (version "2.6.0") + (version "2.7.0") (source (origin (method url-fetch) @@ -4608,7 +5095,7 @@ linear algebra primitives specifically targeting graph analytics.") version "/dune-common-" version ".tar.gz")) (sha256 (base32 - "019wcr1qf7jwyxx1y5y290wdlglylskvbb2m01ljkzcza2xnlmhw")))) + "140q1zh44cr5yrjwg4b5ga803rkqv55vk30l2cqm29aklj1wb0rw")))) (build-system cmake-build-system) (arguments `(#:phases @@ -4638,7 +5125,7 @@ Differences} (FD).") (define-public dune-geometry (package (name "dune-geometry") - (version "2.6.0") + (version "2.7.0") (source (origin (method url-fetch) @@ -4646,7 +5133,7 @@ Differences} (FD).") version "/dune-geometry-" version ".tar.gz")) (sha256 (base32 - "0hlaaxjyv9j05blasvb67sy02hd0w4g9znf68gdh3l731dd1aqbn")))) + "1cicvlwbyyw76npicnblxckyvhbfn3ip8isydiv3hlrlz8zcg5nr")))) (build-system cmake-build-system) (arguments `(#:phases @@ -4678,15 +5165,17 @@ This package contains the basic DUNE geometry classes.") (define-public dune-uggrid (package (name "dune-uggrid") - (version "2.6.0") + (version "2.7.0") (source (origin - (method url-fetch) - (uri (string-append "https://dune-project.org/download/" - version "/dune-uggrid-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://gitlab.dune-project.org/staging/dune-uggrid.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "05l7a1gb78mny49anyxk6rjvn66rhgm30y72v5cjg0m5kfgr1a1f")))) + "192miqgmfj6jwk969gydzpbv9ki7jg5nky3ydnrwa2nq29b5xkh0")))) (build-system cmake-build-system) (arguments `(#:phases @@ -4713,7 +5202,7 @@ This package contains the DUNE UG grid classes.") (define-public dune-grid (package (name "dune-grid") - (version "2.6.0") + (version "2.7.0") (source (origin (method url-fetch) @@ -4721,7 +5210,7 @@ This package contains the DUNE UG grid classes.") version "/dune-grid-" version ".tar.gz")) (sha256 (base32 - "1jp4vscm9yb9xg0lh7apzccfkhvgbnk652yahigmh3cvzpl4acd0")))) + "17fjz30qazjgl11sryyxnw9klai4yz1ji4bs68013xcxc5hdv27s")))) (build-system cmake-build-system) (arguments `(#:phases @@ -4756,7 +5245,7 @@ This package contains the basic DUNE grid classes.") (define-public dune-istl (package (name "dune-istl") - (version "2.6.0") + (version "2.7.0") (source (origin (method url-fetch) @@ -4764,11 +5253,24 @@ This package contains the basic DUNE grid classes.") version "/dune-istl-" version ".tar.gz")) (sha256 (base32 - "0l2gyrvys5w6wsmk0ckbb7295s80b7yk7qrl7x66akv2jv1nzq2w")))) + "0gl3wgz5rs6sb4m83440ny45sbx7z7lnbi3gx6r9nm3rvy5j33f9")) + (patches (search-patches "dune-istl-2.7-fix-non-mpi-tests.patch")))) (build-system cmake-build-system) (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)))))) @@ -4802,7 +5304,7 @@ aggregation-based algebraic multigrid.") (define-public dune-localfunctions (package (name "dune-localfunctions") - (version "2.6.0") + (version "2.7.0") (source (origin (method url-fetch) @@ -4810,11 +5312,23 @@ aggregation-based algebraic multigrid.") version "/dune-localfunctions-" version ".tar.gz")) (sha256 (base32 - "19c6zjinwwpy8jh4v4prhphyd438rapd4x80fj93apmwgw04nrhl")))) + "1yih59h6vngii696bx1c2vil02lriij4kz0nc583mjn9kiaqxfqd")))) (build-system cmake-build-system) (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)))))) @@ -4845,15 +5359,17 @@ assemble global function spaces on finite-element grids.") (define-public dune-alugrid (package (name "dune-alugrid") - (version "2.6.0") + (version "2.7.0-git-81d35682") (source (origin - (method url-fetch) - (uri (string-append "https://dune-project.org/download/" - version "/dune-alugrid-" version ".tar.gz")) + (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 - "1l9adgyjpra8mvwm445s0lpjshnb63jag85fb2hisbjn6bm320yj")))) + "0z54lwfp53prcrs94k8gwh047l9z642jll3l56xlyfr69z0b2zz1")))) (build-system cmake-build-system) (arguments `(#:phases @@ -4893,17 +5409,17 @@ cubes.") (define-public dune-subgrid (package (name "dune-subgrid") - (version "2.6.0") + (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 "releases/2.6-1"))) + (commit "2103a363f32e8d7b60e66eee7ddecf969f6cf762"))) (file-name (git-file-name name version)) (sha256 (base32 - "1gcv35rx3knqd54r4pp9rzd639db4j8w2r2ibq43w1mgwdcqhs64")))) + "1wsjlypd3835c3arqjkw836cxx5q67zy447wa65q634lf6f6v9ia")))) (build-system cmake-build-system) (arguments `(#:phases @@ -4924,7 +5440,7 @@ cubes.") ("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 allows to mark elements of + (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.") @@ -4933,7 +5449,7 @@ provides the full grid interface including adaptive mesh refinement.") (define-public dune-typetree (package (name "dune-typetree") - (version "2.6.0") + (version "2.7.0") (source (origin (method git-fetch) @@ -4943,7 +5459,7 @@ provides the full grid interface including adaptive mesh refinement.") (file-name (git-file-name name version)) (sha256 (base32 - "0mnv6w2f22lz3j4bdpdjq55vjm8xxfx9v4vvhg9bd36xpsbjpjp9")))) + "1rhv25yg0q1hw50c8wlfqhgwrjl4mh62zq9v14ilwgzbfgxmpiy7")))) (build-system cmake-build-system) (arguments `(#:phases @@ -4972,7 +5488,7 @@ operating on statically typed trees of objects.") (define-public dune-functions (package (name "dune-functions") - (version "2.6.0") + (version "2.7.0") (source (origin (method git-fetch) @@ -4982,7 +5498,7 @@ operating on statically typed trees of objects.") (file-name (git-file-name name version)) (sha256 (base32 - "1an8gb477n8j0kzpbrv7nr1snh8pxip0gsxq6w63jc83gg3dj200")))) + "1na4gcih0kin37ksj2xj07ds04v7zx53pjdhm1hzy55jjfqdjk8h")))) (build-system cmake-build-system) (arguments `(#:phases @@ -5022,17 +5538,17 @@ implemented as callable objects, and bases of finite element spaces.") (define-public dune-pdelab (package (name "dune-pdelab") - (version "2.6.0-rc1") + (version "2.7.0-git-476fe437") (source (origin (method git-fetch) (uri (git-reference (url "https://gitlab.dune-project.org/pdelab/dune-pdelab") - (commit (string-append "v" version)))) + (commit "476fe43763fa6f459c5e4658e2a2b4b5582db834"))) (file-name (git-file-name name version)) (sha256 (base32 - "07g0s9448z65vjrq88g5rv3340iifil85k170n8kbqchsvi4ny5v")))) + "0cs36piqzn6rq0j2ih3ab3q3q9yg199wk72k5qi86pkzh7i7fdn1")))) (build-system cmake-build-system) (arguments '(#:tests? #f)) ; XXX: the tests cannot be compiled (inputs @@ -5166,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 @@ -5199,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)) @@ -5315,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 @@ -5342,3 +5859,114 @@ researchers and developers alike to get started on SAT.") (home-page "http://minisat.se/MiniSat.html") (license license:expat)))) + +(define-public libqalculate + (package + (name "libqalculate") + (version "3.8.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Qalculate/libqalculate/") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1vbaza9c7159xf2ym90l0xkyj2mp6c3hbghhsqn29yvz08fda9df")) + (patches + (search-patches "libqalculate-3.8.0-libcurl-ssl-fix.patch")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("gettext" ,gettext-minimal) + ("intltool" ,intltool) + ("automake" ,automake) + ("autoconf" ,autoconf) + ("libtool" ,libtool) + ("doxygen" ,doxygen) + ("file" ,file))) + (inputs + `(("gmp" ,gmp) + ("mpfr" ,mpfr) + ("libxml2" ,libxml2) + ("curl" ,curl) + ("icu4c" ,icu4c) + ("gnuplot" ,gnuplot) + ("readline" ,readline) + ("libiconv" ,libiconv))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'bootstrap 'setenv + ;; Prevent the autogen.sh script to carry out the configure + ;; script, which has not yet been patched to replace /bin/sh. + (lambda _ + (setenv "NOCONFIGURE" "TRUE") + #t))))) + (home-page "https://qalculate.github.io/") + (synopsis "Multi-purpose cli desktop calculator and library") + (description + "Libqalculate is a multi-purpose cli desktop calculator and library. +It provides basic and advanced functionality. Features include customizable +functions, unit calculations, and conversions, physical constants, symbolic +calculations (including integrals and equations), arbitrary precision, +uncertainty propagation, interval arithmetic, plotting and a user-friendly +cli.") + (license license:gpl2+))) + +(define-public qalculate-gtk + (package + (name "qalculate-gtk") + (version "3.8.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Qalculate/qalculate-gtk/") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0nsg6dzg5r7rzqr671nvrf1c50rjwpz7bxv5f20i4s7agizgv840")))) + (build-system glib-or-gtk-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("intltool" ,intltool) + ("automake" ,automake) + ("autoconf" ,autoconf) + ("libtool" ,libtool) + ("file" ,file))) + (inputs + `(("gmp" ,gmp) + ("mpfr" ,mpfr) + ("libqalculate" ,libqalculate) + ("libxml2" ,libxml2) + ("glib" ,glib) + ("gtk+" ,gtk+))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'bootstrap 'setenv + ;; Prevent the autogen.sh script to carry out the configure + ;; script, which has not yet been patched to replace /bin/sh. + (lambda _ + (setenv "NOCONFIGURE" "TRUE") + #t)) + (add-before 'check 'add-pot-file + ;; the file contains translations and are currently not in use + ;; left out on purpose so add it to POTFILES.skip + (lambda _ + (with-output-to-file "po/POTFILES.skip" + (lambda _ + (format #t "data/shortcuts.ui~%") + #t)) + #t))))) + (home-page "https://qalculate.github.io/") + (synopsis "Multi-purpose graphical desktop calculator") + (description + "Qalculate-gtk is the GTK frontend for libqalculate. It is a +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, uncertainty propagation, +interval arithmetic, plotting.") + (license license:gpl2+)))