summaryrefslogtreecommitdiff
path: root/gnu/packages
diff options
context:
space:
mode:
authorEric Bavier <bavier@member.fsf.org>2016-03-17 09:15:18 -0500
committerEric Bavier <bavier@member.fsf.org>2016-05-12 19:59:52 +0000
commit528bb46436be39a4f4d3e7b3e908c34e92cca5f8 (patch)
tree32540bcecedde3f2c0de4706bf46600b54f567b8 /gnu/packages
parentb4e655e5f1ce3064c805f1ff4c0b6693d52814e0 (diff)
downloadpatches-528bb46436be39a4f4d3e7b3e908c34e92cca5f8.tar
patches-528bb46436be39a4f4d3e7b3e908c34e92cca5f8.tar.gz
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.
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/maths.scm115
-rw-r--r--gnu/packages/patches/hypre-doc-tables.patch25
-rw-r--r--gnu/packages/patches/hypre-ldflags.patch9
3 files changed, 149 insertions, 0 deletions
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index 9ba7138f88..dc01b59d68 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -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.")))
diff --git a/gnu/packages/patches/hypre-doc-tables.patch b/gnu/packages/patches/hypre-doc-tables.patch
new file mode 100644
index 0000000000..6a852ee78e
--- /dev/null
+++ b/gnu/packages/patches/hypre-doc-tables.patch
@@ -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);
diff --git a/gnu/packages/patches/hypre-ldflags.patch b/gnu/packages/patches/hypre-ldflags.patch
new file mode 100644
index 0000000000..a94fafa463
--- /dev/null
+++ b/gnu/packages/patches/hypre-ldflags.patch
@@ -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} $@