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:
Eric Bavier 2016-03-17 09:15:18 -05:00
parent b4e655e5f1
commit 528bb46436
4 changed files with 151 additions and 0 deletions

View File

@ -535,6 +535,8 @@ dist_patch_DATA = \
gnu/packages/patches/hop-linker-flags.patch \ gnu/packages/patches/hop-linker-flags.patch \
gnu/packages/patches/hydra-automake-1.15.patch \ gnu/packages/patches/hydra-automake-1.15.patch \
gnu/packages/patches/hydra-disable-darcs-test.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-avoid-bundled-includes.patch \
gnu/packages/patches/icecat-re-enable-DHE-cipher-suites.patch \ gnu/packages/patches/icecat-re-enable-DHE-cipher-suites.patch \
gnu/packages/patches/icecat-update-bundled-graphite2.patch \ gnu/packages/patches/icecat-update-bundled-graphite2.patch \

View File

@ -46,6 +46,7 @@
#:use-module (gnu packages cmake) #:use-module (gnu packages cmake)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages curl) #:use-module (gnu packages curl)
#:use-module (gnu packages documentation)
#:use-module (gnu packages elf) #:use-module (gnu packages elf)
#:use-module (gnu packages flex) #:use-module (gnu packages flex)
#:use-module (gnu packages fltk) #:use-module (gnu packages fltk)
@ -65,6 +66,7 @@
#:use-module (gnu packages m4) #:use-module (gnu packages m4)
#:use-module (gnu packages mpi) #:use-module (gnu packages mpi)
#:use-module (gnu packages multiprecision) #:use-module (gnu packages multiprecision)
#:use-module (gnu packages netpbm)
#:use-module (gnu packages pcre) #:use-module (gnu packages pcre)
#:use-module (gnu packages popt) #:use-module (gnu packages popt)
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
@ -2158,3 +2160,116 @@ are built. It can generate many different fractal types such as the Mandelbrot
set.") set.")
(home-page "http://www.gnu.org/software/xaos/") (home-page "http://www.gnu.org/software/xaos/")
(license license:gpl2+))) (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.")))

View File

@ -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);

View File

@ -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} $@