From 2632bd97459e48404fe3fad0695219bf5bbb6f3f Mon Sep 17 00:00:00 2001 From: David Beckingsale Date: Mon, 2 Jun 2014 08:35:01 -0700 Subject: Package builds and installs SAMRAI and deps with GNU and OpenMPI --- var/spack/packages/SAMRAI/no-tool-build.patch | 20 +++++++++++ var/spack/packages/SAMRAI/package.py | 51 +++++++++++++++------------ var/spack/packages/hdf5/package.py | 39 ++++++++++++++++++++ var/spack/packages/openmpi/package.py | 2 ++ var/spack/packages/zlib/package.py | 18 ++++++++++ 5 files changed, 108 insertions(+), 22 deletions(-) create mode 100644 var/spack/packages/SAMRAI/no-tool-build.patch create mode 100644 var/spack/packages/hdf5/package.py create mode 100644 var/spack/packages/zlib/package.py diff --git a/var/spack/packages/SAMRAI/no-tool-build.patch b/var/spack/packages/SAMRAI/no-tool-build.patch new file mode 100644 index 0000000000..1adf0cf721 --- /dev/null +++ b/var/spack/packages/SAMRAI/no-tool-build.patch @@ -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 diff --git a/var/spack/packages/SAMRAI/package.py b/var/spack/packages/SAMRAI/package.py index e8d808b70a..bb88ec3292 100644 --- a/var/spack/packages/SAMRAI/package.py +++ b/var/spack/packages/SAMRAI/package.py @@ -1,27 +1,15 @@ -# 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 + list_url = homepage versions = { '3.7.3' : '12d574eacadf8c9a70f1bb4cd1a69df6', @@ -35,10 +23,29 @@ class Samrai(Package): '2.4.4' : '04fb048ed0efe7c531ac10c81cc5f6ac', } + 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): - # FIXME: Modify the configure line to suit your build system here. - configure("--prefix=%s" % 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") diff --git a/var/spack/packages/hdf5/package.py b/var/spack/packages/hdf5/package.py new file mode 100644 index 0000000000..7705676dba --- /dev/null +++ b/var/spack/packages/hdf5/package.py @@ -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" diff --git a/var/spack/packages/openmpi/package.py b/var/spack/packages/openmpi/package.py index f24a66c12e..5ac231a33f 100644 --- a/var/spack/packages/openmpi/package.py +++ b/var/spack/packages/openmpi/package.py @@ -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') diff --git a/var/spack/packages/zlib/package.py b/var/spack/packages/zlib/package.py new file mode 100644 index 0000000000..608b27ddd3 --- /dev/null +++ b/var/spack/packages/zlib/package.py @@ -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") -- cgit v1.2.3-70-g09d2