diff options
Diffstat (limited to 'gnu/packages/maths.scm')
-rw-r--r-- | gnu/packages/maths.scm | 159 |
1 files changed, 118 insertions, 41 deletions
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index d7ce900682..d60c033dbc 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -12,11 +12,11 @@ ;;; Copyright © 2015 Fabian Harfert <fhmgufs@web.de> ;;; Copyright © 2016 Roel Janssen <roel@gnu.org> ;;; Copyright © 2016, 2018, 2020 Kei Kebreau <kkebreau@posteo.net> -;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2017, 2018, 2019, 2020 Paul Garlick <pgarlick@tourbillion-technology.com> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org> ;;; Copyright © 2017, 2019 Arun Isaac <arunisaac@systemreboot.net> @@ -26,7 +26,7 @@ ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com> ;;; Copyright © 2018 Nadya Voronova <voronovank@gmail.com> ;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com> -;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2018, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018 Eric Brown <brown@fastmail.com> ;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2018 Amin Bandali <bandali@gnu.org> @@ -460,23 +460,45 @@ 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 + ((string-prefix? "aarch64" system) + ;; Some sparse matrix tests are failing on AArch64: + ;; 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 @@ -856,7 +878,7 @@ computations.") ("flex" ,flex))) (inputs `(("zlib" ,zlib) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libtirpc" ,libtirpc))) (arguments `(#:parallel-tests? #f @@ -1096,7 +1118,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 @@ -1213,7 +1235,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))) @@ -1412,7 +1434,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") @@ -1685,6 +1707,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) @@ -1723,7 +1751,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 @@ -3282,7 +3315,7 @@ parts of it.") (define-public openblas (package (name "openblas") - (version "0.3.7") + (version "0.3.9") (source (origin (method url-fetch) @@ -3291,7 +3324,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" @@ -3727,16 +3760,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: + ;; <https://github.com/g-truc/glm/pull/968>. + (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/") @@ -3893,26 +3953,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))) @@ -3925,14 +3987,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")) @@ -3942,7 +3996,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 @@ -4872,6 +4925,18 @@ This package contains the basic DUNE grid classes.") (arguments `(#:phases (modify-phases %standard-phases + ;; XXX: istl/test/matrixtest.cc includes <fenv.h> 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)))))) @@ -4918,6 +4983,18 @@ aggregation-based algebraic multigrid.") (arguments `(#:phases (modify-phases %standard-phases + ;; XXX: localfunctions/test/lagrangeshapefunctiontest.cc includes <fenv.h> + ;; 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)))))) |