;;; Copyright © 2013, 2014, 2015, 2016, 2019, 2020 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014, 2016, 2017 John Darrington <jmd@gnu.org>
-;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020 Eric Bavier <bavier@posteo.net>
+;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Eric Bavier <bavier@posteo.net>
;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2014 Mathieu Lirzin <mathieu.lirzin@openmailbox.org>
;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2015, 2018 Mark H Weaver <mhw@netris.org>
-;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; 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, 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 © 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 Nicolas Goaziou <mail@nicolasgoaziou.fr>
+;;; 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 less)
#:use-module (gnu packages lisp)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages llvm)
#:use-module (gnu packages logging)
#:use-module (gnu packages lua)
#:use-module (gnu packages gnome)
#: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
(define-public units
(package
(name "units")
- (version "2.19")
+ (version "2.21")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/units/units-" version
".tar.gz"))
(sha256 (base32
- "0mk562g7dnidjgfgvkxxpvlba66fh1ykmfd9ylzvcln1vxmi6qj2"))))
+ "1bybhqs4yrly9myb5maz3kdmf8k4fhk2m1d5cbcryn40z6lq0gkc"))))
(build-system gnu-build-system)
(inputs
`(("readline" ,readline)
(define-public sleef
(package
(name "sleef")
- (version "3.4.1")
+ (version "3.5.1")
(source
(origin
(method git-fetch)
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "1gvf7cfvszmgjrsqivwmyy1jnp3hy80dmszxx827lhjz8yqq5019"))))
+ (base32 "1jybqrl2dvjxzg30xrhh847s375n2jr1pix644wi6hb5wh5mx3f7"))))
(build-system cmake-build-system)
(arguments
'(#:configure-flags (list "-DCMAKE_BUILD_TYPE=Release"
(define-public glpk
(package
(name "glpk")
- (version "4.65")
+ (version "5.0")
(source
(origin
(method url-fetch)
version ".tar.gz"))
(sha256
(base32
- "040sfaa9jclg2nqdh83w71sv9rc1sznpnfiripjdyr48cady50a2"))))
+ "05bgxidxj8d9xdp82niy7cy36w181cxq7p8vc3y2ixshpgp1642a"))))
(build-system gnu-build-system)
(inputs
`(("gmp" ,gmp)))
(arguments
- `(#:configure-flags '("--with-gmp")))
+ `(#:configure-flags '("--with-gmp"
+ "--disable-static")))
(home-page "https://www.gnu.org/software/glpk/")
(synopsis "GNU Linear Programming Kit, supporting the MathProg language")
(description
LP/MIP solver is included in the package.")
(license license:gpl3+)))
+(define-public glpk-4
+ (package
+ (inherit glpk)
+ (name "glpk")
+ (version "4.65")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/glpk/glpk-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "040sfaa9jclg2nqdh83w71sv9rc1sznpnfiripjdyr48cady50a2"))))))
+
(define-public 4ti2
(package
(name "4ti2")
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.2.7")
+ (version "5.4.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/gnuplot/gnuplot/"
version "/gnuplot-"
version ".tar.gz"))
(sha256
- (base32 "1vglp4la40f5dpj0zdj63zprrkyjgzy068p35bz5dqxjyczm1zlp"))))
+ (base32 "03jrqs5lvxmbbz2c4g17dn2hrxqwd3hfadk9q8wbkbkyas2h8sbb"))))
(build-system gnu-build-system)
(inputs `(("readline" ,readline)
("cairo" ,cairo)
("texlive" ,texlive-tiny)))
(arguments `(#:configure-flags (list (string-append
"--with-texdir=" %output
- "/texmf-local/tex/latex/gnuplot"))))
+ "/texmf-local/tex/latex/gnuplot"))
+ ;; Plot on a dumb terminal during tests.
+ #:make-flags '("GNUTERM=dumb")))
(home-page "http://www.gnuplot.info")
(synopsis "Command-line driven graphing utility")
(description "Gnuplot is a portable command-line driven graphing
(define-public hdf5-1.8
(package
(name "hdf5")
- (version "1.8.21")
+ (version "1.8.22")
(source
(origin
(method url-fetch)
(string-append major minor)))
"/src/hdf5-" version ".tar.bz2")))
(sha256
- (base32 "03glk4w4wyb1jyb443g53y3y1ncnf6mj2cqwm6avfr2awkgb3cg5"))
- (patches (search-patches "hdf5-config-date.patch"
- "hdf5-1.8-mpi-deprecations.patch"))))
+ (base32 "194ki2s5jrgl4czkvy5nc9nwjyapah0fj72l0gb0aysplp38i6v8"))
+ (patches (search-patches "hdf5-config-date.patch"))))
(build-system gnu-build-system)
(inputs
`(("zlib" ,zlib)))
;; 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
(base32 "0pm5xxry55i0h7wmvc7svzdaa90rnk7h78rrjmnlkz2ygsn8y082"))
(patches (search-patches "hdf5-config-date.patch"))))))
+(define-public hdf5-1.12
+ (package
+ (inherit hdf5-1.8)
+ (version "1.12.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (list (string-append "https://support.hdfgroup.org/ftp/HDF5/releases/"
+ "hdf5-" (version-major+minor version)
+ "/hdf5-" version "/src/hdf5-"
+ version ".tar.bz2")
+ (string-append "https://support.hdfgroup.org/ftp/HDF5/"
+ "current"
+ (apply string-append
+ (take (string-split version #\.) 2))
+ "/src/hdf5-" version ".tar.bz2")))
+ (sha256
+ (base32 "0qazfslkqbmzg495jafpvqp0khws3jkxa0z7rph9qvhacil6544p"))
+ (patches (search-patches "hdf5-config-date.patch"))))))
+
(define-public hdf5
;; Default version of HDF5.
hdf5-1.10)
(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
(define-public octave-cli
(package
(name "octave-cli")
- (version "5.2.0")
+ (version "6.2.0")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/octave/octave-"
- version ".tar.lz"))
+ version ".tar.xz"))
(sha256
(base32
- "1848dq6nxzal8gwjrcp6xhi5gq96w89nss9d9rz75q408gb3mbl6"))))
+ "06id09zspya24gshcwgp039cp35c06150mdlxysawgnbrhj16wkv"))))
(build-system gnu-build-system)
(inputs
`(("alsa-lib" ,alsa-lib)
("texinfo" ,texinfo)
("zlib" ,zlib)))
(native-inputs
- `(("lzip" ,lzip)
- ("gfortran" ,gfortran)
+ `(("gfortran" ,gfortran)
("pkg-config" ,pkg-config)
("perl" ,perl)
;; The following inputs are not actually used in the build process.
"\"" (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.
(substitute* "configure"
(("qscintilla2-qt5")
"qscintilla2_qt5"))
- #t))))))))
+ #t))))))
+ (synopsis "High-level language for numerical computation (with GUI)")))
(define-public opencascade-oce
(package
(define-public veusz
(package
(name "veusz")
- (version "3.2.1")
+ (version "3.3.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "veusz" version))
(sha256
- (base32 "00vmfpvyd6f33l5awlf02qdik3gmbhzyfizfwwbx7qnam2i9bbwy"))))
+ (base32 "1q7hi1qwwg4pgiz62isvv1pia85m13bspdpp1q3mrnwl11in0ag0"))))
(build-system python-build-system)
(arguments
`(;; Tests will fail because they depend on optional packages like
(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)
(uri (pypi-uri "petsc4py" version))
(sha256
(base32
- "1rm1qj5wlkhxl39by9n78lh3gbmii31wsnb8j1rr5hvfr5xgbx2q"))))
+ "1rm1qj5wlkhxl39by9n78lh3gbmii31wsnb8j1rr5hvfr5xgbx2q"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Ensure source file is regenerated in the build phase.
+ (delete-file "src/petsc4py.PETSc.c")
+ ;; Remove legacy GC code. See
+ ;; https://bitbucket.org/petsc/petsc4py/issues/125.
+ (substitute* "src/PETSc/cyclicgc.pxi"
+ ((".*gc_refs.*") "" )
+ ((".*PyGC_Head.*") ""))
+ #t))))
(build-system python-build-system)
(arguments
`(#:phases
#t))
(add-before 'check 'mpi-setup
,%openmpi-setup))))
+ (native-inputs
+ `(("python-cython" ,python-cython)))
(inputs
`(("petsc" ,petsc-openmpi)
("python-numpy" ,python-numpy)))
"test.log" "error.log" "RDict.db"
"uninstall.py"))
#t))))))
- (home-page "http://slepc.upv.es")
+ (home-page "https://slepc.upv.es")
(synopsis "Scalable library for eigenproblems")
(description "SLEPc is a software library for the solution of large sparse
eigenproblems on parallel computers. It can be used for the solution of
(define-public metamath
(package
(name "metamath")
- (version "0.192")
+ (version "0.193")
(source
(origin
(method git-fetch)
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "1k31zw36h2b0w5r6sbn9qc0v4hj42vw53qlhf5l7q2h3p5qlzvic"))))
+ (base32 "1s9hyknfvhj86g3giayyf3dxzg23iij0rs7bdvj075v9qbyhqn9b"))))
(build-system gnu-build-system)
(native-inputs
`(("autoconf" ,autoconf)
(define-public superlu
(package
(name "superlu")
- (version "5.2.1")
+ (version "5.2.2")
(source
(origin
(method url-fetch)
(uri (string-append "https://portal.nersc.gov/project/sparse/superlu/"
"superlu_" version ".tar.gz"))
(sha256
- (base32 "0qzlb7cd608q62kyppd0a8c65l03vrwqql6gsm465rky23b6dyr8"))
+ (base32 "13520vk6fqspyl22cq4ak2jh3rlmhja4czq56j75fdx65fkk80s7"))
(modules '((guix build utils)))
(snippet
;; Replace the non-free implementation of MC64 with a stub adapted
(define-public superlu-dist
(package
(name "superlu-dist")
- (version "6.2.0")
+ (version "6.4.0")
(source
(origin
- (method url-fetch)
- (uri (string-append "https://portal.nersc.gov/project/sparse/superlu/"
- "superlu_dist_" version ".tar.gz"))
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/xiaoyeli/superlu_dist")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
(sha256
- (base32 "1ynmwqajc9sc3my2hssa5k9s58ggvizqv9rdss0j7w99pbh5mnvw"))
+ (base32 "0fa29yr72p4yq5ln4rgfsawmi5935n4qcr5niz6864bjladz4lql"))
(modules '((guix build utils)))
(snippet
;; Replace the non-free implementation of MC64 with a stub
'(begin
+ (make-file-writable "SRC/mc64ad_dist.c")
(call-with-output-file "SRC/mc64ad_dist.c"
(lambda (port)
(display "
(define-public scotch
(package
(name "scotch")
- (version "6.0.6")
+ (version "6.1.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://gforge.inria.fr/frs/download.php/"
"latestfile/298/scotch_" version ".tar.gz"))
(sha256
- (base32 "1ky4k9r6jvajhqaqnnx6h8fkmds2yxgp70dpr1qzwcyhi2nhqvv8"))
+ (base32 "1184fcv4wa2df8szb5lan6pjh0raarr45pk8ilpvbz23naikzg53"))
(patches (search-patches "scotch-build-parallelism.patch"
"scotch-integer-declarations.patch"))))
(build-system gnu-build-system)
"COMMON_PTHREAD"
"COMMON_RANDOM_FIXED_SEED"
"INTSIZE64" ;use 'int64_t'
- ;; Prevents symbolc clashes with libesmumps
+ ;; Prevents symbol clashes with libesmumps
"SCOTCH_RENAME"
;; XXX: Causes invalid frees in superlu-dist tests
;; "SCOTCH_PTHREAD"
(synopsis
"Programs and libraries for graph algorithms (32-bit integers)")))
+(define-public scotch-shared
+ (package (inherit scotch)
+ (name "scotch-shared")
+ (native-inputs
+ `(("gcc" ,gcc)
+ ("flex" ,flex)
+ ("bison" ,bison)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments scotch)
+ ((#:phases scotch-shared-phases)
+ `(modify-phases ,scotch-shared-phases
+ (replace
+ 'configure
+ (lambda _
+ ;; Otherwise, the RUNPATH will lack the final path component.
+ (setenv "RPATHFLAGS" (string-append "-Wl,-rpath="
+ (assoc-ref %outputs "out") "/lib"))
+ (call-with-output-file "Makefile.inc"
+ (lambda (port)
+ (format port "
+EXE =
+LIB = .so
+OBJ = .o
+MAKE = make
+AR = gcc
+ARFLAGS = -shared -o
+CAT = cat
+CCS = gcc
+CCP = mpicc
+CCD = gcc
+CPPFLAGS =~{ -D~a~}
+CFLAGS = -O2 -g -fPIC $(CPPFLAGS) $(RPATHFLAGS)
+CLIBFLAGS = -shared -fPIC
+LDFLAGS = -lz -lm -lrt -lpthread -Xlinker --no-as-needed
+CP = cp
+LEX = flex -Pscotchyy -olex.yy.c
+LN = ln
+MKDIR = mkdir
+MV = mv
+RANLIB = echo
+YACC = bison -pscotchyy -y -b y
+"
+ '("COMMON_FILE_COMPRESS_GZ"
+ "COMMON_PTHREAD"
+ "COMMON_RANDOM_FIXED_SEED"
+ "INTSIZE64" ;use 'int64_t'
+ ;; Prevents symbolc clashes with libesmumps
+ "SCOTCH_RENAME"
+ ;; XXX: Causes invalid frees in superlu-dist tests
+ ;; "SCOTCH_PTHREAD"
+ ;; "SCOTCH_PTHREAD_NUMBER=2"
+ "restrict=__restrict"
+ ))))#t))
+ (delete 'check)))))
+ (synopsis
+ "Programs and libraries for graph algorithms (shared libraries version)")))
+
(define-public pt-scotch
(package (inherit scotch)
(name "pt-scotch")
(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 wxmaxima
(package
(name "wxmaxima")
- (version "20.06.6")
+ (version "21.04.0")
(source
(origin
(method git-fetch)
(commit (string-append "Version-" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "054f7n5kx75ng5j20rd5q27n9xxk03mrd7sbxyym1lsswzimqh4w"))))
+ (base32 "0xj95zk16x8kac8qhzd5kvf3b00x7hgdw85da9ww63xyndvhh2lw"))))
(build-system cmake-build-system)
(native-inputs
- `(("gettext" ,gettext-minimal)
- ("xorg-server" ,xorg-server-for-tests)))
- ;; TODO: Add libomp for multithreading support.
- ;; As of right now, enabling libomp causes the imageCells.wxm test to fail.
+ `(("gettext" ,gettext-minimal)))
(inputs
`(("wxwidgets" ,wxwidgets)
("maxima" ,maxima)
("gtk+" ,gtk+)
("shared-mime-info" ,shared-mime-info)))
(arguments
- `(#:test-target "test"
+ `(#:tests? #f ; tests fail non-deterministically
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-doc-path
(substitute* "src/Dirstructure.cpp"
(("/doc/wxmaxima-\\%s") "/doc/wxmaxima"))
#t))
- (add-before 'check 'pre-check
- (lambda _
- ;; Tests require a running X server.
- (system "Xvfb :1 &")
- (setenv "DISPLAY" ":1")
- (setenv "HOME" (getcwd))
- #t))
(add-after 'install 'wrap-program
(lambda* (#:key inputs outputs #:allow-other-keys)
(wrap-program (string-append (assoc-ref outputs "out")
(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.9.0")
(source
(origin
(method git-fetch)
(file-name (git-file-name name version))
(sha256
(base32
- "0qjlyfxs8s48rs63c2fzspisgq1kk4bwkgnhmh125hgkdhrq2w1c"))
+ "1zhkix58afw92s7p291prljdm3yi0pjg1kbi3lczdb8rb14jkz5n"))
(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"
;; Flags for cmake (required to build GraphBLAS and Mongoose)
" -DCMAKE_C_FLAGS_RELEASE=\"$(CFLAGS) $(CPPFLAGS)\""
" -DCMAKE_CXX_FLAGS_RELEASE=\"$(CXXFLAGS) $(CPPFLAGS)\""
" -DCMAKE_SKIP_RPATH=TRUE"
- " -DCMAKE_BUILD_TYPE=Release")
+ " -DCMAKE_BUILD_TYPE=Release"
+ " -DCMAKE_INSTALL_LIBDIR=lib")
(string-append "INSTALL_LIB="
(assoc-ref %outputs "out") "/lib")
(string-append "INSTALL_INCLUDE="
Failure to do so will result in a library with poor performance.")
(license license:bsd-3)))
+(define-public cglm
+ (package
+ (name "cglm")
+ (version "0.8.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/recp/cglm")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1lcfl9ph4bnl3hckpx4hzwh8r4llnw94ik75igc5qy38wk468gmk"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags
+ (list "-DCGLM_USE_TEST=ON")))
+ (home-page "https://github.com/recp/cglm")
+ (synopsis "Mathematics C library for graphics programming")
+ (description
+ "@acronym{CGLM, C OpenGL Mathematics} is an optimised 3D maths library
+for graphics software based on the @acronym{GLSL, OpenGL Shading Language}
+specifications.
+
+It's similar to the original C++ GLM library but written in C99 and compatible
+with C89.")
+ (license license:expat)))
+
(define-public glm
(package
(name "glm")
(define-public dealii
(package
(name "dealii")
- (version "9.1.1")
+ (version "9.2.0")
(source
(origin
(method url-fetch)
"download/v" version "/dealii-" version ".tar.gz"))
(sha256
(base32
- "0xhjv0gzswpjbc43xbrpwfc5848g508l01855nszx3g5gwzlhnzw"))
+ "0fm4xzrnb7dfn4415j24d8v3jkh0lssi86250x2f5wgi83xq4nnh"))
(modules '((guix build utils)))
(snippet
;; Remove bundled sources: UMFPACK, TBB, muParser, and boost
(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)
(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
(define-public matio
(package
(name "matio")
- (version "1.5.6")
+ (version "1.5.19")
(source
(origin
(method url-fetch)
"matio-" version ".tar.gz"))
(sha256
(base32
- "0y2qymgxank8wdiwc68ap8bxdzrhvyw86i29yh3xgn4z1njfd9ir"))))
+ "0vr8c1mz1k6mz0sgh6n3scl5c3a71iqmy5fnydrgq504icj4vym4"))))
(build-system gnu-build-system)
(inputs
`(("zlib" ,zlib)
(define-public z3
(package
(name "z3")
- (version "4.8.8")
+ (version "4.8.9")
(home-page "https://github.com/Z3Prover/z3")
(source (origin
(method git-fetch)
(file-name (git-file-name name version))
(sha256
(base32
- "1rn538ghqwxq0v8i6578j8mflk6fyv0cp4hjfqynzvinjbps56da"))))
+ "1hnbzq10d23drd7ksm3c1n2611c3kd0q0yxgz8y78zaafwczvwxx"))))
(build-system gnu-build-system)
(arguments
`(#:imported-modules ((guix build python-build-system)
;; Test scripts are generated, patch the shebang
(("#!/bin/bash") (string-append "#!" (which "sh"))))
#t)))))
- (home-page "http://elpa.mpcdf.mpg.de")
+ (home-page "https://elpa.mpcdf.mpg.de")
(synopsis "Eigenvalue solvers for symmetric matrices")
(description
"The ELPA library provides efficient and scalable direct eigensolvers for
(home-page "https://sites.google.com/site/mohammedisam2000/tcalc")
(license license:gpl3+)))
+(define-public tiny-bignum
+ (let ((commit "1d7a1f9b8e77316187a6b3eae8e68d60a6f9a4d4"))
+ (package
+ (name "tiny-bignum")
+ (version (git-version "0" "0" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/kokke/tiny-bignum-c")
+ (commit commit)))
+ (file-name (git-file-name "tiny-bignum" commit))
+ (sha256
+ (base32 "0vj71qlhlaa7d92bfar1kwqv6582dqrby8x3kdw0yzh82k2023g6"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (add-after 'unpack 'patch-tests
+ (lambda _
+ (substitute* "scripts/test_rand.py"
+ (("\t") " ")
+ (("\" % (\\w+)" _ symbol) (string-append "\" % int(" symbol ")")))
+ #t))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "make" "test"))
+ #t))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((share (string-append (assoc-ref outputs "out") "/share"))
+ (doc (string-append (assoc-ref outputs "out") "/doc")))
+ (mkdir-p share)
+ (install-file "bn.c" share)
+ (install-file "bn.h" share)
+ (mkdir-p doc)
+ (install-file "LICENSE" doc)
+ (install-file "README.md" doc))
+ #t)))))
+ (native-inputs
+ `(("python" ,python-wrapper)))
+ (home-page "https://github.com/kokke/tiny-bignum-c")
+ (synopsis "Small portable multiple-precision unsigned integer arithmetic in C")
+ (description
+ "This library provides portable Arbitrary-precision unsigned integer
+arithmetic in C, for calculating with large numbers. Basic arithmetic (+, -,
+*, /, %) and bitwise operations (&, |, ^. <<, >>) plus increments, decrements
+and comparisons are supported.")
+ (license license:unlicense))))
+
(define-public sundials
(package
(name "sundials")
(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)
integrals and equations), arbitrary precision, uncertainty propagation,
interval arithmetic, plotting.")
(license license:gpl2+)))
+
+(define-public numdiff
+ (package
+ (name "numdiff")
+ (version "5.9.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://savannah/numdiff/numdiff-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1vzmjh8mhwwysn4x4m2vif7q2k8i19x8azq7pzmkwwj4g48lla47"))))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:tests? #f ; There are no tests.
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'compress-documentation 'delete-precompressed-info-file
+ (lambda _
+ (delete-file (string-append (assoc-ref %outputs "out")
+ "/share/info/numdiff.info.gz"))
+ #t)))))
+ (home-page "https://nongnu.org/numdiff/")
+ (synopsis "Compare files with numeric fields")
+ (description
+ "Numdiff compares files line by line and field by field, ignoring small
+numeric differences and differences in numeric formats.")
+ (license license:gpl3+)))
+
+(define-public why3
+ (package
+ (name "why3")
+ (version "1.3.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://gforge.inria.fr/frs/download.php/file"
+ "/38291/why3-" version ".tar.gz"))
+ (sha256
+ (base32
+ "16zcrc60zz2j3gd3ww93z2z9x2jkxb3kr57y8i5rcgmacy7mw3bv"))))
+ (build-system ocaml-build-system)
+ (native-inputs
+ `(("coq" ,coq)
+ ("ocaml" ,ocaml)
+ ("which" ,which)))
+ (propagated-inputs
+ `(("camlzip" ,camlzip)
+ ("ocaml-graph" ,ocaml-graph)
+ ("ocaml-menhir" ,ocaml-menhir)
+ ("ocaml-num" ,ocaml-num)
+ ("ocaml-zarith" ,ocaml-zarith)))
+ (inputs
+ `(("coq-flocq" ,coq-flocq)
+ ("emacs-minimal" ,emacs-minimal)
+ ("zlib" ,zlib)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'fix-configure
+ (lambda _
+ (setenv "CONFIG_SHELL" (which "sh"))
+ (substitute* "configure"
+ ;; find ocaml-num in the correct directory
+ (("\\$DIR/nums.cma") "$DIR/../nums.cma")
+ (("\\$DIR/num.cmi") "$DIR/../num.cmi"))
+ #t))
+ (add-after 'configure 'fix-makefile
+ (lambda _
+ (substitute* "Makefile"
+ ;; find ocaml-num in the correct directory
+ (("site-lib/num") "site-lib"))
+ #t))
+ (add-after 'install 'install-lib
+ (lambda _
+ (invoke "make" "byte")
+ (invoke "make" "install-lib")
+ #t)))))
+ (home-page "http://why3.lri.fr")
+ (synopsis "Deductive program verification")
+ (description "Why3 provides a language for specification and programming,
+called WhyML, and relies on external theorem provers, both automated and
+interactive, to discharge verification conditions. Why3 comes with a standard
+library of logical theories (integer and real arithmetic, Boolean operations,
+sets and maps, etc.) and basic programming data structures (arrays, queues,
+hash tables, etc.). A user can write WhyML programs directly and get
+correct-by-construction OCaml programs through an automated extraction
+mechanism. WhyML is also used as an intermediate language for the verification
+of C, Java, or Ada programs.")
+ (license license:lgpl2.1)))
+
+(define-public frama-c
+ (package
+ (name "frama-c")
+ (version "22.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://frama-c.com/download/frama-c-"
+ version "-Titanium.tar.gz"))
+ (sha256
+ (base32
+ "1mq1fijka95ydrla486yr4w6wdl9l7vmp512s1q00b0p6lmfwmkh"))))
+ (build-system ocaml-build-system)
+ (arguments
+ `(#:tests? #f; no test target in Makefile
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'export-shell
+ (lambda* (#:key inputs #:allow-other-keys)
+ (setenv "CONFIG_SHELL" (string-append (assoc-ref inputs "bash")
+ "/bin/sh"))
+ #t)))))
+ (inputs
+ `(("gmp" ,gmp)))
+ (propagated-inputs
+ `(("ocaml-biniou" ,ocaml-biniou)
+ ("ocaml-easy-format" ,ocaml-easy-format)
+ ("ocaml-graph" ,ocaml-graph)
+ ("ocaml-yojson" ,ocaml-yojson)
+ ("ocaml-zarith" ,ocaml-zarith)
+ ("why3" ,why3)))
+ (native-search-paths
+ (list (search-path-specification
+ (variable "FRAMAC_SHARE")
+ (files '("share/frama-c"))
+ (separator #f))
+ (search-path-specification
+ (variable "FRAMAC_LIB")
+ (files '("lib/frama-c"))
+ (separator #f))))
+ (home-page "http://frama-c.com")
+ (synopsis "C source code analysis platform")
+ (description "Frama-C is an extensible and collaborative platform dedicated
+to source-code analysis of C software. The Frama-C analyzers assist you in
+various source-code-related activities, from the navigation through unfamiliar
+projects up to the certification of critical software.")
+ (license license:lgpl2.1+)))