Package builds and installs SAMRAI and deps with GNU and OpenMPI

This commit is contained in:
David Beckingsale 2014-06-02 08:35:01 -07:00
parent 9b9fc86f6c
commit 2632bd9745
5 changed files with 109 additions and 23 deletions

View file

@ -0,0 +1,20 @@
--- SAMRAI/Makefile.in 2013-05-31 11:04:32.000000000 -0700
+++ SAMRAI/Makefile.in.notools 2014-05-30 10:31:15.135979900 -0700
@@ -8,7 +8,7 @@
##
#########################################################################
-default: library tools
+default: library
SAMRAI = @top_srcdir@
SUBDIR = .
@@ -135,7 +135,7 @@
done
$(MAKE) archive_remove_obj_names
-install: library tools
+install: library
$(INSTALL) -d -m 755 $(INSTDIR)/config
$(INSTALL) -d -m 755 $(INSTDIR)/lib
$(INSTALL) -d -m 755 $(INSTDIR)/bin

View file

@ -1,24 +1,12 @@
# FIXME:
# This is a template package file for Spack. We've conveniently
# put "FIXME" labels next to all the things you'll want to change.
#
# Once you've edited all the FIXME's, delete this whole message,
# save this file, and test out your package like this:
#
# spack install SAMRAI
#
# You can always get back here to change things with:
#
# spack edit SAMRAI
#
# See the spack documentation for more information on building
# packages.
#
from spack import *
class Samrai(Package):
"""FIXME: put a proper description of your package here."""
# FIXME: add a proper url for your package's homepage here.
"""SAMRAI (Structured Adaptive Mesh Refinement Application Infrastructure)
is an object-oriented C++ software library enables exploration of numerical,
algorithmic, parallel computing, and software issues associated with applying
structured adaptive mesh refinement (SAMR) technology in large-scale parallel
application development.
"""
homepage = "https://computation-rnd.llnl.gov/SAMRAI/confirm.php"
url = "https://computation-rnd.llnl.gov/SAMRAI/download/SAMRAI-v3.7.3.tar.gz"
list_url = homepage
@ -35,10 +23,29 @@ class Samrai(Package):
'2.4.4' : '04fb048ed0efe7c531ac10c81cc5f6ac',
}
def install(self, spec, prefix):
# FIXME: Modify the configure line to suit your build system here.
configure("--prefix=%s" % prefix)
depends_on("mpi")
depends_on("zlib")
depends_on("hdf5")
depends_on("boost@1.52.0")
# don't build tools with gcc
patch('no-tool-build.patch', when='%gcc')
# TODO: currently hard-coded to use openmpi - be careful!
def install(self, spec, prefix):
configure(
"--prefix=%s" % prefix,
"--with-CXX=%s" % spec['openmpi'].prefix.bin + "/mpic++",
"--with-CC=%s" % spec['openmpi'].prefix.bin + "/mpicc",
"--with-hdf5=%s" % spec['hdf5'].prefix,
"--with-boost=%s" % spec['boost'].prefix,
"--with-zlib=%s" % spec['zlib'].prefix,
"--disable-blas",
"--disable-lapack",
"--with-hypre=no",
"--with-petsc=no",
"--enable-opt",
"--disable-debug")
# FIXME: Add logic to build and install here
make()
make("install")

View file

@ -0,0 +1,39 @@
from spack import *
class Hdf5(Package):
"""HDF5 is a data model, library, and file format for storing and managing
data. It supports an unlimited variety of datatypes, and is designed for
flexible and efficient I/O and for high volume and complex data.
"""
homepage = "http://www.hdfgroup.org/HDF5/"
url = "http://www.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8.13/src/hdf5-1.8.13.tar.gz"
list_url = "http://www.hdfgroup.org/ftp/HDF5/releases"
list_depth = 3
versions = { '1.8.13' : 'c03426e9e77d7766944654280b467289', }
depends_on("mpi")
depends_on("zlib")
# TODO: currently hard-coded to use OpenMPI
def install(self, spec, prefix):
configure(
"--prefix=%s" % prefix,
"--with-zlib=%s" % spec['zlib'].prefix,
"--enable-parallel",
"CC=%s" % spec['openmpi'].prefix.bin + "/mpicc",
"CXX=%s" % spec['openmpi'].prefix.bin + "/mpic++")
make()
make("install")
def url_for_version(self, version):
v = str(version)
if version == Version("1.2.2"):
return "http://www.hdfgroup.org/ftp/HDF5/releases/hdf5-" + v + ".tar.gz"
elif version < Version("1.7"):
return "http://www.hdfgroup.org/ftp/HDF5/releases/hdf5-" + version.up_to(2) + "/hdf5-" + v + ".tar.gz"
else:
return "http://www.hdfgroup.org/ftp/HDF5/releases/hdf5-" + v + "/src/hdf5-" + v + ".tar.gz"

View file

@ -14,6 +14,8 @@ class Openmpi(Package):
versions = { '1.6.5' : '03aed2a4aa4d0b27196962a2a65fc475', }
provides('mpi@:2')
patch('ad_lustre_rwcontig_open_source.patch')
patch('llnl-platforms.patch')

View file

@ -0,0 +1,18 @@
from spack import *
class Zlib(Package):
"""zlib is designed to be a free, general-purpose, legally unencumbered --
that is, not covered by any patents -- lossless data-compression library for
use on virtually any computer hardware and operating system.
"""
homepage = "http://zlib.net"
url = "http://zlib.net/zlib-1.2.8.tar.gz"
versions = { '1.2.8' : '44d667c142d7cda120332623eab69f40', }
def install(self, spec, prefix):
configure("--prefix=%s" % prefix)
make()
make("install")