;;; Copyright © 2013, 2014, 2015, 2016 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 Eric Bavier <bavier@member.fsf.org>
+;;; Copyright © 2014, 2015, 2016, 2017 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2014 Mathieu Lirzin <mathieu.lirzin@openmailbox.org>
-;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015 Fabian Harfert <fhmgufs@web.de>
;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
+;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net>
;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
;;; Copyright © 2017 Paul Garlick <pgarlick@tourbillion-technology.com>
;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
+;;; Copyright © 2017 Theodoros Foradis <theodoros.for@openmailbox.org>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (guix build-system ocaml)
#:use-module (guix build-system r)
#:use-module (gnu packages algebra)
+ #:use-module (gnu packages autotools)
#:use-module (gnu packages bison)
#:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages tls)
#:use-module (gnu packages wxwidgets)
#:use-module (gnu packages xml)
- #:use-module (gnu packages zip)
#:use-module (srfi srfi-1))
(define-public aris
(define-public coda
(package
(name "coda")
- (version "2.18")
+ (version "2.18.2")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/stcorp/coda/releases/download/"
version "/coda-" version ".tar.gz"))
(sha256
- (base32 "11asla1ap8vd73farqjlpb179sfiy0biydcwxjfcakrp9sf8v9bs"))
+ (base32 "01fnqcby9jijvf3jxr1fk4bny059lvvq5wbqm7ns60ilykfdnm6a"))
(patches (search-patches "coda-use-system-libs.patch"))
(modules '((guix build utils)))
(snippet
(define-public gsl
(package
(name "gsl")
- (version "2.3")
+ (version "2.4")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/gsl/gsl-"
version ".tar.gz"))
(sha256
(base32
- "1yxdzqjwmi2aid650fa9zyr8llw069x7lm489wx9nnfdi6vh09an"))
+ "16yfs5n444s03np1naj6yp1fsysd42kdscxzkg0k2yvfjixx0ijd"))
(patches (search-patches "gsl-test-i686.patch"))))
(build-system gnu-build-system)
(arguments
- `(#:parallel-tests? #f
- ;; Currently there are numerous tests that fail on "exotic"
+ `(;; 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)))
the OCaml language.")
(license license:gpl3+)))
+(define-public ocaml4.01-gsl
+ (package-with-ocaml4.01 ocaml-gsl))
+
(define-public glpk
(package
(name "glpk")
- (version "4.61")
+ (version "4.63")
(source
(origin
(method url-fetch)
version ".tar.gz"))
(sha256
(base32
- "1adbvwiaqrv9pql9ry3lhn2vfsxnff2vh4fs477d90kpfx0xwrlq"))))
+ "1xp7nclmp8inp20968bvvfcwmz3mz03sbm0v3yjz8aqwlpqjfkci"))))
(build-system gnu-build-system)
(inputs
`(("gmp" ,gmp)))
(define-public lapack
(package
(name "lapack")
- (version "3.5.0")
+ (version "3.7.1")
(source
(origin
(method url-fetch)
version ".tgz"))
(sha256
(base32
- "0lk3f97i9imqascnlf6wr5mjpyxqcdj73pgj97dj2mgvyg9z1n4s"))))
+ "1j51r7n5w4k7r3lrvy7710xrpkg40wf4rqnmngfz6ck9ypckzign"))))
(build-system cmake-build-system)
(home-page "http://www.netlib.org/lapack/")
(inputs `(("fortran" ,gfortran)
("python" ,python-2)))
(arguments
- `(#:configure-flags '("-DBUILD_SHARED_LIBS:BOOL=YES"
- "-DLAPACKE=ON")
+ `(#:configure-flags (list
+ ;; Install to PREFIX/lib (the default is
+ ;; PREFIX/lib64).
+ (string-append "-DCMAKE_INSTALL_LIBDIR="
+ (assoc-ref %outputs "out")
+ "/lib")
+
+ "-DBUILD_SHARED_LIBS:BOOL=YES"
+ "-DLAPACKE=ON"
+
+ ;; Build the 'LAPACKE_clatms' functions.
+ "-DLAPACKE_WITH_TMG=ON")
#:phases (alist-cons-before
'check 'patch-python
(lambda* (#:key inputs #:allow-other-keys)
(define-public gnuplot
(package
(name "gnuplot")
- (version "5.0.5")
+ (version "5.0.6")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/gnuplot/gnuplot/"
version ".tar.gz"))
(sha256
(base32
- "0lr065qdlgss8lmy31l7hkmnk9fp4lvqq9qgb1f1209f36zy1wr5"))))
+ "0q5lr6nala3ln6f3yp6g17ziymb9r9gx9zylnw1y3hjmwl9lggjv"))))
(build-system gnu-build-system)
(inputs `(("readline" ,readline)
("cairo" ,cairo)
("pango" ,pango)
("gd" ,gd)
("lua" ,lua)))
- (native-inputs `(("pkg-config" ,pkg-config)
- ("texlive" ,texlive-minimal)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("texlive" ,texlive-tiny)))
(home-page "http://www.gnuplot.info")
(synopsis "Command-line driven graphing utility")
(description "Gnuplot is a portable command-line driven graphing
(define-public hdf4
(package
(name "hdf4")
- (version "4.2.12")
+ (version "4.2.13")
(source
(origin
(method url-fetch)
(uri (string-append "https://support.hdfgroup.org/ftp/HDF/releases/HDF"
version "/src/hdf-" version ".tar.bz2"))
(sha256
- (base32 "020jh563sjyxsgml8l809d2i1d4ms9shivwj3gbm7n0ilxbll8id"))
+ (base32 "1wz0586zh91pqb95wvr0pbh71a8rz358fdj6n2ksp85x2cis9lsm"))
(patches (search-patches "hdf4-architectures.patch"
"hdf4-reproducibility.patch"
"hdf4-shared-fortran.patch"))))
-
(build-system gnu-build-system)
(native-inputs
`(("gfortran" ,gfortran)
#:configure-flags '("--enable-shared")
#:phases
(modify-phases %standard-phases
+ ;; This is inspired by two of Debian's patches.
+ (add-before 'configure 'add-more-aarch64-support
+ (lambda _
+ (substitute* '("mfhdf/ncgen/ncgen.l"
+ "mfhdf/ncgen/ncgenyy.c"
+ "mfhdf/libsrc/netcdf.h.in")
+ (("AIX5L64") "__aarch64__"))
+ #t))
(add-before 'configure 'patchbuild
(lambda _
(substitute*
-R\\$\\(abs_top_builddir\\)/mfhdf/xdr/\\.libs") "")
(("@HDF_BUILD_SHARED_TRUE@AM_LDFLAGS = \
-R\\$\\(abs_top_builddir\\)/mfhdf/libsrc/\\.libs \
--R\\$\\(abs_top_builddir\\)/hdf/src/\\.libs \\$\\(XDR_ADD\\)") "")))))))
+-R\\$\\(abs_top_builddir\\)/hdf/src/\\.libs \\$\\(XDR_ADD\\)") ""))
+ #t))
+ (add-after 'configure 'patch-settings
+ (lambda _
+ ;; libhdf4.settings contains the full path of the
+ ;; compilers used, and its contents are included in
+ ;; .so-files. We truncate the hashes to avoid
+ ;; unnecessary store references to those compilers:
+ (substitute* "libhdf4.settings"
+ (("(/gnu/store/)([a-Z0-9]*)" all prefix hash)
+ (string-append prefix (string-take hash 10) "...")))
+ #t))
+ )))
(home-page "https://www.hdfgroup.org/products/hdf4/")
(synopsis
"Library and multi-object file format for storing and managing data")
(define-public hdf5
(package
(name "hdf5")
- (version "1.8.18")
+ (version "1.8.19")
(source
(origin
(method url-fetch)
- (uri (list (string-append "http://www.hdfgroup.org/ftp/HDF5/releases/"
- "hdf5-" version "/src/hdf5-"
+ (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"
(take (string-split version #\.) 2))
"/src/hdf5-" version ".tar.bz2")))
(sha256
- (base32 "13542vrnl1p35n8vbq0wzk40vddmm33q5nh04j98c7r1yjnxxih1"))
+ (base32 "0f3jfbqpaaq21ighi40qzs52nb52kc2d2yjk541rjmsx20b3ih2r"))
(patches (list (search-patch "hdf5-config-date.patch")))))
(build-system gnu-build-system)
(inputs
`(("zlib" ,zlib)))
+ (native-inputs
+ `(("gfortran" ,gfortran)))
+ (outputs '("out" ; core library
+ "fortran")) ; fortran interface
(arguments
`(;; Some of the users, notably Flann, need the C++ interface.
- #:configure-flags '("--enable-cxx")
+ #:configure-flags '("--enable-cxx"
+ "--enable-fortran"
+ "--enable-fortran2003")
#:phases
(modify-phases %standard-phases
(add-before 'configure 'patch-configure
- (lambda _
+ (lambda* (#:key outputs #:allow-other-keys)
(substitute* "configure"
(("/bin/mv") "mv"))
+ (substitute* "fortran/src/Makefile.in"
+ (("libhdf5_fortran_la_LDFLAGS =")
+ (string-append "libhdf5_fortran_la_LDFLAGS = -Wl-rpath="
+ (assoc-ref outputs "fortran") "/lib")))
+ (substitute* "hl/fortran/src/Makefile.in"
+ (("libhdf5hl_fortran_la_LDFLAGS =")
+ (string-append "libhdf5hl_fortran_la_LDFLAGS = -Wl,-rpath="
+ (assoc-ref outputs "fortran") "/lib")))
+ #t))
+ (add-after 'configure 'patch-settings
+ (lambda _
+ ;; libhdf5.settings contains the full path of the
+ ;; compilers used, and its contents are included in
+ ;; 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)
+ (string-append prefix (string-take hash 10) "...")))
#t))
(add-after 'install 'patch-references
(lambda* (#:key inputs outputs #:allow-other-keys)
(substitute* (find-files bin "h5p?cc")
(("-lz" lib)
(string-append "-L" zlib "/lib " lib)))
- #t))))))
+ #t)))
+ (add-after 'install 'split
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; Move all fortran-related files
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (lib (string-append out "/lib"))
+ (inc (string-append out "/include"))
+ (ex (string-append out "/share/hdf5_examples/fortran"))
+ (fort (assoc-ref outputs "fortran"))
+ (fbin (string-append fort "/bin"))
+ (flib (string-append fort "/lib"))
+ (finc (string-append fort "/include"))
+ (fex (string-append fort "/share/hdf5_examples/fortran")))
+ (mkdir-p fbin)
+ (mkdir-p flib)
+ (mkdir-p finc)
+ (mkdir-p fex)
+ (rename-file (string-append bin "/h5fc")
+ (string-append fbin "/h5fc"))
+ (for-each (lambda (file)
+ (rename-file file
+ (string-append flib "/" (basename file))))
+ (find-files lib ".*fortran.*"))
+ (for-each (lambda (file)
+ (rename-file file
+ (string-append finc "/" (basename file))))
+ (find-files inc ".*mod"))
+ (for-each (lambda (file)
+ (rename-file file
+ (string-append fex "/" (basename file))))
+ (find-files ex ".*"))
+ (delete-file-recursively ex))
+ #t)))))
(home-page "http://www.hdfgroup.org")
(synopsis "Management suite for extremely large and complex data")
(description "HDF5 is a suite that makes possible the management of
(arguments `(#:tests? #f)) ; Tests require googletest *sources*
(inputs `(("lapack" ,lapack)
("fftw" ,fftw)))
- (native-inputs `(("texlive-minimal" ,texlive-minimal)
- ("doxygen" ,doxygen)))
+ ;; FIXME: Even though the fonts are available dvips complains:
+ ;; "Font cmmi10 not found; characters will be left blank."
+ (native-inputs
+ `(("texlive" ,texlive-tiny)
+ ("ghostscript" ,ghostscript)
+ ("doxygen" ,doxygen)))
(home-page "http://itpp.sourceforge.net")
(synopsis "C++ library of maths, signal processing and communication classes")
(description "IT++ is a C++ library of mathematical, signal processing and
("libjpeg" ,libjpeg)))
(arguments
`(#:configure-flags '("--enable-doxygen" "--enable-dot" "--enable-hdf4")
+
+ #:phases (modify-phases %standard-phases
+ (add-before 'configure 'fix-source-date
+ (lambda _
+ ;; As we ${SOURCE_DATE_EPOCH} evaluates to "1" in the build
+ ;; environment, `date -u -d ${SOURCE_DATE_EPOCH}` will evaluate
+ ;; to '1st hour of the current day', and therefore makes the
+ ;; package not reproducible.
+ (substitute* "./configure"
+ (("date -u -d \"\\$\\{SOURCE_DATE_EPOCH\\}\"")
+ "date --date='@0'"))
+ #t))
+ (add-after 'configure 'patch-settings
+ (lambda _
+ ;; libnetcdf.settings contains the full filename of the compilers
+ ;; used to build the library. We truncate the hashes of those
+ ;; filenames to avoid unnecessary references to the corresponding
+ ;; store items.
+ (substitute* "libnetcdf.settings"
+ (("(/gnu/store/)([a-Z0-9]*)" all prefix hash)
+ (string-append prefix (string-take hash 10) "...")))
+ #t)))
+
#:parallel-tests? #f)) ;various race conditions
(home-page "http://www.unidata.ucar.edu/software/netcdf/")
(synopsis "Library for scientific data")
"--disable-shared" "--with-pic"
,flags))))))
+(define-public netcdf-fortran
+ (package
+ (name "netcdf-fortran")
+ (version "4.4.4")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-fortran-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0xaxdcg1p83zmypwml3swsnr3ccn38inwldyr1l3wa4dbwbrblxj"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:parallel-tests? #f))
+ (inputs
+ `(("netcdf" ,netcdf)))
+ (native-inputs
+ `(("gfortran" ,gfortran)))
+ (synopsis "Fortran interface for the netCDF library")
+ (description (package-description netcdf))
+ (home-page (package-home-page netcdf))
+ (license (package-license netcdf))))
+
(define-public nlopt
(package
(name "nlopt")
(inputs
`(("lapack" ,lapack)
("readline" ,readline)
+ ("gl2ps" ,gl2ps)
("glpk" ,glpk)
("fftw" ,fftw)
("fftwf" ,fftwf)
(define-public petsc
(package
(name "petsc")
- (version "3.7.2")
+ (version "3.7.6")
(source
(origin
(method url-fetch)
(uri (string-append "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/"
"petsc-lite-" version ".tar.gz"))
(sha256
- (base32 "0jfrq6rd4zagw1iimz05m2w91k0jvz3qbik1lk8pqcxw3rvdqk5d"))))
+ (base32 "1y3f5jjq0v5b62i3sabp4kp5mgfyp3vnk0dxhwkrhpypax77nzxh"))))
(build-system gnu-build-system)
(native-inputs
`(("python" ,python-2)
(assoc-ref %build-inputs "superlu") "/include")
,(string-append "--with-superlu-lib="
(assoc-ref %build-inputs "superlu") "/lib/libsuperlu.a"))
+ #:make-flags
+ ;; Honor (parallel-job-count) for build. Do not use --with-make-np,
+ ;; whose value is dumped to $out/lib/petsc/conf/petscvariables.
+ (list (format #f "MAKE_NP=~a" (parallel-job-count)))
#:phases
(modify-phases %standard-phases
(replace 'configure
(format #t "configure flags: ~s~%" flags)
(zero? (apply system* "./configure" flags)))))
(add-after 'configure 'clean-local-references
- (lambda* (#:key inputs outputs #:allow-other-keys)
+ (lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute* (find-files "." "^petsc(conf|machineinfo).h$")
;; Prevent build directory from leaking into compiled code
(((getcwd)) out)
;; Scrub timestamp for reproducibility
((".*Libraries compiled on.*") ""))
+ (substitute* (find-files "." "petscvariables")
+ ;; Do not expose build machine characteristics, set to defaults.
+ (("MAKE_NP = [:digit:]+") "MAKE_NP = 2")
+ (("NPMAX = [:digit:]+") "NPMAX = 2"))
#t)))
(add-after 'install 'clean-install
;; Try to keep installed files from leaking build directory names.
(define-public slepc
(package
(name "slepc")
- (version "3.7.1")
+ (version "3.7.4")
(source
(origin
(method url-fetch)
- (uri (string-append "http://slepc.upv.es/download/download.php?"
- "filename=slepc-" version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
+ (uri (string-append "http://slepc.upv.es/download/distrib/slepc-"
+ version ".tar.gz"))
(sha256
(base32
- "1hijlmrvxvfqslnx8yydzw5xqbsn1yy02g32w0hln1z3cgr1c0k7"))))
+ "12pbl8yd6r8k9xjlr1qw25rs0k1acgic7hw1s6l6bhiv9s285drg"))))
(build-system gnu-build-system)
(native-inputs
`(("python" ,python-2)))
#:configure-flags
`(,(string-append "--with-arpack-dir="
(assoc-ref %build-inputs "arpack") "/lib"))
+ #:make-flags ;honor (parallel-job-count)
+ `(,(format #f "MAKE_NP=~a" (parallel-job-count)))
#:phases
(modify-phases %standard-phases
(replace 'configure
(define-public r-pracma
(package
(name "r-pracma")
- (version "2.0.4")
+ (version "2.0.7")
(source (origin
(method url-fetch)
(uri (cran-uri "pracma" version))
(sha256
- (base32 "1z3i90mkzwvp9di17caf4934z2xlb2imm3hwxllcrbwvmnmhrwyc"))))
+ (base32 "0hxa0rbbp54j0c05qj7vfwhqfdmiz5ax8vhqxd09g33x7c0hqbc5"))))
(build-system r-build-system)
(propagated-inputs
`(("r-quadprog" ,r-quadprog)))
(build-system gnu-build-system)
(inputs
`(("zlib" ,zlib)
- ("flex" ,flex-2.6.1) ; A bug in flex prevents building with flex-2.6.3.
+ ("flex" ,flex)
("bison" ,bison)))
(arguments
`(#:phases
'("COMMON_FILE_COMPRESS_GZ"
"COMMON_PTHREAD"
"COMMON_RANDOM_FIXED_SEED"
+ "INTSIZE64" ;use 'long' instead of 'int'
;; Prevents symbolc clashes with libesmumps
"SCOTCH_RENAME"
;; XXX: Causes invalid frees in superlu-dist tests
;; See LICENSE_en.txt
(license license:cecill-c)))
+(define-public scotch32
+ ;; This is the 'INTSIZE32' variant, which uses 32-bit integers, as needed by
+ ;; some applications.
+ (package (inherit scotch)
+ (name "scotch32")
+ (arguments
+ (substitute-keyword-arguments (package-arguments scotch)
+ ((#:phases scotch-phases)
+ `(modify-phases ,scotch-phases
+ (replace
+ 'configure
+ (lambda _
+ (call-with-output-file "Makefile.inc"
+ (lambda (port)
+ (format port "
+EXE =
+LIB = .a
+OBJ = .o
+MAKE = make
+AR = ar
+ARFLAGS = -ruv
+CAT = cat
+CCS = gcc
+CCP = mpicc
+CCD = gcc
+CPPFLAGS =~{ -D~a~}
+CFLAGS = -O2 -g -fPIC $(CPPFLAGS)
+LDFLAGS = -lz -lm -lrt -lpthread
+CP = cp
+LEX = flex -Pscotchyy -olex.yy.c
+LN = ln
+MKDIR = mkdir
+MV = mv
+RANLIB = ranlib
+YACC = bison -pscotchyy -y -b y
+"
+ '("COMMON_FILE_COMPRESS_GZ"
+ "COMMON_PTHREAD"
+ "COMMON_RANDOM_FIXED_SEED"
+ "INTSIZE32" ;use 32-bit integers. See INSTALL.txt
+ ;; Prevents symbolc clashes with libesmumps
+ "SCOTCH_RENAME"
+ ;; XXX: Causes invalid frees in superlu-dist tests
+ ;; "SCOTCH_PTHREAD"
+ ;; "SCOTCH_PTHREAD_NUMBER=2"
+ "restrict=__restrict"))))))))))
+ (synopsis
+ "Programs and libraries for graph algorithms (32-bit integers)")))
+
(define-public pt-scotch
(package (inherit scotch)
(name "pt-scotch")
(lambda _ (zero? (system* "make" "ptcheck"))))))))
(synopsis "Programs and libraries for graph algorithms (with MPI)")))
+(define-public pt-scotch32
+ (package (inherit scotch32)
+ (name "pt-scotch32")
+ (propagated-inputs
+ `(("openmpi" ,openmpi))) ;headers include MPI headers
+ (arguments
+ (substitute-keyword-arguments (package-arguments scotch32)
+ ((#:phases scotch32-phases)
+ `(modify-phases ,scotch32-phases
+ (replace 'build
+ (lambda _
+ (and
+ (zero? (system* "make"
+ (format #f "-j~a" (parallel-job-count))
+ "ptscotch" "ptesmumps"))
+ ;; Install the serial metis compatibility library
+ (zero? (system* "make" "-C" "libscotchmetis" "install")))))
+ (replace 'check
+ (lambda _
+ (zero? (system* "make" "ptcheck"))))))))
+ (synopsis
+ "Programs and libraries for graph algorithms (with MPI and 32-bit integers)")))
+
(define-public metis
(package
(name "metis")
(define-public maxima
(package
(name "maxima")
- (version "5.39.0")
+ (version "5.40.0")
(source
(origin
(method url-fetch)
version "-source/" name "-" version ".tar.gz"))
(sha256
(base32
- "1cvignn5y6qzrby6qb885yc8zdcdqdr1d50vcvc3gapw2f0gk3zm"))
+ "15pp35ayglv723bjbqc60gcdv2bm54s6pywsm4i4cwbjsf64dzkl"))
(patches (search-patches "maxima-defsystem-mkdir.patch"))))
(build-system gnu-build-system)
(inputs
;; '/tmp/nix-build-maxima-*', which won't exist at run time.
;; Work around that.
#:make-flags (list "TMPDIR=/tmp")
- #:phases (alist-cons-before
- 'check 'pre-check
- (lambda _
- (chmod "src/maxima" #o555))
- ;; Make sure the doc and emacs files are found in the
- ;; standard location. Also configure maxima to find gnuplot
- ;; without having it on the PATH.
- (alist-cons-after
- 'install 'post-install
- (lambda* (#:key outputs inputs #:allow-other-keys)
- (let* ((gnuplot (assoc-ref inputs "gnuplot"))
- (out (assoc-ref outputs "out"))
- (datadir (string-append out "/share/maxima/" ,version)))
- (with-directory-excursion out
- (mkdir-p "share/emacs")
- (mkdir-p "share/doc")
- (symlink
- (string-append datadir "/emacs/")
- (string-append out "/share/emacs/site-lisp"))
- (symlink
- (string-append datadir "/doc/")
- (string-append out "/share/doc/maxima"))
- (with-atomic-file-replacement
- (string-append datadir "/share/maxima-init.lisp")
- (lambda (in out)
- (format out "~a ~s~a~%"
- "(setf $gnuplot_command "
- (string-append gnuplot "/bin/gnuplot") ")")
- (dump-port in out))))))
- %standard-phases))))
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'pre-check
+ (lambda _
+ (chmod "src/maxima" #o555)
+ #t))
+ ;; Make sure the doc and emacs files are found in the
+ ;; standard location. Also configure maxima to find gnuplot
+ ;; without having it on the PATH.
+ (add-after 'install 'post-install
+ (lambda* (#:key outputs inputs #:allow-other-keys)
+ (let* ((gnuplot (assoc-ref inputs "gnuplot"))
+ (out (assoc-ref outputs "out"))
+ (datadir (string-append out "/share/maxima/" ,version))
+ (binutils (string-append (assoc-ref inputs "binutils")
+ "/bin")))
+ (with-directory-excursion out
+ (mkdir-p "share/emacs")
+ (mkdir-p "share/doc")
+ (symlink
+ (string-append datadir "/emacs/")
+ (string-append out "/share/emacs/site-lisp"))
+ (symlink
+ (string-append datadir "/doc/")
+ (string-append out "/share/doc/maxima"))
+ (with-atomic-file-replacement
+ (string-append datadir "/share/maxima-init.lisp")
+ (lambda (in out)
+ (format out "~a ~s~a~%"
+ "(setf $gnuplot_command "
+ (string-append gnuplot "/bin/gnuplot") ")")
+ (dump-port in out))))
+ ;; Ensure that Maxima will have access to the GNU binutils
+ ;; components at runtime.
+ (wrap-program (string-append out "/bin/maxima")
+ `("PATH" prefix (,binutils))))
+ #t)))))
(home-page "http://maxima.sourceforge.net")
(synopsis "Numeric and symbolic expression manipulation")
(description "Maxima is a system for the manipulation of symbolic and
(define-public wxmaxima
(package
(name "wxmaxima")
- ;; Versions 16.12.0 to 16.12.2 have a bug which causes output lines to
- ;; overlap. See <https://debbugs.gnu.org/25793>
- (version "16.04.2")
+ (version "17.05.1")
(source
(origin
(method url-fetch)
- (uri (string-append "mirror://sourceforge/wxmaxima/wxMaxima/"
- version "/" name "-" version ".tar.gz"))
+ (uri (string-append "https://github.com/andrejv/" name "/archive"
+ "/Version-" version ".tar.gz"))
+ (file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1fpqzk1921isiqrpgpf433ldq41924qs9sy99fl1zn5661b2l73n"))))
+ "0dv0cy0cf46v0cbw32izscpkdmpxg1qhwq1f4cz46kkqd8k4yfbj"))))
(build-system gnu-build-system)
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("gettext" ,gettext-minimal)))
(inputs
`(("wxwidgets" ,wxwidgets)
("maxima" ,maxima)
("gtk+" ,gtk+)
("shared-mime-info" ,shared-mime-info)))
(arguments
- `(#:phases (modify-phases %standard-phases
- (add-after
- 'install 'wrap-program
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (wrap-program (string-append (assoc-ref outputs "out")
- "/bin/wxmaxima")
- `("PATH" ":" prefix
- (,(string-append (assoc-ref inputs "maxima")
- "/bin")))
- ;; For GtkFileChooserDialog.
- `("GSETTINGS_SCHEMA_DIR" =
- (,(string-append (assoc-ref inputs "gtk+")
- "/share/glib-2.0/schemas")))
- `("XDG_DATA_DIRS" ":" prefix
- (;; Needed by gdk-pixbuf to know supported icon formats.
- ,(string-append
- (assoc-ref inputs "shared-mime-info") "/share")
- ;; The default icon theme of GTK+.
- ,(string-append
- (assoc-ref inputs "adwaita-icon-theme") "/share"))))
- #t)))))
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'autoconf
+ (lambda _
+ (zero? (system* "sh" "bootstrap"))))
+ (add-after 'install 'wrap-program
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (wrap-program (string-append (assoc-ref outputs "out")
+ "/bin/wxmaxima")
+ `("PATH" ":" prefix
+ (,(string-append (assoc-ref inputs "maxima")
+ "/bin")))
+ ;; For GtkFileChooserDialog.
+ `("GSETTINGS_SCHEMA_DIR" =
+ (,(string-append (assoc-ref inputs "gtk+")
+ "/share/glib-2.0/schemas")))
+ `("XDG_DATA_DIRS" ":" prefix
+ (;; Needed by gdk-pixbuf to know supported icon formats.
+ ,(string-append
+ (assoc-ref inputs "shared-mime-info") "/share")
+ ;; The default icon theme of GTK+.
+ ,(string-append
+ (assoc-ref inputs "adwaita-icon-theme") "/share"))))
+ #t)))))
(home-page "https://andrejv.github.io/wxmaxima/")
(synopsis "Graphical user interface for the Maxima computer algebra system")
(description
signal processing, bioinformatics, statistics, econometrics, etc. The library
provides efficient classes for vectors, matrices and cubes, as well as 150+
associated functions (eg. contiguous and non-contiguous submatrix views).")
- (license license:mpl2.0)))
+ (license license:asl2.0)))
(define-public muparser
;; When switching download sites, muparser re-issued a 2.2.5 release with a
"OpenBLAS is a BLAS library forked from the GotoBLAS2-1.13 BSD 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>."
+ (package
+ (name (if (string=? implementation "reference")
+ "blis"
+ (string-append "blis-" implementation)))
+ (version "0.2.2")
+ (home-page "https://github.com/flame/blis")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference (url home-page) (commit version)))
+ (sha256
+ (base32
+ "1wr79a50nm4abhw8w3sn96nmwp5mrzifcigk7khw9qcgyyyqayfh"))
+ (file-name (git-file-name "blis" version))))
+ (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")))
+ (zero? (system* "./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)))))
+ (synopsis "High-performance basic linear algebra (BLAS) routines")
+ (description
+ "BLIS is a portable software framework for instantiating high-performance
+BLAS-like dense linear algebra libraries. The framework was designed to
+isolate essential kernels of computation that, when optimized, immediately
+enable optimized implementations of most of its commonly used and
+computationally intensive operations. While BLIS exports a new BLAS-like API,
+it also includes a BLAS compatibility layer which gives application developers
+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 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 "4.4.3")
+ (version "4.5.5")
(source
(origin
(method url-fetch)
version ".tar.gz"))
(sha256
(base32
- "100hdzr0mf4mzlwnqpmwpfw4pymgsf9n3g0ywb1yps2nk1zbkdy5"))))
+ "1dnr6pmjzc2qmbkmb4shigx1l74ilf6abn7svyd6brxgvph8vadr"))
+ (modules '((guix build utils)))
+ (snippet
+ ;; Remove bundled metis source
+ '(delete-file-recursively "metis-5.1.0"))))
(build-system gnu-build-system)
(arguments
- '(#:parallel-build? #f ;cholmod build fails otherwise
- #:tests? #f ;no "check" target
+ '(#:tests? #f ;no "check" target
#:make-flags
(list "CC=gcc"
"BLAS=-lblas"
"TBB=-ltbb"
- "CHOLMOD_CONFIG=-DNPARTITION" ;required when METIS is not used
+ "MY_METIS_LIB=-lmetis"
(string-append "INSTALL_LIB="
(assoc-ref %outputs "out") "/lib")
(string-append "INSTALL_INCLUDE="
- (assoc-ref %outputs "out") "/include"))
+ (assoc-ref %outputs "out") "/include")
+ "library")
#:phases
- (alist-cons-before
- 'install 'prepare-out
- ;; README.txt states that the target directories must exist prior to
- ;; running "make install".
- (lambda _
- (mkdir-p (string-append (assoc-ref %outputs "out") "/lib"))
- (mkdir-p (string-append (assoc-ref %outputs "out") "/include")))
- ;; no configure script
- (alist-delete 'configure %standard-phases))))
+ (modify-phases %standard-phases
+ (delete 'configure)))) ;no configure script
(inputs
`(("tbb" ,tbb)
- ("lapack" ,lapack)))
+ ("lapack" ,lapack)
+ ("metis" ,metis)))
(home-page "http://faculty.cse.tamu.edu/davis/suitesparse.html")
(synopsis "Suite of sparse matrix software")
(description
(define-public dealii
(package
(name "dealii")
- (version "8.4.1")
+ (version "8.5.0")
(source
(origin
(method url-fetch)
"download/v" version "/dealii-" version ".tar.gz"))
(sha256
(base32
- "1bdksvvyp1rj37df1ndh8j3x9nzpc3sazw8nd0hzvnlw0qnyk800"))
+ "0yfpy4zh8j7hmqakw17zdlmvfdcmhwgs66wcb716plc4y7v3z4g6"))
(modules '((guix build utils)))
(snippet
;; Remove bundled sources: UMFPACK, TBB, muParser, and boost
("suitesparse" ,suitesparse))) ;for UMFPACK
(arguments
`(#:build-type "DebugRelease" ;only supports Release, Debug, or DebugRelease
- #:configure-flags '("-DCOMPAT_FILES=OFF") ;Follow new directory structure
- #:phases (modify-phases %standard-phases
- (add-after
- 'install 'hint-example-prefix
- ;; Set Cmake hints in examples so that they can find this
- ;; deal.II when configuring.
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((out (assoc-ref %outputs "out"))
- (exmpl (string-append out "/share/doc"
- "/dealii/examples")))
- (substitute* (find-files exmpl "CMakeLists.txt")
- (("([[:space:]]*HINTS.*)\n" _ line)
- (string-append line " $ENV{HOME}/.guix-profile "
- out "\n")))
- #t))))))
+ #:configure-flags
+ ;; Work around a bug in libsuitesparseconfig linking
+ ;; see https://github.com/dealii/dealii/issues/4745
+ '("-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON")))
(home-page "https://www.dealii.org")
(synopsis "Finite element library")
(description
(base32
"022w8hph7bli5zbpnk3z1qh1c2sl5hm8fw2ccim651ynn0hr7fyz"))))
(build-system cmake-build-system)
+ (outputs '("out"
+ "octave")) ;46 MiB .mex file that pulls Octave
(native-inputs
`(("unzip" ,unzip)))
(inputs
;; 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"))
instruction sets. Thus, an application written with Vc can be compiled for:
@enumerate
@item AVX and AVX2
-@item SSE2 upto SSE4.2 or SSE4a
+@item SSE2 up to SSE4.2 or SSE4a
@item Scalar
@item MIC
@item NEON (in development)
@item NVIDIA GPUs / CUDA (in development)
@end enumerate\n")
(home-page "https://github.com/VcDevel/Vc")
+ ;; "No support_???.cpp file exists for this architecture."
+ (supported-systems '("x86_64-linux" "i686-linux"))
(license license:bsd-3)))
(define-public reducelcs
(home-page "https://www.gnu.org/software/jacal/")
(license license:gpl3+)))
+(define-public z3
+ (package
+ (name "z3")
+ (version "4.5.0")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+ "https://github.com/Z3Prover/z3/archive/z3-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "032a5lvji2liwmc25jv52bdrhimqflvqbpg77ccaq1jykhiivbmf"))))
+ (build-system cmake-build-system)
+ (arguments
+ `(#:configure-flags
+ (list "-DBUILD_PYTHON_BINDINGS=true"
+ "-DINSTALL_PYTHON_BINDINGS=true"
+ (string-append "-DCMAKE_INSTALL_PYTHON_PKG_DIR="
+ %output
+ "/lib/python2.7/site-packages")
+ (string-append "-DCMAKE_INSTALL_LIBDIR="
+ %output
+ "/lib"))
+
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'bootstrap
+ (lambda _
+ (zero?
+ (system* "python" "contrib/cmake/bootstrap.py" "create"))))
+ (add-before 'check 'make-test-z3
+ (lambda _
+ ;; Build the test suite executable.
+ (zero? (system* "make" "test-z3" "-j"
+ (number->string (parallel-job-count))))))
+ (replace 'check
+ (lambda _
+ ;; Run all the tests that don't require arguments.
+ (zero? (system* "./test-z3" "/a")))))))
+ (native-inputs
+ `(("python" ,python-2)))
+ (synopsis "Theorem prover")
+ (description "Z3 is a theorem prover and @dfn{satisfiability modulo
+theories} (SMT) solver. It provides a C/C++ API, as well as Python bindings.")
+ (home-page "https://github.com/Z3Prover/z3")
+ (license license:expat)))
+
+(define-public cubicle
+ (package
+ (name "cubicle")
+ (version "1.1.1")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "http://cubicle.lri.fr/cubicle-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1sny9c4fm14k014pk62ibpwbrjjirkx8xmhs9jg7q1hk7y7x3q2h"))))
+ (build-system gnu-build-system)
+ (native-inputs
+ `(("ocaml" ,ocaml)
+ ("which" ,(@@ (gnu packages base) which))))
+ (propagated-inputs
+ `(("z3" ,z3)))
+ (arguments
+ `(#:configure-flags (list "--with-z3")
+ #:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'configure-for-release
+ (lambda _
+ (substitute* "Makefile.in"
+ (("SVNREV=") "#SVNREV="))))
+ (add-before 'configure 'fix-/bin/sh
+ (lambda _
+ (substitute* "configure"
+ (("/bin/sh") (which "sh")))))
+ (add-before 'configure 'fix-smt-z3wrapper.ml
+ (lambda _
+ (substitute* "Makefile.in"
+ (("\\\\n") "")))))))
+ (home-page "http://cubicle.lri.fr/")
+ (synopsis "Model checker for array-based systems")
+ (description "Cubicle is an open source model checker for verifying safety
+properties of array-based systems. This is a syntactically restricted class of
+parametrized transition systems with states represented as arrays indexed by an
+arbitrary number of processes. Cache coherence protocols and mutual exclusion
+algorithms are typical examples of such systems.")
+ (license license:asl2.0)))