Package builds and installs SAMRAI and deps with GNU and OpenMPI
This commit is contained in:
		
							
								
								
									
										20
									
								
								var/spack/packages/SAMRAI/no-tool-build.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								var/spack/packages/SAMRAI/no-tool-build.patch
									
									
									
									
									
										Normal 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
 | 
			
		||||
@@ -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',
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    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")
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										39
									
								
								var/spack/packages/hdf5/package.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								var/spack/packages/hdf5/package.py
									
									
									
									
									
										Normal 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"
 | 
			
		||||
@@ -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')
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										18
									
								
								var/spack/packages/zlib/package.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								var/spack/packages/zlib/package.py
									
									
									
									
									
										Normal 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")
 | 
			
		||||
		Reference in New Issue
	
	Block a user