diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py
index bf91a885caaf31af3b5c6f40d022fe64f9cd78b8..da7088640f7eb9ca71f5326a649f94541a5691cc 100644
--- a/lib/spack/spack/__init__.py
+++ b/lib/spack/spack/__init__.py
@@ -137,9 +137,9 @@
 # TODO: it's not clear where all the stuff that needs to be included in packages
 #       should live.  This file is overloaded for spack core vs. for packages.
 #
-__all__ = ['Package', 'Version', 'when']
+__all__ = ['Package', 'Version', 'when', 'ver']
 from spack.package import Package
-from spack.version import Version
+from spack.version import Version, ver
 from spack.multimethod import when
 
 import llnl.util.filesystem
diff --git a/var/spack/packages/mpich/package.py b/var/spack/packages/mpich/package.py
index 19a1efe9c36a41c098bd31cfbde021d345929817..9062a6bae89637ff02ee3b9a3e3c97cb145b183b 100644
--- a/var/spack/packages/mpich/package.py
+++ b/var/spack/packages/mpich/package.py
@@ -38,8 +38,18 @@ class Mpich(Package):
     provides('mpi@:1', when='@1:')
 
     def install(self, spec, prefix):
-        configure(
-            "--prefix=" + prefix,
-            "--enable-shared")
+        config_args = ["--prefix=" + prefix,
+                       "--enable-shared"]
+
+        # TODO: Spack should make it so that you can't actually find
+        # these compilers if they're "disabled" for the current
+        # compiler configuration.
+        if not self.compiler.f77:
+            config_args.append("--disable-f77")
+
+        if not self.compiler.fc:
+            config_args.append("--disable-fc")
+
+        configure(*config_args)
         make()
         make("install")
diff --git a/var/spack/packages/openmpi/package.py b/var/spack/packages/openmpi/package.py
index 0ce09bdd8db910818e7c69fa294699b1000d037c..1ef8a8f00025bc3a2dcf2bf888554a812e2f9d61 100644
--- a/var/spack/packages/openmpi/package.py
+++ b/var/spack/packages/openmpi/package.py
@@ -10,22 +10,32 @@ class Openmpi(Package):
     """
 
     homepage = "http://www.open-mpi.org"
-    url      = "http://www.open-mpi.org/software/ompi/v1.6/downloads/openmpi-1.6.5.tar.bz2"
 
-    version('1.6.5', '03aed2a4aa4d0b27196962a2a65fc475')
+    version('1.8.2', 'ab538ed8e328079d566fc797792e016e',
+            url='http://www.open-mpi.org/software/ompi/v1.8/downloads/openmpi-1.8.2.tar.gz')
 
-    provides('mpi@:2')
+    version('1.6.5', '03aed2a4aa4d0b27196962a2a65fc475',
+            url = "http://www.open-mpi.org/software/ompi/v1.6/downloads/openmpi-1.6.5.tar.bz2")
+    patch('ad_lustre_rwcontig_open_source.patch', when="@1.6.5")
+    patch('llnl-platforms.patch', when="@1.6.5")
 
-    patch('ad_lustre_rwcontig_open_source.patch')
-    patch('llnl-platforms.patch')
+    provides('mpi@:2')
 
     def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix,
-                  "--with-platform=contrib/platform/lanl/tlcc2/optimized-nopanasas")
+        config_args = ["--prefix=%s" % prefix]
+
+        # TODO: use variants for this, e.g. +lanl, +llnl, etc.
+        # use this for LANL builds, but for LLNL builds, we need:
+        #     "--with-platform=contrib/platform/llnl/optimized"
+        if self.version == ver("1.6.5"):
+            confg_args.append("--with-platform=contrib/platform/lanl/tlcc2/optimized-nopanasas")
 
-        # TODO: implement variants next, so we can have LLNL and LANL options.
-        # use above for LANL builds, but for LLNL builds, we need this
-        #     "--with-platform=contrib/platform/llnl/optimized")
+        # TODO: Spack should make it so that you can't actually find
+        # these compilers if they're "disabled" for the current
+        # compiler configuration.
+        if not self.compiler.f77 and not self.compiler.fc:
+            config_args.append("--enable-mpi-fortran=no")
 
+        configure(*config_args)
         make()
         make("install")