diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretize.py
index 8eb759169dee214f7e5138def6cedc4e08eb81e6..92a389992c39e7082f19d4efffbae1c0e606ea6c 100644
--- a/lib/spack/spack/test/concretize.py
+++ b/lib/spack/spack/test/concretize.py
@@ -224,6 +224,17 @@ def concretize_multi_provider(self):
         s.concretize()
         assert s['mpi'].version == ver('1.10.3')
 
+    @pytest.mark.parametrize("spec,version", [
+        ('dealii', 'develop'),
+        ('xsdk', '0.4.0'),
+    ])
+    def concretize_difficult_packages(self, a, b):
+        """Test a couple of large packages that are often broken due
+        to current limitations in the concretizer"""
+        s = Spec(a + '@' + b)
+        s.concretize()
+        assert s[a].version == ver(b)
+
     def test_concretize_two_virtuals(self):
 
         """Test a package with multiple virtual dependencies."""
diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py
index 7705d0cccf7d0aafa7e2c4497d96ce3708ed3cdd..f5e00a819d55e2bd7f579c486aaa0ef0683fb7d8 100644
--- a/var/spack/repos/builtin/packages/dealii/package.py
+++ b/var/spack/repos/builtin/packages/dealii/package.py
@@ -127,8 +127,8 @@ class Dealii(CMakePackage, CudaPackage):
     depends_on('cmake@:3.9.99',    when='@:8.99')
     # FIXME: concretizer bug. The two lines mimic what comes from PETSc
     # but we should not need it
-    depends_on('metis@5:+int64+real64',   when='+metis+int64')
-    depends_on('metis@5:~int64+real64',   when='+metis~int64')
+    depends_on('metis@5:+int64',   when='+metis+int64')
+    depends_on('metis@5:~int64',   when='+metis~int64')
     depends_on('muparser', when='+muparser')
     depends_on('nanoflann',        when='@9.0:+nanoflann')
     depends_on('netcdf+mpi',       when='+netcdf+mpi')