gnu: Add HYPRE.
* gnu/packages/maths.scm (hypre, hypre-openmpi): New variables. * gnu/packages/patches/hypre-doc-tables.patch, gnu/packages/patches/hypre-ldflags.patch: New files. * gnu-system.am (dist_patch_DATA): Add them.
This commit is contained in:
parent
b4e655e5f1
commit
528bb46436
|
@ -535,6 +535,8 @@ dist_patch_DATA = \
|
|||
gnu/packages/patches/hop-linker-flags.patch \
|
||||
gnu/packages/patches/hydra-automake-1.15.patch \
|
||||
gnu/packages/patches/hydra-disable-darcs-test.patch \
|
||||
gnu/packages/patches/hypre-doc-tables.patch \
|
||||
gnu/packages/patches/hypre-ldflags.patch \
|
||||
gnu/packages/patches/icecat-avoid-bundled-includes.patch \
|
||||
gnu/packages/patches/icecat-re-enable-DHE-cipher-suites.patch \
|
||||
gnu/packages/patches/icecat-update-bundled-graphite2.patch \
|
||||
|
|
|
@ -46,6 +46,7 @@
|
|||
#:use-module (gnu packages cmake)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages curl)
|
||||
#:use-module (gnu packages documentation)
|
||||
#:use-module (gnu packages elf)
|
||||
#:use-module (gnu packages flex)
|
||||
#:use-module (gnu packages fltk)
|
||||
|
@ -65,6 +66,7 @@
|
|||
#:use-module (gnu packages m4)
|
||||
#:use-module (gnu packages mpi)
|
||||
#:use-module (gnu packages multiprecision)
|
||||
#:use-module (gnu packages netpbm)
|
||||
#:use-module (gnu packages pcre)
|
||||
#:use-module (gnu packages popt)
|
||||
#:use-module (gnu packages perl)
|
||||
|
@ -2158,3 +2160,116 @@ are built. It can generate many different fractal types such as the Mandelbrot
|
|||
set.")
|
||||
(home-page "http://www.gnu.org/software/xaos/")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public hypre
|
||||
(package
|
||||
(name "hypre")
|
||||
(version "2.11.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/LLNL/hypre/archive/"
|
||||
"v" version ".tar.gz"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0q69ia0jivzcr8p049dn3mg8yjpn6nwq4sw9iqac8vr63vi54l6m"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
;; Remove use of __DATE__ and __TIME__ for reproducibility;
|
||||
;; substitute the tarball creation time.
|
||||
(substitute* "src/utilities/HYPRE_utilities.h"
|
||||
(("Date Compiled: .*$")
|
||||
"Date Compiled: Mar 28 2016 20:19:59 +0000\"\n"))
|
||||
#t))))
|
||||
(build-system gnu-build-system)
|
||||
(outputs '("out" ;6.1 MiB of headers and libraries
|
||||
"doc")) ;4.8 MiB of documentation
|
||||
(native-inputs
|
||||
`(("doc++" ,doc++)
|
||||
("netpbm" ,netpbm)
|
||||
("texlive" ,texlive) ;full package required for fonts
|
||||
("ghostscript" ,ghostscript)))
|
||||
(inputs
|
||||
`(("blas" ,openblas)
|
||||
("lapack" ,lapack)))
|
||||
(arguments
|
||||
`(#:modules ((srfi srfi-1)
|
||||
,@%gnu-build-system-modules)
|
||||
#:configure-flags '("--enable-shared"
|
||||
"--disable-fortran"
|
||||
"--without-MPI"
|
||||
"--with-openmp"
|
||||
"--with-fei"
|
||||
"--with-lapack"
|
||||
"--with-blas")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'configure 'chdir-src
|
||||
(lambda _ (chdir "src")))
|
||||
(replace 'configure
|
||||
(lambda* (#:key build target configure-flags
|
||||
#:allow-other-keys #:rest args)
|
||||
(let* ((configure (assoc-ref %standard-phases 'configure)))
|
||||
(apply configure
|
||||
(append args
|
||||
(list #:configure-flags
|
||||
(cons (string-append
|
||||
"--host=" (or target build))
|
||||
configure-flags)))))))
|
||||
(add-after 'build 'build-docs
|
||||
(lambda _
|
||||
(zero? (system* "make" "-Cdocs" "pdf" "html"))))
|
||||
(replace 'check
|
||||
(lambda _
|
||||
(setenv "LD_LIBRARY_PATH" (string-append (getcwd) "/hypre/lib"))
|
||||
(setenv "PATH" (string-append "." ":" (getenv "PATH")))
|
||||
(and (system* "make" "check" "CHECKRUN=")
|
||||
(fold (lambda (filename result)
|
||||
(and result
|
||||
(let ((size (stat:size (stat filename))))
|
||||
(when (not (zero? size))
|
||||
(format #t "~a size ~d; error indication~%"
|
||||
filename size))
|
||||
(zero? size))))
|
||||
#t
|
||||
(find-files "test" ".*\\.err$")))))
|
||||
(add-after 'install 'install-docs
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; Custom install because docs/Makefile doesn't honor ${docdir}.
|
||||
(let* ((doc (assoc-ref outputs "doc"))
|
||||
(docdir (string-append doc "/share/doc/hypre-" ,version)))
|
||||
(mkdir-p docdir)
|
||||
(with-directory-excursion "docs"
|
||||
(for-each (lambda (base)
|
||||
(install-file (string-append base ".pdf") docdir)
|
||||
(copy-recursively base docdir)) ;html docs
|
||||
'("HYPRE_usr_manual"
|
||||
"HYPRE_ref_manual")))
|
||||
#t))))))
|
||||
(home-page "http://www.llnl.gov/casc/hypre/")
|
||||
(synopsis "Library of solvers and preconditioners for linear equations")
|
||||
(description
|
||||
"HYPRE is a software library of high performance preconditioners and
|
||||
solvers for the solution of large, sparse linear systems of equations. It
|
||||
features multigrid solvers for both structured and unstructured grid
|
||||
problems.")
|
||||
(license license:lgpl2.1)))
|
||||
|
||||
(define-public hypre-openmpi
|
||||
(package (inherit hypre)
|
||||
(name "hypre-openmpi")
|
||||
(inputs
|
||||
`(("mpi" ,openmpi)
|
||||
,@(package-inputs hypre)))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments hypre)
|
||||
((#:configure-flags flags)
|
||||
``("--with-MPI"
|
||||
,@(delete "--without-MPI" ,flags)))))
|
||||
(synopsis "Parallel solvers and preconditioners for linear equations")
|
||||
(description
|
||||
"HYPRE is a software library of high performance preconditioners and
|
||||
solvers for the solution of large, sparse linear systems of equations on
|
||||
parallel computers. It features parallel multigrid solvers for both
|
||||
structured and unstructured grid problems.")))
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
Fixes doc++'s treatment of tabular within a parameter block.
|
||||
|
||||
From commit 883925f8a at http://github.com/LLNL/hypre
|
||||
|
||||
--- hypre-2.10.1/src/parcsr_ls/HYPRE_parcsr_ls.h 2015-12-04 22:12:19.000000000 -0600
|
||||
+++ hypre-2.10.1/src/parcsr_ls/HYPRE_parcsr_ls.h 2016-03-16 09:02:58.547501336 -0500
|
||||
@@ -1154,8 +1154,6 @@
|
||||
* Set the symmetry parameter for the
|
||||
* ParaSails preconditioner.
|
||||
*
|
||||
- * @param solver [IN] Preconditioner object for which to set symmetry parameter.
|
||||
- * @param sym [IN] Value of the symmetry parameter:
|
||||
* \begin{tabular}{|c|l|} \hline
|
||||
* value & meaning \\ \hline
|
||||
* 0 & nonsymmetric and/or indefinite problem, and nonsymmetric preconditioner\\
|
||||
@@ -1163,6 +1161,9 @@
|
||||
* 2 & nonsymmetric, definite problem, and SPD (factored) preconditioner \\
|
||||
* \hline
|
||||
* \end{tabular}
|
||||
+ *
|
||||
+ * @param solver [IN] Preconditioner object for which to set symmetry parameter.
|
||||
+ * @param sym [IN] Value of the symmetry parameter:
|
||||
**/
|
||||
HYPRE_Int HYPRE_ParaSailsSetSym(HYPRE_Solver solver,
|
||||
HYPRE_Int sym);
|
|
@ -0,0 +1,9 @@
|
|||
--- hypre-2.10.1/src/lib/Makefile.orig 2016-03-11 16:04:03.740259228 -0600
|
||||
+++ hypre-2.10.1/src/lib/Makefile 2016-03-11 16:04:57.296260190 -0600
|
||||
@@ -107,5 +107,5 @@
|
||||
|
||||
libHYPRE.so: ${FILES_HYPRE}
|
||||
@echo "Building $@ ... "
|
||||
- ${BUILD_CC_SHARED} -o ${SONAME} ${FILES_HYPRE} ${SOLIBS} ${SHARED_SET_SONAME}${SONAME} ${SHARED_OPTIONS}
|
||||
+ ${BUILD_CC_SHARED} ${LDFLAGS} -o ${SONAME} ${FILES_HYPRE} ${SOLIBS} ${SHARED_SET_SONAME}${SONAME} ${SHARED_OPTIONS}
|
||||
ln -s ${SONAME} $@
|
Loading…
Reference in New Issue