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 0000000000000000000000000000000000000000..1adf0cf72141a037bf69bab980ff6c08d30721ac
--- /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 e8d808b70aed5991985d7c23b66b299d99a59c87..bb88ec32923d2d9fbd50e4b7ddf2d16badca5d33 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 0000000000000000000000000000000000000000..7705676dba2b639a883efd5d6fab4828d5fec1c7
--- /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 f24a66c12e99aa84ac7222a1b0c3de278746e9bb..5ac231a33f2a5034638bd14206c479582ec355a2 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 0000000000000000000000000000000000000000..608b27ddd39682cee971f6e4a9ae08fef230755b
--- /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")