;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; 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, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2016, 2018, 2020, 2021 Kei Kebreau <kkebreau@posteo.net>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 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 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
;;; Copyright © 2017, 2019 Arun Isaac <arunisaac@systemreboot.net>
-;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Dave Love <me@fx@gnu.org>
;;; Copyright © 2018, 2019, 2020 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
;;; Copyright © 2018 Adam Massmann <massmannak@gmail.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, 2021 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2018 Amin Bandali <bandali@gnu.org>
;;; Copyright © 2019, 2021 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2019 Steve Sprang <scs@stevesprang.com>
;;; Copyright © 2019 Robert Smith <robertsmith@posteo.net>
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
-;;; Copyright © 2020 Felix Gruber <felgru@posteo.net>
+;;; Copyright © 2020, 2021 Felix Gruber <felgru@posteo.net>
;;; Copyright © 2020 R Veera Kumar <vkor@vkten.in>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz>
;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
-;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
+;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
;;; Copyright © 2021 Gerd Heber <gerd.heber@gmail.com>
+;;; Copyright © 2021 Franck Pérignon <franck.perignon@univ-grenoble-alpes.fr>
+;;; Copyright © 2021 Philip McGrath <philip@philipmcgrath.com>
+;;; Copyright © 2021 Paul A. Patience <paul@apatience.com>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (guix build-system cmake)
#:use-module (guix build-system glib-or-gtk)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system ocaml)
#:use-module (guix build-system python)
#:use-module (guix build-system ruby)
#:use-module (gnu packages algebra)
#:use-module (gnu packages check)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages coq)
#:use-module (gnu packages curl)
#:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages dbm)
#:use-module (gnu packages documentation)
#:use-module (gnu packages elf)
+ #:use-module (gnu packages emacs)
#:use-module (gnu packages file)
#:use-module (gnu packages flex)
#:use-module (gnu packages fltk)
#:use-module (gnu packages mpi)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages netpbm)
+ #:use-module (gnu packages ocaml)
#:use-module (gnu packages onc-rpc)
#:use-module (gnu packages pcre)
#:use-module (gnu packages popt)
(define-public qhull
(package
(name "qhull")
- (version "2019.1")
+ (version "2020.2")
(source (origin
(method url-fetch)
(uri (string-append "http://www.qhull.org/download/qhull-"
(car (string-split version #\.))
- "-src-7.3.2.tgz"))
+ "-src-8.0.2.tgz"))
(sha256
(base32
- "1ys3vh3qq0v9lh452xb932vp63advds1pxk42lk7cc1niiar0y9b"))))
+ "0zlbhg0lb6j60188c2xhcrvviskr079552icjldqhy1jhgmxghmm"))))
(build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags '("-DLINK_APPS_SHARED=ON"
+ "-DCMAKE_POSITION_INDEPENDENT_CODE=ON")))
(synopsis "Calculate convex hulls and related structures")
(description
"@code{Qhull} computes the convex hull, Delaunay triangulation, Voronoi
be solved.")
(license license:gpl2+)))
+(define-public libcerf
+ (package
+ (name "libcerf")
+ (version "1.14")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://jugit.fz-juelich.de/mlz/libcerf")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1ic2q7kvxpqmgxlishygvx8d00i4wn51vkq4fyac44ahhf6c3kwd"))))
+ (build-system cmake-build-system)
+ (native-inputs
+ `(("perl" ,perl)))
+ (home-page "https://jugit.fz-juelich.de/mlz/libcerf")
+ (synopsis "Library for complex error functions")
+ (description
+ "@code{libcerf} is a self-contained numeric library that provides an
+efficient and accurate implementation of complex error functions, along with
+Dawson, Faddeeva, and Voigt functions.")
+ (license license:expat)))
+
(define-public vinci
(package
(name "vinci")
(define-public arpack-ng
(package
(name "arpack-ng")
- (version "3.6.3")
+ (version "3.8.0")
(home-page "https://github.com/opencollab/arpack-ng")
(source (origin
(method git-fetch)
(file-name (git-file-name name version))
(sha256
(base32
- "1wljl96yqxc9v8r49c37lscwkdp58kaacfb9p6s6nvpm31haax4y"))))
+ "0l7as5z6xvbxly8alam9s4kws70952qq35a6vkljzayi4b9gbklx"))))
(build-system gnu-build-system)
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
- ("libtool" ,libtool)))
+ ("libtool" ,libtool)
+ ("pkg-config" ,pkg-config)))
(inputs
- `(("lapack" ,lapack)
+ `(("eigen" ,eigen)
+ ("lapack" ,lapack)
("fortran" ,gfortran)))
(synopsis "Fortran subroutines for solving eigenvalue problems")
(description
(package
(inherit arpack-ng)
(version "3.3.0")
- (name (package-name arpack-ng))
- (home-page (package-home-page arpack-ng))
(source
(origin
- (method url-fetch)
- (uri (string-append home-page "/archive/" version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference (url (package-home-page arpack-ng))
+ (commit version)))
+ (file-name (git-file-name (package-name arpack-ng) version))
(sha256
(base32
- "1cz53wqzcf6czmcpfb3vb61xi0rn5bwhinczl65hpmbrglg82ndd"))))))
+ "00h6bjvxjq7bv0b8pwnc0gw33ns6brlqv00xx2rh3w9b5n205918"))))))
(define-public arpack-ng-openmpi
(package (inherit arpack-ng)
(define-public gnuplot
(package
(name "gnuplot")
- (version "5.4.1")
+ (version "5.4.2")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/gnuplot/gnuplot/"
version "/gnuplot-"
version ".tar.gz"))
(sha256
- (base32 "03jrqs5lvxmbbz2c4g17dn2hrxqwd3hfadk9q8wbkbkyas2h8sbb"))))
+ (base32 "1fp7rbhjmz2w63r72kicf8lfszzimz2csfx868fracw167hpaz75"))))
(build-system gnu-build-system)
(inputs `(("readline" ,readline)
("cairo" ,cairo)
;; libhdf5.so. We truncate the hashes to avoid
;; unnecessary store references to those compilers:
(substitute* "src/libhdf5.settings"
- (("(/gnu/store/)([a-Z0-9]*)" all prefix hash)
+ (("(/gnu/store/)([a-zA-Z0-9]*)" all prefix hash)
(string-append prefix (string-take hash 10) "..."))
;; Don't record the build-time kernel version to make the
;; settings file reproducible.
"https://www.hdfgroup.org/ftp/HDF5/current/src/unpacked/COPYING"))))
(define-public hdf5-1.10
- (package/inherit hdf5-1.8
+ (package
+ (inherit hdf5-1.8)
(version "1.10.7")
(source
(origin
(patches (search-patches "hdf5-config-date.patch"))))))
(define-public hdf5-1.12
- (package/inherit hdf5-1.8
+ (package
+ (inherit hdf5-1.8)
(version "1.12.0")
(source
(origin
(define-public ipopt
(package
(name "ipopt")
- (version "3.12.12")
+ (version "3.13.4")
(source (origin
- (method url-fetch)
- (uri (string-append
- "https://www.coin-or.org/download/source/Ipopt/Ipopt-"
- version".tgz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/coin-or/Ipopt")
+ (commit (string-append "releases/" version))))
+ (file-name (git-file-name name version))
(sha256
(base32
- "07yn9rzdswjk8n246qq6ci9ssf2bcplkifcpsfz9j6cdxw9vgbkv"))
- (modules '((guix build utils)))
- (snippet
- ;; Make sure we don't use the bundled software.
- '(begin
- (delete-file-recursively "ThirdParty")
- #t))))
+ "08gznhwhqv1x4baksz350ih8q16r5rd0k8vals6078m3h94khr4b"))))
(build-system gnu-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
after "\n")))
#t))))))
(native-inputs
- `(("gfortran" ,gfortran)))
+ `(("gfortran" ,gfortran)
+ ("pkg-config" ,pkg-config)))
(inputs
;; TODO: Maybe add dependency on COIN-MUMPS, ASL, and HSL.
`(("lapack" ,lapack))) ;for both libblas and liblapack
"The Interior Point Optimizer (IPOPT) is a software package for
large-scale nonlinear optimization. It provides C++, C, and Fortran
interfaces.")
+ (license license:epl2.0)))
+
+(define-public cbc
+ (package
+ (name "cbc")
+ (version "2.10.5")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://www.coin-or.org/download/source/"
+ "Cbc/Cbc-" version ".tgz"))
+ (sha256
+ (base32
+ "0wk9vr6zc62gw71v7gnra5wxqlcljcgbhm5lasx236v791b986ns"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Make sure we don't use the bundled software.
+ '(delete-file-recursively "ThirdParty"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("gfortran" ,gfortran)
+ ("pkg-config" ,pkg-config)))
+ (inputs
+ `(("openblas" ,openblas)))
+ (home-page "https://www.coin-or.org")
+ (synopsis "Branch-and-cut solver")
+ (description
+ "Cbc (Coin-or branch and cut) is a mixed integer linear programming
+solver written in C++. It can be used as a library or as a standalone
+executable.")
(license license:epl1.0)))
(define-public clp
"\"" (assoc-ref inputs "texinfo") "/bin/makeinfo\"")))
#t)))))
(home-page "https://www.gnu.org/software/octave/")
- (synopsis "High-level language for numerical computation")
+ (synopsis "High-level language for numerical computation (no GUI)")
(description "GNU Octave is a high-level interpreted language that is
specialized for numerical computations. It can be used for both linear and
non-linear applications and it provides great support for visualizing results.
(name "octave")
(inputs
`(("qscintilla" ,qscintilla)
- ("qt" ,qtbase)
+ ("qt" ,qtbase-5)
,@(package-inputs octave-cli)))
(native-inputs
`(("qttools" , qttools) ;for lrelease
(substitute* "configure"
(("qscintilla2-qt5")
"qscintilla2_qt5"))
- #t))))))))
+ #t))))))
+ (synopsis "High-level language for numerical computation (with GUI)")))
(define-public opencascade-oce
(package
(native-inputs
`(("pkg-config" ,pkg-config)
;;("python-astropy" ,python-astropy) ;; FIXME: Package this.
- ("qttools" ,qttools)))
+ ("qttools" ,qttools)
+ ("python-sip" ,python-sip-4)))
(inputs
`(("ghostscript" ,ghostscript) ;optional, for EPS/PS output
("python-dbus" ,python-dbus)
("python-h5py" ,python-h5py) ;optional, for HDF5 data
("python-pyqt" ,python-pyqt)
- ("qtbase" ,qtbase)
+ ("qtbase" ,qtbase-5)
("qtsvg" ,qtsvg)))
(propagated-inputs
`(("python-numpy" ,python-numpy)))
`(("python" ,python-2)))
(inputs
`(("gfortran" ,gfortran)
- ("lapack" ,lapack)
+ ("openblas" ,openblas)
("superlu" ,superlu)
;; leaving out hdf5 and fftw, as petsc expects them to be built with mpi
;; leaving out opengl, as configuration seems to only be for mac
#:configure-flags
`("--with-mpi=0"
"--with-openmp=1"
+ "--with-openblas=1"
"--with-superlu=1")
#:make-flags
;; Honor (parallel-job-count) for build. Do not use --with-make-np,
(define-public scotch
(package
(name "scotch")
- (version "6.1.0")
+ (version "6.1.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://gforge.inria.fr/frs/download.php/"
"latestfile/298/scotch_" version ".tar.gz"))
(sha256
- (base32 "1184fcv4wa2df8szb5lan6pjh0raarr45pk8ilpvbz23naikzg53"))
+ (base32 "04dkz24a2g20wq703fnyi4440ac4mwycy9gwrrllljj7zxcjy19r"))
(patches (search-patches "scotch-build-parallelism.patch"
"scotch-integer-declarations.patch"))))
(build-system gnu-build-system)
`(("zlib" ,zlib)))
(native-inputs
`(("flex" ,flex)
- ("bison" ,bison)))
+ ("bison" ,bison)
+ ("gfortran" ,gfortran)))
(outputs '("out" "metis"))
(arguments
`(#:make-flags (list (string-append "prefix=" %output))
CCS = gcc
CCP = mpicc
CCD = gcc
+FC = gfortran
CPPFLAGS =~{ -D~a~}
CFLAGS = -O2 -g -fPIC $(CPPFLAGS)
LDFLAGS = -lz -lm -lrt -lpthread
(find-files "../lib/" ".*metis\\..*"))
#t))))))
(home-page "https://www.labri.fr/perso/pelegrin/scotch/")
+ (properties
+ `((release-monitoring-url . "https://gforge.inria.fr/frs/?group_id=248")))
(synopsis "Programs and libraries for graph algorithms")
(description "SCOTCH is a set of programs and libraries which implement
the static mapping and sparse matrix reordering algorithms developed within
CCS = gcc
CCP = mpicc
CCD = gcc
+FC = gfortran
CPPFLAGS =~{ -D~a~}
CFLAGS = -O2 -g -fPIC $(CPPFLAGS)
LDFLAGS = -lz -lm -lrt -lpthread
(synopsis
"Programs and libraries for graph algorithms (32-bit integers)")))
+(define-public scotch-shared
+ (package (inherit scotch)
+ (name "scotch-shared")
+ (native-inputs
+ `(("gcc" ,gcc)
+ ("flex" ,flex)
+ ("bison" ,bison)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments scotch)
+ ((#:phases scotch-shared-phases)
+ `(modify-phases ,scotch-shared-phases
+ (replace
+ 'configure
+ (lambda _
+ ;; Otherwise, the RUNPATH will lack the final path component.
+ (setenv "RPATHFLAGS" (string-append "-Wl,-rpath="
+ (assoc-ref %outputs "out") "/lib"))
+ (call-with-output-file "Makefile.inc"
+ (lambda (port)
+ (format port "
+EXE =
+LIB = .so
+OBJ = .o
+MAKE = make
+AR = gcc
+ARFLAGS = -shared -o
+CAT = cat
+CCS = gcc
+CCP = mpicc
+CCD = gcc
+FC = gfortran
+CPPFLAGS =~{ -D~a~}
+CFLAGS = -O2 -g -fPIC $(CPPFLAGS) $(RPATHFLAGS)
+CLIBFLAGS = -shared -fPIC
+LDFLAGS = -lz -lm -lrt -lpthread -Xlinker --no-as-needed
+CP = cp
+LEX = flex -Pscotchyy -olex.yy.c
+LN = ln
+MKDIR = mkdir
+MV = mv
+RANLIB = echo
+YACC = bison -pscotchyy -y -b y
+"
+ '("COMMON_FILE_COMPRESS_GZ"
+ "COMMON_PTHREAD"
+ "COMMON_RANDOM_FIXED_SEED"
+ "INTSIZE64" ;use 'int64_t'
+ ;; Prevents symbolc clashes with libesmumps
+ "SCOTCH_RENAME"
+ ;; XXX: Causes invalid frees in superlu-dist tests
+ ;; "SCOTCH_PTHREAD"
+ ;; "SCOTCH_PTHREAD_NUMBER=2"
+ "restrict=__restrict"
+ ))))#t))
+ (delete 'check)))))
+ (synopsis
+ "Programs and libraries for graph algorithms (shared libraries version)")))
+
(define-public pt-scotch
(package (inherit scotch)
(name "pt-scotch")
(synopsis
"Programs and libraries for graph algorithms (with MPI and 32-bit integers)")))
+(define-public pt-scotch-shared
+ (package (inherit scotch-shared)
+ (name "pt-scotch-shared")
+ (propagated-inputs
+ `(("openmpi" ,openmpi))) ;Headers include MPI headers
+ (arguments
+ (substitute-keyword-arguments (package-arguments scotch-shared)
+ ((#:phases scotch-shared-phases)
+ `(modify-phases ,scotch-shared-phases
+ (replace
+ 'build
+ (lambda _
+ (invoke "make" (format #f "-j~a" (parallel-job-count))
+ "ptscotch" "ptesmumps")
+
+ ;; Install the serial metis compatibility library
+ (invoke "make" "-C" "libscotchmetis" "install")))
+ (add-before 'check 'mpi-setup
+ ,%openmpi-setup)))))
+ (synopsis "Graph algorithms (shared libraries version, with MPI)")))
+
+
(define-public metis
(package
(name "metis")
(sha256
(base32
"1cjxgh41r8k6j029yxs8msp3z6lcnpm16g5pvckk35kc7zhfpykn"))))
+ (properties
+ `((release-monitoring-url
+ . "http://glaros.dtc.umn.edu/gkhome/metis/metis/download")))
(build-system cmake-build-system)
(inputs
`(("blas" ,openblas)))
(define-public maxima
(package
(name "maxima")
- (version "5.44.0")
+ (version "5.45.1")
(source
(origin
(method url-fetch)
version "-source/" name "-" version ".tar.gz"))
(sha256
(base32
- "1v6jr5s6hhj6r18gfk6hgxk2qd6z1dxkrjq9ss2z1y6sqi45wgyr"))
+ "1p77nk5sz1qfkn5zr97szpbi8ib4b22k8i52l4ag5gkhd4kid47y"))
(patches (search-patches "maxima-defsystem-mkdir.patch"))))
(build-system gnu-build-system)
(inputs
(wrap-program (string-append out "/bin/maxima")
`("PATH" prefix (,binutils))))
#t)))))
- (home-page "http://maxima.sourceforge.net")
+ (home-page "https://maxima.sourceforge.io")
(synopsis "Numeric and symbolic expression manipulation")
(description "Maxima is a system for the manipulation of symbolic and
numerical expressions. It yields high precision numeric results by using
(define-public wxmaxima
(package
(name "wxmaxima")
- (version "21.02.0")
+ (version "21.05.2")
(source
(origin
(method git-fetch)
(commit (string-append "Version-" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "19sab596ydwz65151bwymnfilyfmr8qcxb0k8cxlnj1gmdldlyz6"))))
+ (base32 "0h7ryykh2dapcyvpp4f1j1b3vrrz80x9k8nkci2yxifgdb29vyhw"))))
(build-system cmake-build-system)
(native-inputs
`(("gettext" ,gettext-minimal)))
;; Build the library for all supported CPUs. This allows
;; switching CPU targets at runtime with the environment variable
;; OPENBLAS_CORETYPE=<type>, where "type" is a supported CPU type.
- ;; Unfortunately, this is not supported on non-x86 architectures,
+ ;; Unfortunately, this is not supported on all architectures,
;; where it leads to failed builds.
,@(let ((system (or (%current-target-system) (%current-system))))
(cond
((or (string-prefix? "x86_64" system)
(string-prefix? "i686" system))
'("DYNAMIC_ARCH=1"))
+ ;; On some of these architectures the CPU can't be detected.
+ ((string-prefix? "powerpc64le" system)
+ '("DYNAMIC_ARCH=1"
+ "TARGET=GENERIC"))
;; On MIPS we force the "SICORTEX" TARGET, as for the other
;; two available MIPS targets special extended instructions
;; for Loongson cores are used.
;; On aarch64 force the generic 'armv8-a' target
((string-prefix? "aarch64" system)
'("TARGET=ARMV8"))
+ ;; Failed to detect CPU.
+ ((string-prefix? "armhf" system)
+ '("TARGET=ARMV7"))
(else '()))))
;; no configure script
#:phases
(synopsis "Optimized BLAS library based on GotoBLAS (ILP64 version)")
(license license:bsd-3)))
-(define* (make-blis implementation #:optional substitutable?)
- "Return a BLIS package with the given IMPLEMENTATION (see config/ in the
-source tree for a list of implementations.)
-
-SUBSTITUTABLE? determines whether the package is made available as a
-substitute.
-
-Currently the specialization must be selected at configure-time, but work is
-underway to allow BLIS to select the right optimized kernels at run time:
-<https://github.com/flame/blis/issues/129>."
+(define-public blis
(package
- (name (if (string=? implementation "reference")
- "blis"
- (string-append "blis-" implementation)))
- (version "0.2.2")
+ (name "blis")
+ (version "0.8.1")
(home-page "https://github.com/flame/blis")
(source (origin
(method git-fetch)
(uri (git-reference (url home-page) (commit version)))
(sha256
(base32
- "1wr79a50nm4abhw8w3sn96nmwp5mrzifcigk7khw9qcgyyyqayfh"))
+ "05ifil6jj9424sr8kmircl8k4bmxnl3y12a79vwj1kxxva5gz50g"))
(file-name (git-file-name "blis" version))))
+ (native-inputs
+ `(("python" ,python)
+ ("perl" ,perl)))
(build-system gnu-build-system)
(arguments
- `(#:test-target "test"
-
- #:substitutable? ,substitutable?
-
- #:phases (modify-phases %standard-phases
- (replace 'configure
- (lambda* (#:key outputs #:allow-other-keys)
- ;; This is a home-made 'configure' script.
- (let ((out (assoc-ref outputs "out")))
- (invoke "./configure" "-p" out
- "-d" "opt"
- "--disable-static"
- "--enable-shared"
- "--enable-threading=openmp"
-
- ,implementation))))
- (add-before 'check 'show-test-output
- (lambda _
- ;; By default "make check" is silent. Make it verbose.
- (system "tail -F output.testsuite &")
- #t)))))
+ `(#:modules
+ ((guix build gnu-build-system)
+ (guix build utils)
+ (srfi srfi-1))
+ #:test-target "test"
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda* (#:key outputs
+ target
+ system
+ (configure-flags '())
+ #:allow-other-keys)
+ ;; This is a home-made 'configure' script.
+ (let* ((out (assoc-ref outputs "out"))
+ ;; Guix-specific support for choosing the configuration
+ ;; via #:configure-flags: see below for details.
+ (config-flag-prefix "--blis-config=")
+ (maybe-config-flag (find
+ (lambda (s)
+ (string-prefix? config-flag-prefix s))
+ configure-flags))
+ (configure-flags (if maybe-config-flag
+ (delete maybe-config-flag
+ configure-flags)
+ configure-flags))
+ ;; Select the "configuration" to build.
+ ;; The "generic" configuration is non-optimized but
+ ;; portable (no assembly).
+ ;; The "x86_64" configuration family includes
+ ;; sub-configurations for all supported
+ ;; x86_64 microarchitectures.
+ ;; BLIS currently lacks runtime hardware detection
+ ;; for other architectures: see
+ ;; <https://github.com/flame/blis/commit/c534da6>.
+ ;; Conservatively, we stick to "generic" on armhf,
+ ;; aarch64, and ppc64le for now. (But perhaps
+ ;; "power9", "cortexa9", and "cortexa57" might be
+ ;; general enough to use?)
+ ;; Another approach would be to use the "auto"
+ ;; configuration and make this package
+ ;; non-substitutable.
+ ;; The build is fairly intensive, though.
+ (blis-config
+ (cond
+ (maybe-config-flag
+ (substring maybe-config-flag
+ (string-length config-flag-prefix)))
+ ((string-prefix? "x86_64" (or target system))
+ "x86_64")
+ (else
+ "generic")))
+ (configure-args
+ `("-p" ,out
+ "-d" "opt"
+ "--disable-static"
+ "--enable-shared"
+ "--enable-threading=openmp"
+ "--enable-verbose-make"
+ ,@configure-flags
+ ,blis-config)))
+ (format #t "configure args: ~s~%" configure-args)
+ (apply invoke
+ "./configure"
+ configure-args)
+ #t)))
+ (add-before 'check 'show-test-output
+ (lambda _
+ ;; By default "make check" is silent. Make it verbose.
+ (system "tail -F output.testsuite &")
+ #t)))))
(synopsis "High-performance basic linear algebra (BLAS) routines")
(description
"BLIS is a portable software framework for instantiating high-performance
access to BLIS implementations via traditional BLAS routine calls.")
(license license:bsd-3)))
-(define-public blis
- ;; This is the "reference" implementation, which is the non-optimized but
- ;; portable variant (no assembly).
- (make-blis "reference" #t))
+(define-public blis-sandybridge (deprecated-package "blis-sandybridge" blis))
+(define-public blis-haswell (deprecated-package "blis-haswell" blis))
+(define-public blis-knl (deprecated-package "blis-knl" blis))
(define ignorance blis)
-(define-syntax-rule (blis/x86_64 processor)
- "Expand to a package specialized for PROCESSOR."
- (package
- (inherit (make-blis processor))
- (supported-systems '("x86_64-linux"))))
-
-(define-public blis-sandybridge
- ;; BLIS specialized for Sandy Bridge processors (launched 2011):
- ;; <http://ark.intel.com/products/codename/29900/Sandy-Bridge>.
- (blis/x86_64 "sandybridge"))
-
-(define-public blis-haswell
- ;; BLIS specialized for Haswell processors (launched 2013):
- ;; <http://ark.intel.com/products/codename/42174/Haswell>.
- (blis/x86_64 "haswell"))
-
-(define-public blis-knl
- ;; BLIS specialized for Knights Landing processor (launched 2016):
- ;; <http://ark.intel.com/products/series/92650/Intel-Xeon-Phi-x200-Product-Family>.
- (blis/x86_64 "knl"))
-
-
(define-public openlibm
(package
(name "openlibm")
(define-public suitesparse
(package
(name "suitesparse")
- (version "5.8.1")
+ (version "5.10.1")
(source
(origin
(method git-fetch)
(file-name (git-file-name name version))
(sha256
(base32
- "0qjlyfxs8s48rs63c2fzspisgq1kk4bwkgnhmh125hgkdhrq2w1c"))
+ "19gx5wlgqnqpgz6mvam9lalyzpbfwgqhppps8z3np9sh0mgaiyw9"))
(patches (search-patches "suitesparse-mongoose-cmake.patch"))
(modules '((guix build utils)))
(snippet
#t))))
(build-system gnu-build-system)
(arguments
- '(#:tests? #f ;no "check" target
+ `(#:tests? #f ;no "check" target
#:make-flags
- (list "CC=gcc"
+ (list (string-append "CC=" ,(cc-for-target))
"TBB=-ltbb"
"MY_METIS_LIB=-lmetis"
+
+ ;; The default is to link against netlib lapack. Use OpenBLAS
+ ;; instead.
+ "BLAS=-lopenblas" "LAPACK=-lopenblas"
+
;; Flags for cmake (required to build GraphBLAS and Mongoose)
(string-append "CMAKE_OPTIONS=-DCMAKE_INSTALL_PREFIX="
(assoc-ref %outputs "out")
(delete 'configure)))) ;no configure script
(inputs
`(("tbb" ,tbb)
- ("lapack" ,lapack)
+ ("openblas" ,openblas)
("gmp" ,gmp)
("mpfr" ,mpfr)
("metis" ,metis)))
@end example
Failure to do so will result in a library with poor performance.")
+ ;; The test suite is notoriously lengthy and routinely exceeds the default
+ ;; timeout of 21600 seconds on the not unbeefy berlin build nodes.
+ (properties '((timeout . 86400))) ; 1 day
(license license:bsd-3)))
+(define-public cglm
+ (package
+ (name "cglm")
+ (version "0.8.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/recp/cglm")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1lcfl9ph4bnl3hckpx4hzwh8r4llnw94ik75igc5qy38wk468gmk"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags
+ (list "-DCGLM_USE_TEST=ON")))
+ (home-page "https://github.com/recp/cglm")
+ (synopsis "Mathematics C library for graphics programming")
+ (description
+ "@acronym{CGLM, C OpenGL Mathematics} is an optimised 3D maths library
+for graphics software based on the @acronym{GLSL, OpenGL Shading Language}
+specifications.
+
+It's similar to the original C++ GLM library but written in C99 and compatible
+with C89.")
+ (license license:expat)))
+
(define-public glm
(package
(name "glm")
(define-public xaos
(package
(name "xaos")
- (version "4.0")
+ (version "4.2.1")
(source (origin
(method git-fetch)
(uri (git-reference
(file-name (git-file-name name version))
(sha256
(base32
- "00110p5xscjsmn7avfqgydn656zbmdj3l3y2fpv9b4ihzpid8n7a"))))
+ "0maw5am6rrkyjrprfg113zjq37mqj0iaznkg4h2927ff7wrprc94"))))
(build-system gnu-build-system)
(native-inputs `(("gettext" ,gettext-minimal)
- ("qtbase" ,qtbase)
+ ("qtbase" ,qtbase-5)
("qttools" ,qttools)))
(inputs `(("libx11" ,libx11)
("zlib" ,zlib)
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
- ;; The DESTDIR is originally set to install the xaos binary to
- ;; the "bin" folder inside the build directory. Setting make
- ;; flags doesn't seem to change this.
(substitute* "XaoS.pro"
+ ;; The DESTDIR is originally set to install the xaos binary to
+ ;; the "bin" folder inside the build directory. Setting make
+ ;; flags doesn't seem to change this.
(("DESTDIR.*$")
- (string-append "DESTDIR=" out "/bin")))
+ (string-append "DESTDIR=" out "/bin"))
+ ;; Set the correct path to the lrelease binary.
+ (("lrelease-qt5") "lrelease"))
(substitute* "src/include/config.h"
(("/usr/share/XaoS")
(string-append out "/share/XaoS")))
(origin
(method git-fetch)
(uri (git-reference
- (url "https://github.com/LLNL/hypre")
+ (url "https://github.com/hypre-space/hypre")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
'("HYPRE_usr_manual"
"HYPRE_ref_manual")))
#t))))))
- (home-page "http://www.llnl.gov/casc/hypre/")
+ (home-page "https://computing.llnl.gov/projects\
+/hypre-scalable-linear-solvers-multigrid-methods")
(synopsis "Library of solvers and preconditioners for linear equations")
(description
"HYPRE is a software library of high performance preconditioners and
`(("boost" ,boost)
("glu" ,glu)
("mesa" ,mesa)
- ("qtbase" ,qtbase)))
+ ("qtbase" ,qtbase-5)))
(build-system cmake-build-system)
(synopsis "Toolset for the mCRL2 formal specification language")
(description
(base32
"0vh7cd1915bjqzkdp3sk25ngy8cq624mkh8c53c5bnzk357kb0fk"))))
(build-system cmake-build-system)
- (inputs `(("qtbase" ,qtbase)))
+ (inputs `(("qtbase" ,qtbase-5)))
(native-inputs `(("qttools" ,qttools)))
(arguments
`(#:phases
(define-public libqalculate
(package
(name "libqalculate")
- (version "3.8.0")
+ (version "3.19.0")
(source
(origin
(method git-fetch)
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1vbaza9c7159xf2ym90l0xkyj2mp6c3hbghhsqn29yvz08fda9df"))
+ (base32 "1w44407wb552q21dz4m2nwwdi8b9hzjb2w1l3ffsikzqckc7wbyj"))
(patches
(search-patches "libqalculate-3.8.0-libcurl-ssl-fix.patch"))))
(build-system gnu-build-system)
(define-public qalculate-gtk
(package
(name "qalculate-gtk")
- (version "3.8.0")
+ (version "3.19.0")
(source
(origin
(method git-fetch)
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "0nsg6dzg5r7rzqr671nvrf1c50rjwpz7bxv5f20i4s7agizgv840"))))
+ (base32 "1nrx7gp6f1yalbdda1gb97azhbr4xclq2xf08vvbvsk8jfd6fd2v"))))
(build-system glib-or-gtk-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
;; 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")
integrals and equations), arbitrary precision, uncertainty propagation,
interval arithmetic, plotting.")
(license license:gpl2+)))
+
+(define-public numdiff
+ (package
+ (name "numdiff")
+ (version "5.9.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://savannah/numdiff/numdiff-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1vzmjh8mhwwysn4x4m2vif7q2k8i19x8azq7pzmkwwj4g48lla47"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:tests? #f ; There are no tests.
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'compress-documentation 'delete-precompressed-info-file
+ (lambda _
+ (delete-file (string-append (assoc-ref %outputs "out")
+ "/share/info/numdiff.info.gz"))
+ #t)))))
+ (home-page "https://nongnu.org/numdiff/")
+ (synopsis "Compare files with numeric fields")
+ (description
+ "Numdiff compares files line by line and field by field, ignoring small
+numeric differences and differences in numeric formats.")
+ (license license:gpl3+)))
+
+(define-public why3
+ (package
+ (name "why3")
+ (version "1.3.3")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://gforge.inria.fr/frs/download.php/file"
+ "/38367/why3-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1n0a2nn1gnk0zg339lh698g4wpk7m8m1vyi2yvifd5adqvk4milw"))))
+ (build-system ocaml-build-system)
+ (native-inputs
+ `(("coq" ,coq)
+ ("ocaml" ,ocaml)
+ ("which" ,which)))
+ (propagated-inputs
+ `(("camlzip" ,camlzip)
+ ("ocaml-graph" ,ocaml-graph)
+ ("ocaml-menhir" ,ocaml-menhir)
+ ("ocaml-num" ,ocaml-num)
+ ("ocaml-zarith" ,ocaml-zarith)))
+ (inputs
+ `(("coq-flocq" ,coq-flocq)
+ ("emacs-minimal" ,emacs-minimal)
+ ("zlib" ,zlib)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'fix-configure
+ (lambda _
+ (setenv "CONFIG_SHELL" (which "sh"))
+ (substitute* "configure"
+ ;; find ocaml-num in the correct directory
+ (("\\$DIR/nums.cma") "$DIR/num.cma")
+ (("\\$DIR/num.cmi") "$DIR/core/num.cmi"))
+ #t))
+ (add-after 'configure 'fix-makefile
+ (lambda _
+ (substitute* "Makefile"
+ ;; find ocaml-num in the correct directory
+ (("site-lib/num") "site-lib"))
+ #t))
+ (add-after 'install 'install-lib
+ (lambda _
+ (invoke "make" "byte")
+ (invoke "make" "install-lib")
+ #t)))))
+ (home-page "http://why3.lri.fr")
+ (synopsis "Deductive program verification")
+ (description "Why3 provides a language for specification and programming,
+called WhyML, and relies on external theorem provers, both automated and
+interactive, to discharge verification conditions. Why3 comes with a standard
+library of logical theories (integer and real arithmetic, Boolean operations,
+sets and maps, etc.) and basic programming data structures (arrays, queues,
+hash tables, etc.). A user can write WhyML programs directly and get
+correct-by-construction OCaml programs through an automated extraction
+mechanism. WhyML is also used as an intermediate language for the verification
+of C, Java, or Ada programs.")
+ (license license:lgpl2.1)))
+
+(define-public frama-c
+ (package
+ (name "frama-c")
+ (version "22.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://frama-c.com/download/frama-c-"
+ version "-Titanium.tar.gz"))
+ (sha256
+ (base32
+ "1mq1fijka95ydrla486yr4w6wdl9l7vmp512s1q00b0p6lmfwmkh"))))
+ (build-system ocaml-build-system)
+ (arguments
+ `(#:tests? #f; no test target in Makefile
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'export-shell
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "CONFIG_SHELL" (string-append (assoc-ref inputs "bash")
+ "/bin/sh"))
+ #t)))))
+ (inputs
+ `(("gmp" ,gmp)))
+ (propagated-inputs
+ `(("ocaml-biniou" ,ocaml-biniou)
+ ("ocaml-easy-format" ,ocaml-easy-format)
+ ("ocaml-graph" ,ocaml-graph)
+ ("ocaml-yojson" ,ocaml-yojson)
+ ("ocaml-zarith" ,ocaml-zarith)
+ ("why3" ,why3)))
+ (native-search-paths
+ (list (search-path-specification
+ (variable "FRAMAC_SHARE")
+ (files '("share/frama-c"))
+ (separator #f))
+ (search-path-specification
+ (variable "FRAMAC_LIB")
+ (files '("lib/frama-c"))
+ (separator #f))))
+ (home-page "http://frama-c.com")
+ (synopsis "C source code analysis platform")
+ (description "Frama-C is an extensible and collaborative platform dedicated
+to source-code analysis of C software. The Frama-C analyzers assist you in
+various source-code-related activities, from the navigation through unfamiliar
+projects up to the certification of critical software.")
+ (license license:lgpl2.1+)))