diff --git a/lib/spack/spack/cmd/setup.py b/lib/spack/spack/cmd/setup.py
index f39a827a8d89af2c56e187a2bcea833e98b40223..50bc03133039cb6a5e71057a21ceca209a64d3c8 100644
--- a/lib/spack/spack/cmd/setup.py
+++ b/lib/spack/spack/cmd/setup.py
@@ -148,6 +148,12 @@ def setup(self, args):
 
         spec.concretize()
         package = spack.repo.get(spec)
+        if not isinstance(package, spack.CMakePackage):
+            tty.die(
+                'Support for {0} derived packages not yet implemented'.format(
+                    package.build_system_class
+                )
+            )
 
         # It's OK if the package is already installed.
 
@@ -157,8 +163,4 @@ def setup(self, args):
         # TODO: make this an argument, not a global.
         spack.do_checksum = False
 
-        if not isinstance(package, spack.CMakePackage):
-            raise RuntimeError(
-                'Support for {0} not yet implemented'.format(type(package)))
-
         write_spconfig(package)