diff --git a/var/spack/repos/builtin/packages/ImageMagick/package.py b/var/spack/repos/builtin/packages/ImageMagick/package.py
index f8173169e11a1932f4f8dd45e3feec3ee8860733..b0ccba100992bd5cedde4f14267de5e0573b2877 100644
--- a/var/spack/repos/builtin/packages/ImageMagick/package.py
+++ b/var/spack/repos/builtin/packages/ImageMagick/package.py
@@ -51,7 +51,7 @@ class Imagemagick(Package):
         url="http://sourceforge.net/projects/imagemagick/files/old-sources/6.x/6.8/ImageMagick-6.8.9-10.tar.gz/download")
 
     depends_on('jpeg')
-    depends_on('libtool')
+    depends_on('libtool', type='build')
     depends_on('libpng')
     depends_on('freetype')
     depends_on('fontconfig')
diff --git a/var/spack/repos/builtin/packages/Mitos/package.py b/var/spack/repos/builtin/packages/Mitos/package.py
index 83aca3dc6a001b56f66dccbf612302bf3a46a810..d577a1b285f54c516c39ca1376a769541ba79cdf 100644
--- a/var/spack/repos/builtin/packages/Mitos/package.py
+++ b/var/spack/repos/builtin/packages/Mitos/package.py
@@ -41,6 +41,7 @@ class Mitos(Package):
     depends_on('dyninst@8.2.1:')
     depends_on('hwloc')
     depends_on('mpi')
+    depends_on('cmake', type='build')
 
     def install(self, spec, prefix):
         with working_dir('spack-build', create=True):
diff --git a/var/spack/repos/builtin/packages/adept-utils/package.py b/var/spack/repos/builtin/packages/adept-utils/package.py
index 7b6c3702affc924bb13516db24110294c543b38f..592681bb822391604001eb3981c632b45eb6fc91 100644
--- a/var/spack/repos/builtin/packages/adept-utils/package.py
+++ b/var/spack/repos/builtin/packages/adept-utils/package.py
@@ -35,6 +35,7 @@ class AdeptUtils(Package):
 
     depends_on("boost")
     depends_on("mpi")
+    depends_on('cmake', type='build')
 
     def install(self, spec, prefix):
         cmake(*std_cmake_args)
diff --git a/var/spack/repos/builtin/packages/apex/package.py b/var/spack/repos/builtin/packages/apex/package.py
index 20cbd8e8c6ceab6086a4590ffc6e2af2ff00d507..59fbe50c93f6aa4563c5ff117ee7761eea7506ce 100644
--- a/var/spack/repos/builtin/packages/apex/package.py
+++ b/var/spack/repos/builtin/packages/apex/package.py
@@ -33,7 +33,7 @@ class Apex(Package):
 
     depends_on("binutils+libiberty")
     depends_on("boost@1.54:")
-    depends_on("cmake@2.8.12:")
+    depends_on('cmake@2.8.12:', type='build')
     depends_on("activeharmony@4.5:")
     depends_on("ompt-openmp")
 
diff --git a/var/spack/repos/builtin/packages/arpack-ng/package.py b/var/spack/repos/builtin/packages/arpack-ng/package.py
index d9021f80439385988a652b269167f589720ca2bf..d5dc703c0633b08d53e448703670249b8467e39f 100644
--- a/var/spack/repos/builtin/packages/arpack-ng/package.py
+++ b/var/spack/repos/builtin/packages/arpack-ng/package.py
@@ -72,10 +72,10 @@ class ArpackNg(Package):
 
     depends_on('blas')
     depends_on('lapack')
-    depends_on('automake', when='@3.3.0')
-    depends_on('autoconf', when='@3.3.0')
-    depends_on('libtool@2.4.2:', when='@3.3.0')
-    depends_on('cmake@2.8.6:', when='@3.4.0:')
+    depends_on('automake', when='@3.3.0', type='build')
+    depends_on('autoconf', when='@3.3.0', type='build')
+    depends_on('libtool@2.4.2:', when='@3.3.0', type='build')
+    depends_on('cmake@2.8.6:', when='@3.4.0:', type='build')
 
     depends_on('mpi', when='+mpi')
 
diff --git a/var/spack/repos/builtin/packages/autoconf/package.py b/var/spack/repos/builtin/packages/autoconf/package.py
index 770ceed48b4ec5307462756611ae4267bdf450fa..2de1c390db07002e56a56aa2cd55924866457fd4 100644
--- a/var/spack/repos/builtin/packages/autoconf/package.py
+++ b/var/spack/repos/builtin/packages/autoconf/package.py
@@ -35,7 +35,7 @@ class Autoconf(Package):
     version('2.69', '82d05e03b93e45f5a39b828dc9c6c29b')
     version('2.62', '6c1f3b3734999035d77da5024aab4fbd')
 
-    depends_on('m4')
+    depends_on('m4', type='build')
 
     def _make_executable(self, name):
         return Executable(join_path(self.prefix.bin, name))
diff --git a/var/spack/repos/builtin/packages/automaded/package.py b/var/spack/repos/builtin/packages/automaded/package.py
index fc65a04a066b9afa199adc90c054b9d3210000a6..2b4681778f0529969c709db0e03003bb065d1b35 100644
--- a/var/spack/repos/builtin/packages/automaded/package.py
+++ b/var/spack/repos/builtin/packages/automaded/package.py
@@ -44,6 +44,7 @@ class Automaded(Package):
     depends_on('mpi')
     depends_on('boost')
     depends_on('callpath')
+    depends_on('cmake', type='build')
 
     def install(self, spec, prefix):
         cmake("-DSTATE_TRACKER_WITH_CALLPATH=ON", *std_cmake_args)
diff --git a/var/spack/repos/builtin/packages/bear/package.py b/var/spack/repos/builtin/packages/bear/package.py
index 730a684ec5725f5b6bb15c1ccfa7e356e72fbce7..a137fded088be76f6751d38942e23ad0ca03e783 100644
--- a/var/spack/repos/builtin/packages/bear/package.py
+++ b/var/spack/repos/builtin/packages/bear/package.py
@@ -31,7 +31,7 @@ class Bear(Package):
 
     version('2.0.4', 'fd8afb5e8e18f8737ba06f90bd77d011')
 
-    depends_on("cmake")
+    depends_on('cmake', type='build')
     depends_on("python")
 
     def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/bertini/package.py b/var/spack/repos/builtin/packages/bertini/package.py
index 8d7da705e453222f64e84d9c8c71c68cde02b3e8..7dd17a062e51c7eee50c44506292853681f1c935 100644
--- a/var/spack/repos/builtin/packages/bertini/package.py
+++ b/var/spack/repos/builtin/packages/bertini/package.py
@@ -37,8 +37,8 @@ class Bertini(Package):
 
     variant('mpi', default=True, description='Compile in parallel')
 
-    depends_on('flex')
-    depends_on('bison')
+    depends_on('flex', type='build')
+    depends_on('bison', type='build')
     depends_on('gmp')
     depends_on('mpfr')
     depends_on('mpi', when='+mpi')
diff --git a/var/spack/repos/builtin/packages/binutils/package.py b/var/spack/repos/builtin/packages/binutils/package.py
index 35d52128c3ccc19a05ec42ff5d1a2a32c8705eba..e329e6fd7a551b4a93305a115bafbdaa18f87f1e 100644
--- a/var/spack/repos/builtin/packages/binutils/package.py
+++ b/var/spack/repos/builtin/packages/binutils/package.py
@@ -38,9 +38,9 @@ class Binutils(Package):
     version('2.23.2', '4f8fa651e35ef262edc01d60fb45702e')
     version('2.20.1', '2b9dc8f2b7dbd5ec5992c6e29de0b764')
 
-    depends_on('m4')
-    depends_on('flex')
-    depends_on('bison')
+    depends_on('m4', type='build')
+    depends_on('flex', type='build')
+    depends_on('bison', type='build')
 
     # Add a patch that creates binutils libiberty_pic.a which is preferred by
     # OpenSpeedShop and cbtf-krell
diff --git a/var/spack/repos/builtin/packages/bison/package.py b/var/spack/repos/builtin/packages/bison/package.py
index c5bc051c800b0ccf1d15679e97d170ed719456c6..c7a125df15b0e08e3eff595be82af2470acfa8e7 100644
--- a/var/spack/repos/builtin/packages/bison/package.py
+++ b/var/spack/repos/builtin/packages/bison/package.py
@@ -34,7 +34,7 @@ class Bison(Package):
 
     version('3.0.4', 'a586e11cd4aff49c3ff6d3b6a4c9ccf8')
 
-    depends_on("m4")
+    depends_on("m4", type='build')
 
     def install(self, spec, prefix):
         configure("--prefix=%s" % prefix)
diff --git a/var/spack/repos/builtin/packages/boxlib/package.py b/var/spack/repos/builtin/packages/boxlib/package.py
index ec7db6c08e5d7f2d6e4a88ac7c82e769f4ca5edd..216ae1ec122758b68338cdf0fa36cd98e00bfcbe 100644
--- a/var/spack/repos/builtin/packages/boxlib/package.py
+++ b/var/spack/repos/builtin/packages/boxlib/package.py
@@ -35,6 +35,7 @@ class Boxlib(Package):
     version('master', git='https://ccse.lbl.gov/pub/Downloads/BoxLib.git')
 
     depends_on('mpi')
+    depends_on('cmake', type='build')
 
     def install(self, spec, prefix):
         args = std_cmake_args
diff --git a/var/spack/repos/builtin/packages/c-blosc/package.py b/var/spack/repos/builtin/packages/c-blosc/package.py
index dee332be14c375201b9c7b34b43dd615a9c397e9..49f986112680e252a125840df368fce85261ba3a 100644
--- a/var/spack/repos/builtin/packages/c-blosc/package.py
+++ b/var/spack/repos/builtin/packages/c-blosc/package.py
@@ -38,7 +38,7 @@ class CBlosc(Package):
     version('1.8.1', 'd73d5be01359cf271e9386c90dcf5b05')
     version('1.8.0', '5b92ecb287695ba20cc33d30bf221c4f')
 
-    depends_on("cmake")
+    depends_on("cmake", type='build')
     depends_on("snappy")
     depends_on("zlib")
 
diff --git a/var/spack/repos/builtin/packages/caliper/package.py b/var/spack/repos/builtin/packages/caliper/package.py
index a424c73859fc27e2f0f8456bfcbc5cf5059a8ce2..4a0fc54acc7e72882217f9160ae6086116ed7af2 100644
--- a/var/spack/repos/builtin/packages/caliper/package.py
+++ b/var/spack/repos/builtin/packages/caliper/package.py
@@ -41,6 +41,7 @@ class Caliper(Package):
     depends_on('libunwind')
     depends_on('papi')
     depends_on('mpi', when='+mpi')
+    depends_on('cmake', type='build')
 
     def install(self, spec, prefix):
       with working_dir('build', create=True):
diff --git a/var/spack/repos/builtin/packages/callpath/package.py b/var/spack/repos/builtin/packages/callpath/package.py
index 2ad2dc60e4dcd07539ff743c57a04503a6afeec1..2f171fb9ce6dd3dcc79028bd6fc04d38c89fa3bc 100644
--- a/var/spack/repos/builtin/packages/callpath/package.py
+++ b/var/spack/repos/builtin/packages/callpath/package.py
@@ -39,6 +39,7 @@ class Callpath(Package):
     depends_on("dyninst")
     depends_on("adept-utils")
     depends_on("mpi")
+    depends_on('cmake', type='build')
 
     def install(self, spec, prefix):
         # TODO: offer options for the walker used.
diff --git a/var/spack/repos/builtin/packages/cantera/package.py b/var/spack/repos/builtin/packages/cantera/package.py
index e9e5da44868ddc07aca513fd8b75ab5cb016f63a..646d106d88f766f646504187bd853fe7efc9f564 100644
--- a/var/spack/repos/builtin/packages/cantera/package.py
+++ b/var/spack/repos/builtin/packages/cantera/package.py
@@ -42,7 +42,7 @@ class Cantera(Package):
     variant('matlab',     default=False, description='Build the Cantera Matlab toolbox')
 
     # Required dependencies
-    depends_on('scons')
+    depends_on('scons', type='build')
 
     # Recommended dependencies
     depends_on('blas',      when='+lapack')
diff --git a/var/spack/repos/builtin/packages/cbtf-argonavis/package.py b/var/spack/repos/builtin/packages/cbtf-argonavis/package.py
index 7ce90ce0db2f80571e23652be2686f5c03cd3e13..321d02b5568b2960f5d0b6fe99915fff42eb84e1 100644
--- a/var/spack/repos/builtin/packages/cbtf-argonavis/package.py
+++ b/var/spack/repos/builtin/packages/cbtf-argonavis/package.py
@@ -53,7 +53,7 @@ class CbtfArgonavis(Package):
 
     version('1.6', branch='master', git='https://github.com/OpenSpeedShop/cbtf-argonavis.git')
 
-    depends_on("cmake@3.0.2")
+    depends_on("cmake@3.0.2", type='build')
     depends_on("boost@1.50.0:")
     depends_on("papi")
     depends_on("mrnet@5.0.1:+lwthreads+krellpatch")
diff --git a/var/spack/repos/builtin/packages/cbtf-krell/package.py b/var/spack/repos/builtin/packages/cbtf-krell/package.py
index 7506f78146b452032dd026f601ce612b299a1893..acb78a73951105cb8f583ca562f45ae2677308d4 100644
--- a/var/spack/repos/builtin/packages/cbtf-krell/package.py
+++ b/var/spack/repos/builtin/packages/cbtf-krell/package.py
@@ -64,7 +64,7 @@ class CbtfKrell(Package):
     variant('mpich', default=False, description="Build mpi experiment collector for mpich MPI when this variant is enabled.")
 
     # Dependencies for cbtf-krell
-    depends_on("cmake@3.0.2")
+    depends_on("cmake@3.0.2", type='build')
 
     # For binutils service
     depends_on("binutils@2.24+krellpatch")
diff --git a/var/spack/repos/builtin/packages/cbtf-lanl/package.py b/var/spack/repos/builtin/packages/cbtf-lanl/package.py
index fa7de3d4a370b67488446a1eaa6d1b61388c2e5c..5694535fccff615732a615bf3ec9b780139b0b77 100644
--- a/var/spack/repos/builtin/packages/cbtf-lanl/package.py
+++ b/var/spack/repos/builtin/packages/cbtf-lanl/package.py
@@ -53,7 +53,7 @@ class CbtfLanl(Package):
 
     version('1.6', branch='master', git='http://git.code.sf.net/p/cbtf-lanl/cbtf-lanl')
 
-    depends_on("cmake@3.0.2")
+    depends_on("cmake@3.0.2", type='build')
     # Dependencies for cbtf-krell
     depends_on("mrnet@5.0.1:+lwthreads+krellpatch")
     depends_on("xerces-c@3.1.1:")
diff --git a/var/spack/repos/builtin/packages/cbtf/package.py b/var/spack/repos/builtin/packages/cbtf/package.py
index 2231cf1d45bad8b29ca383d495800cffb67d4404..017b897f3c66d355bfac5e2d889c9392b26008ec 100644
--- a/var/spack/repos/builtin/packages/cbtf/package.py
+++ b/var/spack/repos/builtin/packages/cbtf/package.py
@@ -57,7 +57,7 @@ class Cbtf(Package):
 
     variant('runtime', default=False, description="build only the runtime libraries and collectors.")
 
-    depends_on("cmake@3.0.2")
+    depends_on("cmake@3.0.2", type='build')
     depends_on("boost@1.50.0:")
     depends_on("mrnet@5.0.1:+lwthreads+krellpatch")
     depends_on("xerces-c@3.1.1:")
diff --git a/var/spack/repos/builtin/packages/cereal/package.py b/var/spack/repos/builtin/packages/cereal/package.py
index 80198fa2248196f4348e61c8669659b16c5d8523..41dc9a274b8240bcc39e6680772c5bdb8e419836 100644
--- a/var/spack/repos/builtin/packages/cereal/package.py
+++ b/var/spack/repos/builtin/packages/cereal/package.py
@@ -40,7 +40,7 @@ class Cereal(Package):
 
     patch("Werror.patch")
 
-    depends_on("cmake @2.6.2:")
+    depends_on('cmake@2.6.2:', type='build')
 
     def install(self, spec, prefix):
         # Don't use -Werror
diff --git a/var/spack/repos/builtin/packages/cgal/package.py b/var/spack/repos/builtin/packages/cgal/package.py
index ea1b20e34ff141722f81a7a1584d700d0a74feef..5c87978339ee9b4b54dcb04ddd588a08a808b420 100644
--- a/var/spack/repos/builtin/packages/cgal/package.py
+++ b/var/spack/repos/builtin/packages/cgal/package.py
@@ -46,7 +46,7 @@ class Cgal(Package):
     depends_on('mpfr')
     depends_on('gmp')
     depends_on('zlib')
-    depends_on('cmake')
+    depends_on('cmake', type='build')
 
     # FIXME : Qt5 dependency missing (needs Qt5 and OpenGL)
     # FIXME : Optional third party libraries missing
diff --git a/var/spack/repos/builtin/packages/cleverleaf/package.py b/var/spack/repos/builtin/packages/cleverleaf/package.py
index 6b54d1bf267d83753964f996fa8672acc5ac5354..c258e89514aba3b1486dd9b2f15e86276e38a775 100644
--- a/var/spack/repos/builtin/packages/cleverleaf/package.py
+++ b/var/spack/repos/builtin/packages/cleverleaf/package.py
@@ -40,6 +40,7 @@ class Cleverleaf(Package):
     depends_on("SAMRAI@3.8.0:")
     depends_on("hdf5+mpi")
     depends_on("boost")
+    depends_on('cmake', type='build')
 
     def install(self, spec, prefix):
         cmake(*std_cmake_args)
diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py
index 7b2a125fe50241e3552b98fcd17ef7ea7dfe0c4c..b39b08639660b4cbcd1a15f2280f86a48731cbe8 100644
--- a/var/spack/repos/builtin/packages/cmake/package.py
+++ b/var/spack/repos/builtin/packages/cmake/package.py
@@ -47,8 +47,8 @@ class Cmake(Package):
     depends_on('ncurses', when='+ncurses')
     depends_on('openssl', when='+openssl')
     depends_on('qt', when='+qt')
-    depends_on('python@2.7.11:', when='+doc')
-    depends_on('py-sphinx', when='+doc')
+    depends_on('python@2.7.11:', when='+doc', type='build')
+    depends_on('py-sphinx', when='+doc', type='build')
 
     def url_for_version(self, version):
         """Handle CMake's version-based custom URLs."""
diff --git a/var/spack/repos/builtin/packages/cmocka/package.py b/var/spack/repos/builtin/packages/cmocka/package.py
index 41f80d9761556ddca58228f46bc6ee2a122ccd92..aa2b3cc3bb224defebade0a9416671766b10c3e5 100644
--- a/var/spack/repos/builtin/packages/cmocka/package.py
+++ b/var/spack/repos/builtin/packages/cmocka/package.py
@@ -32,6 +32,8 @@ class Cmocka(Package):
     version('1.0.1', 'ed861e501a21a92b2af63e466df2015e')
     parallel = False
 
+    depends_on('cmake', type='build')
+
     def install(self, spec, prefix):
         with working_dir('spack-build', create=True):
 	    cmake('..', *std_cmake_args)
diff --git a/var/spack/repos/builtin/packages/cram/package.py b/var/spack/repos/builtin/packages/cram/package.py
index 7e055870872b0d9fd92d121b56256b6bccf9ea27..283bc5adea3b9258a7ccfce5001896b3e26b8946 100644
--- a/var/spack/repos/builtin/packages/cram/package.py
+++ b/var/spack/repos/builtin/packages/cram/package.py
@@ -33,6 +33,7 @@ class Cram(Package):
 
     extends('python')
     depends_on("mpi")
+    depends_on('cmake', type='build')
 
     def install(self, spec, prefix):
         cmake(".", *std_cmake_args)
diff --git a/var/spack/repos/builtin/packages/czmq/package.py b/var/spack/repos/builtin/packages/czmq/package.py
index d69f3e50093bf5ea952c8e5112c0e1ec5cbacd50..a251a94470f1f0dd2830c93cc8a5eb7bc4efdae6 100644
--- a/var/spack/repos/builtin/packages/czmq/package.py
+++ b/var/spack/repos/builtin/packages/czmq/package.py
@@ -32,10 +32,10 @@ class Czmq(Package):
 
     version('3.0.2', '23e9885f7ee3ce88d99d0425f52e9be1', url='https://github.com/zeromq/czmq/archive/v3.0.2.tar.gz')
 
-    depends_on('libtool')
-    depends_on('automake')
-    depends_on('autoconf')
-    depends_on('pkg-config')
+    depends_on('libtool', type='build')
+    depends_on('automake', type='build')
+    depends_on('autoconf', type='build')
+    depends_on('pkg-config', type='build')
     depends_on('zeromq')
 
     def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/dakota/package.py b/var/spack/repos/builtin/packages/dakota/package.py
index 3a8ddf28ef6f3ed17f742dcd316b2106973192e5..d0d22d97286ae911aa417819b0b13945a70b0745 100644
--- a/var/spack/repos/builtin/packages/dakota/package.py
+++ b/var/spack/repos/builtin/packages/dakota/package.py
@@ -55,6 +55,7 @@ class Dakota(Package):
 
     depends_on('python')
     depends_on('boost')
+    depends_on('cmake', type='build')
 
     def url_for_version(self, version):
         return Dakota._url_str.format(version=version)
diff --git a/var/spack/repos/builtin/packages/damselfly/package.py b/var/spack/repos/builtin/packages/damselfly/package.py
index 42fab63f98f3e27638e83f6506ebab9e6eb4daba..427997072c48b2599fda2678eb1bc60cf0a7e657 100644
--- a/var/spack/repos/builtin/packages/damselfly/package.py
+++ b/var/spack/repos/builtin/packages/damselfly/package.py
@@ -31,6 +31,8 @@ class Damselfly(Package):
 
     version('1.0', '05cf7e2d8ece4408c0f2abb7ab63fd74c0d62895', git='https://github.com/llnl/damselfly.git', tag='v1.0')
 
+    depends_on('cmake', type='build')
+
     def install(self, spec, prefix):
         with working_dir('spack-build', create=True):
 	    cmake('-DCMAKE_BUILD_TYPE=release', '..', *std_cmake_args)
diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py
index e7984466ba95f3977cd1d5d1c83664c8b62ab177..54604d351ffd3628c7d8b5a7e54290628d0c4035 100644
--- a/var/spack/repos/builtin/packages/dealii/package.py
+++ b/var/spack/repos/builtin/packages/dealii/package.py
@@ -60,7 +60,7 @@ class Dealii(Package):
     depends_on("boost@1.59.0:+thread+system+serialization+iostreams",     when='~mpi')  # NOQA: ignore=E501
     depends_on("boost@1.59.0:+mpi+thread+system+serialization+iostreams", when='+mpi')  # NOQA: ignore=E501
     depends_on("bzip2")
-    depends_on("cmake")
+    depends_on("cmake", type='build')
     depends_on("lapack")
     depends_on("muparser")
     depends_on("suite-sparse")
diff --git a/var/spack/repos/builtin/packages/dia/package.py b/var/spack/repos/builtin/packages/dia/package.py
index 38742b7e7df647fecb64b191da1d4580ccb950f2..1685f0009f57f66eb6ce8d7726a2a2982a068d7b 100644
--- a/var/spack/repos/builtin/packages/dia/package.py
+++ b/var/spack/repos/builtin/packages/dia/package.py
@@ -31,7 +31,7 @@ class Dia(Package):
 
     version('0.97.3',    '0e744a0f6a6c4cb6a089e4d955392c3c')
 
-    depends_on('intltool')
+    depends_on('intltool', type='build')
     depends_on('gtkplus@2.6.0:')
     depends_on('cairo')
     #depends_on('libart') # optional dependency, not yet supported by spack.
diff --git a/var/spack/repos/builtin/packages/doxygen/package.py b/var/spack/repos/builtin/packages/doxygen/package.py
index b65eafb2cd9350651553e7fc72eb6a5a79944a9d..267ba6175654debe6c0524d03dc0f37452c4b565 100644
--- a/var/spack/repos/builtin/packages/doxygen/package.py
+++ b/var/spack/repos/builtin/packages/doxygen/package.py
@@ -43,12 +43,12 @@ class Doxygen(Package):
     # graphviz appears to be a run-time optional dependency
     variant('graphviz', default=True, description='Build with dot command support from Graphviz.')  # NOQA: ignore=E501
 
-    depends_on("cmake@2.8.12:")
-    depends_on("flex")
-    depends_on("bison")
+    depends_on("cmake@2.8.12:", type='build')
+    depends_on("flex", type='build')
+    depends_on("bison", type='build')
 
     # optional dependencies
-    depends_on("graphviz", when="+graphviz")
+    depends_on("graphviz", when="+graphviz", type='run')
 
     def install(self, spec, prefix):
         cmake('.', *std_cmake_args)
diff --git a/var/spack/repos/builtin/packages/dyninst/package.py b/var/spack/repos/builtin/packages/dyninst/package.py
index 735936f087d999c64273137d47a4f3bd7d98fd4b..efe4de4abf1ffe694d20a92bc57b65f5cb2b6ba6 100644
--- a/var/spack/repos/builtin/packages/dyninst/package.py
+++ b/var/spack/repos/builtin/packages/dyninst/package.py
@@ -43,6 +43,7 @@ class Dyninst(Package):
     depends_on("libelf")
     depends_on("libdwarf")
     depends_on("boost@1.42:")
+    depends_on('cmake', type='build')
 
     # new version uses cmake
     def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/eigen/package.py b/var/spack/repos/builtin/packages/eigen/package.py
index 9ff41076197cdf7105e429fa6d9c7e5ab41798fc..97343f499b16d15489b70d4743ef9246707044e3 100644
--- a/var/spack/repos/builtin/packages/eigen/package.py
+++ b/var/spack/repos/builtin/packages/eigen/package.py
@@ -47,7 +47,7 @@ class Eigen(Package):
     variant('mpfr', default=True, description='Enables support for multi-precisions floating points via mpfr')
 
     # TODO : dependency on googlehash, superlu, adolc missing
-    depends_on('cmake')
+    depends_on('cmake', type='build')
     depends_on('metis@5:', when='+metis')
     depends_on('scotch', when='+scotch')
     depends_on('fftw', when='+fftw')
diff --git a/var/spack/repos/builtin/packages/environment-modules/package.py b/var/spack/repos/builtin/packages/environment-modules/package.py
index fe7a5ee4f642a65a1033396606b5e11f4947215f..5d5bb3be02944c68c0fa8753ad53b693a636d3e5 100644
--- a/var/spack/repos/builtin/packages/environment-modules/package.py
+++ b/var/spack/repos/builtin/packages/environment-modules/package.py
@@ -35,7 +35,7 @@ class EnvironmentModules(Package):
     version('3.2.10', '8b097fdcb90c514d7540bb55a3cb90fb')
 
     # Dependencies:
-    depends_on('tcl')
+    depends_on('tcl', type=alldeps)
 
     def install(self, spec, prefix):
         tcl_spec = spec['tcl']
diff --git a/var/spack/repos/builtin/packages/exodusii/package.py b/var/spack/repos/builtin/packages/exodusii/package.py
index 5e9227af46da79e2b233e40ecde722a35dd795fa..eb6c23afeb67cc74173cad860bb44655133699db 100644
--- a/var/spack/repos/builtin/packages/exodusii/package.py
+++ b/var/spack/repos/builtin/packages/exodusii/package.py
@@ -44,9 +44,7 @@ class Exodusii(Package):
 
     version('2016-02-08', git='https://github.com/gsjaardema/seacas.git', commit='dcf3529')
 
-    # TODO: Make this a build dependency once build dependencies are supported
-    # (see: https://github.com/LLNL/spack/pull/378).
-    depends_on('cmake@2.8.7:')
+    depends_on('cmake@2.8.7:', type='build')
     depends_on('hdf5~shared~mpi')
     depends_on('netcdf~mpi')
 
diff --git a/var/spack/repos/builtin/packages/expat/package.py b/var/spack/repos/builtin/packages/expat/package.py
index 51e827b2c52c08aa72302045121f178c76ed9c75..2a9ac123f34eaaecd5c7d54adc7dae65a33cea81 100644
--- a/var/spack/repos/builtin/packages/expat/package.py
+++ b/var/spack/repos/builtin/packages/expat/package.py
@@ -31,7 +31,7 @@ class Expat(Package):
 
     version('2.1.0', 'dd7dab7a5fea97d2a6a43f511449b7cd')
 
-    depends_on('cmake')
+    depends_on('cmake', type='build')
 
     def install(self, spec, prefix):
 
diff --git a/var/spack/repos/builtin/packages/flex/package.py b/var/spack/repos/builtin/packages/flex/package.py
index b778538606ae82dc14538817ad0d6253ad4bec94..800e4b9d96ad4425df65d24461a50503545b12cd 100644
--- a/var/spack/repos/builtin/packages/flex/package.py
+++ b/var/spack/repos/builtin/packages/flex/package.py
@@ -34,7 +34,7 @@ class Flex(Package):
     version('2.6.0', '5724bcffed4ebe39e9b55a9be80859ec')
     version('2.5.39', 'e133e9ead8ec0a58d81166b461244fde')
 
-    depends_on("bison")
+    depends_on("bison", type='build')
 
     def install(self, spec, prefix):
         configure("--prefix=%s" % prefix)
diff --git a/var/spack/repos/builtin/packages/flux/package.py b/var/spack/repos/builtin/packages/flux/package.py
index 2b972d63ae8ed65ff1a479cdba1fe6c95ec77bd6..dec339a6affa7e4c4c7d43d97a2ac6903027d84d 100644
--- a/var/spack/repos/builtin/packages/flux/package.py
+++ b/var/spack/repos/builtin/packages/flux/package.py
@@ -45,8 +45,8 @@ class Flux(Package):
     depends_on("py-cffi")
 
     # TODO: This provides a catalog, hacked with environment below for now
-    depends_on("docbook-xml")
-    depends_on("asciidoc")
+    depends_on("docbook-xml", type='build')
+    depends_on("asciidoc", type='build')
 
     def install(self, spec, prefix):
         # Bootstrap with autotools
diff --git a/var/spack/repos/builtin/packages/gdal/package.py b/var/spack/repos/builtin/packages/gdal/package.py
index caff06bdd6d9dfe4f370c8f273b94412aca3658e..9ed83bc3be94796cf6efe821d27c978ca5027b42 100644
--- a/var/spack/repos/builtin/packages/gdal/package.py
+++ b/var/spack/repos/builtin/packages/gdal/package.py
@@ -62,7 +62,7 @@ class Gdal(Package):
     depends_on("libpng")
     depends_on("zlib")
     depends_on("proj")
-    depends_on("py-numpy")
+    depends_on("py-numpy", type=nolink)
 
     parallel = False
 
diff --git a/var/spack/repos/builtin/packages/gdb/package.py b/var/spack/repos/builtin/packages/gdb/package.py
index 58d8a545dbca6cd8e210e1c174bf59227006e52a..78ad4b307dce27b363d56141b9853d999f996596 100644
--- a/var/spack/repos/builtin/packages/gdb/package.py
+++ b/var/spack/repos/builtin/packages/gdb/package.py
@@ -41,7 +41,7 @@ class Gdb(Package):
     version('7.9', '8f8ced422fe462a00e0135a643544f17')
     version('7.8.2', '8b0ea8b3559d3d90b3ff4952f0aeafbc')
 
-    depends_on('texinfo')
+    depends_on('texinfo', type='build')
 
     def install(self, spec, prefix):
         configure('--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/gflags/package.py b/var/spack/repos/builtin/packages/gflags/package.py
index 9f3552d53dcd71aad0126c02938d570061245ebb..47bbf369efd6779c54de76c945cfc7b24809be56 100644
--- a/var/spack/repos/builtin/packages/gflags/package.py
+++ b/var/spack/repos/builtin/packages/gflags/package.py
@@ -37,6 +37,8 @@ class Gflags(Package):
 
     version('2.1.2', 'ac432de923f9de1e9780b5254884599f')
 
+    depends_on('cmake', type='build')
+
     def install(self, spec, prefix):
         cmake("-DCMAKE_INSTALL_PREFIX=" + prefix,
               "-DBUILD_SHARED_LIBS=ON")
diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py
index 03e7d3e03122fdcac44d9b993074809218c57aa7..4cbbaac342465bfedf37fbf9b5e8f98b94a93665 100644
--- a/var/spack/repos/builtin/packages/git/package.py
+++ b/var/spack/repos/builtin/packages/git/package.py
@@ -49,7 +49,7 @@ class Git(Package):
 
 
     depends_on("openssl")
-    depends_on("autoconf")
+    depends_on("autoconf", type='build')
     depends_on("curl")
     depends_on("expat")
 
diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py
index 75602493ce2a09fc6293c9dae0e2facc879c3696..0a0a02f464e87a0eba451c7b3dc85747467fa53a 100644
--- a/var/spack/repos/builtin/packages/glib/package.py
+++ b/var/spack/repos/builtin/packages/glib/package.py
@@ -38,7 +38,7 @@ class Glib(Package):
 
     depends_on("libffi")
     depends_on("zlib")
-    depends_on("pkg-config")
+    depends_on("pkg-config", type='build')
     depends_on('gettext', when=sys.platform == 'darwin')
 
     # The following patch is needed for gcc-6.1
diff --git a/var/spack/repos/builtin/packages/glm/package.py b/var/spack/repos/builtin/packages/glm/package.py
index 0c9212f17d6771f35b5d1568441ecbc45bb2e3dc..442c1cdf40a164b947c24c0e62d3305c8958ecb0 100644
--- a/var/spack/repos/builtin/packages/glm/package.py
+++ b/var/spack/repos/builtin/packages/glm/package.py
@@ -35,8 +35,8 @@ class Glm(Package):
     url = "https://github.com/g-truc/glm/archive/0.9.7.1.tar.gz"
 
     version('0.9.7.1', '61af6639cdf652d1cdd7117190afced8')
-    
-    depends_on ("cmake")
+
+    depends_on('cmake', type='build')
 
     def install(self, spec, prefix):
         with working_dir('spack-build', create=True):
diff --git a/var/spack/repos/builtin/packages/global/package.py b/var/spack/repos/builtin/packages/global/package.py
index c144d6660b228e58d7b3b53f070f2b41a2e3df99..f832834a2804b15ab4769391c8dafee68b159b0c 100644
--- a/var/spack/repos/builtin/packages/global/package.py
+++ b/var/spack/repos/builtin/packages/global/package.py
@@ -34,7 +34,7 @@ class Global(Package):
 
     version('6.5', 'dfec818b4f53d91721e247cf7b218078')
 
-    depends_on('exuberant-ctags')
+    depends_on('exuberant-ctags', type=nolink)
     depends_on('ncurses')
 
     def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/gmp/package.py b/var/spack/repos/builtin/packages/gmp/package.py
index 3933788425232d3b4d34dcfb12bb07827ceb225c..e2c2892f18c197860572ccbc95707e6a0f7aaff6 100644
--- a/var/spack/repos/builtin/packages/gmp/package.py
+++ b/var/spack/repos/builtin/packages/gmp/package.py
@@ -35,7 +35,7 @@ class Gmp(Package):
     version('6.0.0a', 'b7ff2d88cae7f8085bd5006096eed470')
     version('6.0.0' , '6ef5869ae735db9995619135bd856b84')
 
-    depends_on("m4")
+    depends_on("m4", type='build')
 
     def install(self, spec, prefix):
         configure("--prefix=%s" % prefix)
diff --git a/var/spack/repos/builtin/packages/gmsh/package.py b/var/spack/repos/builtin/packages/gmsh/package.py
index 0951b86d57ecfa6c99a9a503b411dd462eed2c83..fe26cb3bf2da606bac44631c3deb07199f135004 100644
--- a/var/spack/repos/builtin/packages/gmsh/package.py
+++ b/var/spack/repos/builtin/packages/gmsh/package.py
@@ -53,7 +53,7 @@ class Gmsh(Package):
 
     depends_on('blas')
     depends_on('lapack')
-    depends_on('cmake@2.8:')
+    depends_on('cmake@2.8:', type='build')
     depends_on('gmp')
     depends_on('mpi',  when='+mpi')
     # Assumes OpenGL with GLU is already provided by the system:
diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py
index 13b83517d175a4d40c6d859bfdc4fe8798ea6b86..ff2c2f67819bc7f22057efd91228eed7b82f4972 100644
--- a/var/spack/repos/builtin/packages/go/package.py
+++ b/var/spack/repos/builtin/packages/go/package.py
@@ -24,7 +24,7 @@ class Go(Package):
 
     # to-do, make non-c self-hosting compilers feasible without backflips
     # should be a dep on external go compiler
-    depends_on('go-bootstrap')
+    depends_on('go-bootstrap', type='build')
     depends_on('git')
 
     def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/googletest/package.py b/var/spack/repos/builtin/packages/googletest/package.py
index 9444253c8cb734e823c1321acea9973b2daf25f3..1dc74fbcf4b5455a2bf79abb289d5d252a7ab850 100644
--- a/var/spack/repos/builtin/packages/googletest/package.py
+++ b/var/spack/repos/builtin/packages/googletest/package.py
@@ -31,7 +31,7 @@ class Googletest(Package):
 
     version('1.7.0', '5eaf03ed925a47b37c8e1d559eb19bc4')
 
-    depends_on("cmake")
+    depends_on("cmake", type='build')
 
     def install(self, spec, prefix):
         which('cmake')('.', *std_cmake_args)
diff --git a/var/spack/repos/builtin/packages/graphlib/package.py b/var/spack/repos/builtin/packages/graphlib/package.py
index f70f32cc8a141810b22125eea81c26243a24b3e0..087a322acc9cdefe190006bcc84061d9a6b2470a 100644
--- a/var/spack/repos/builtin/packages/graphlib/package.py
+++ b/var/spack/repos/builtin/packages/graphlib/package.py
@@ -31,6 +31,8 @@ class Graphlib(Package):
 
     version('2.0.0', '43c6df84f1d38ba5a5dce0ae19371a70')
 
+    depends_on('cmake', type='build')
+
     def install(self, spec, prefix):
         cmake(".", *std_cmake_args)
 
diff --git a/var/spack/repos/builtin/packages/graphviz/package.py b/var/spack/repos/builtin/packages/graphviz/package.py
index 2f99015ba2618d44cc6554a214502cf4eefd2efe..e5898a6e590b43d1988472d546110988c593b5d7 100644
--- a/var/spack/repos/builtin/packages/graphviz/package.py
+++ b/var/spack/repos/builtin/packages/graphviz/package.py
@@ -44,7 +44,7 @@ class Graphviz(Package):
     depends_on("swig")
     depends_on("python")
     depends_on("ghostscript")
-    depends_on("pkg-config")
+    depends_on("pkg-config", type='build')
 
     def install(self, spec, prefix):
         options = ['--prefix=%s' % prefix]
diff --git a/var/spack/repos/builtin/packages/gromacs/package.py b/var/spack/repos/builtin/packages/gromacs/package.py
index 1a50a4248882b189071fb51365040b474beb3f41..55eacc8d38dc4d74865fabb90266fbb210dddac6 100644
--- a/var/spack/repos/builtin/packages/gromacs/package.py
+++ b/var/spack/repos/builtin/packages/gromacs/package.py
@@ -50,6 +50,7 @@ class Gromacs(Package):
     depends_on('mpi', when='+mpi')
 
     depends_on('fftw')
+    depends_on('cmake', type='build')
 
     # TODO : add GPU support
 
diff --git a/var/spack/repos/builtin/packages/hdf5-blosc/package.py b/var/spack/repos/builtin/packages/hdf5-blosc/package.py
index 50f380083cf5e3b8cb762780f208b5cd1dfa3cc2..28b65711b0f726e78941279a941128bbe5b43865 100644
--- a/var/spack/repos/builtin/packages/hdf5-blosc/package.py
+++ b/var/spack/repos/builtin/packages/hdf5-blosc/package.py
@@ -53,7 +53,7 @@ class Hdf5Blosc(Package):
 
     depends_on("c-blosc")
     depends_on("hdf5")
-    depends_on("libtool")
+    depends_on("libtool", type='build')
 
     parallel = False
 
diff --git a/var/spack/repos/builtin/packages/hoomd-blue/package.py b/var/spack/repos/builtin/packages/hoomd-blue/package.py
index 90d5107e3be78921ada810f30db2fa9687826802..060cd0b713d2eae72f2e9f04f9f9763cbbb11644 100644
--- a/var/spack/repos/builtin/packages/hoomd-blue/package.py
+++ b/var/spack/repos/builtin/packages/hoomd-blue/package.py
@@ -45,12 +45,12 @@ class HoomdBlue(Package):
     variant('doc',  default=True, description='Generate documentation')
 
     extends('python')
-    depends_on('py-numpy')
+    depends_on('py-numpy', type=nolink)
     depends_on('boost+python')
-    depends_on('cmake')
+    depends_on('cmake', type='build')
     depends_on('mpi', when='+mpi')
     depends_on('cuda', when='+cuda')
-    depends_on('doxygen', when='+doc')
+    depends_on('doxygen', when='+doc', type='build')
 
     def install(self, spec, prefix):
 
diff --git a/var/spack/repos/builtin/packages/ibmisc/package.py b/var/spack/repos/builtin/packages/ibmisc/package.py
index 8e6cf429a7f15320147333afe299ffb11d154dde..ed1e6c6cbf38919fd5f8a02e45fbc0ff83f4ec69 100644
--- a/var/spack/repos/builtin/packages/ibmisc/package.py
+++ b/var/spack/repos/builtin/packages/ibmisc/package.py
@@ -26,13 +26,13 @@ class Ibmisc(CMakePackage):
     depends_on('netcdf-cxx4', when='+netcdf')
     depends_on('udunits2', when='+udunits2')
     depends_on('googletest', when='+googletest')
-    depends_on('py-cython', when='+python')
-    depends_on('py-numpy', when='+python')
+    depends_on('py-cython', when='+python', type=nolink)
+    depends_on('py-numpy', when='+python', type=nolink)
     depends_on('boost', when='+boost')
 
     # Build dependencies
-    depends_on('cmake')
-    depends_on('doxygen')
+    depends_on('cmake', type='build')
+    depends_on('doxygen', type='build')
 
     def configure_args(self):
         spec = self.spec
diff --git a/var/spack/repos/builtin/packages/ipopt/package.py b/var/spack/repos/builtin/packages/ipopt/package.py
index 47c5ca0c0985c23fc2c40b0c7e6f38b95225b9ca..3bd21df89ea9410fde50844636c9ada4e7174002 100644
--- a/var/spack/repos/builtin/packages/ipopt/package.py
+++ b/var/spack/repos/builtin/packages/ipopt/package.py
@@ -38,7 +38,7 @@ class Ipopt(Package):
 
     depends_on("blas")
     depends_on("lapack")
-    depends_on("pkg-config")
+    depends_on("pkg-config", type='build')
     depends_on("mumps+double~mpi") 
     
     def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/julia/package.py b/var/spack/repos/builtin/packages/julia/package.py
index 99d138dcff930ff7dc37c858a3582f9b6d815894..536ce692364535ec0e60db51e8aa384837d97ada 100644
--- a/var/spack/repos/builtin/packages/julia/package.py
+++ b/var/spack/repos/builtin/packages/julia/package.py
@@ -44,16 +44,16 @@ class Julia(Package):
     patch('openblas.patch', when='@0.4:0.4.5')
 
     # Build-time dependencies:
-    # depends_on("awk")
-    # depends_on("m4")
-    # depends_on("pkg-config")
+    # depends_on("awk", type='build')
+    # depends_on("m4", type='build')
+    # depends_on("pkg-config", type='build')
 
     # Combined build-time and run-time dependencies:
-    depends_on("binutils")
-    depends_on("cmake @2.8:")
-    depends_on("git")
-    depends_on("openssl")
-    depends_on("python @2.7:2.999")
+    depends_on("binutils", type=nolink)
+    depends_on("cmake @2.8:", type=nolink)
+    depends_on("git", type=nolink)
+    depends_on("openssl", type=nolink)
+    depends_on("python @2.7:2.999", type=nolink)
 
     # I think that Julia requires the dependencies above, but it
     # builds fine (on my system) without these. We should enable them
@@ -93,8 +93,8 @@ class Julia(Package):
     # USE_SYSTEM_LIBGIT2=0
 
     # Run-time dependencies for Julia packages:
-    depends_on("hdf5")
-    depends_on("mpi")
+    depends_on("hdf5", type='run')
+    depends_on("mpi", type='run')
 
     def install(self, spec, prefix):
         # Explicitly setting CC, CXX, or FC breaks building libuv, one
diff --git a/var/spack/repos/builtin/packages/launchmon/package.py b/var/spack/repos/builtin/packages/launchmon/package.py
index f2568100059950cf61261f1225a4d8caa445c2ad..8aa6d727278688cfc8c4b28ca6d42233bda81d01 100644
--- a/var/spack/repos/builtin/packages/launchmon/package.py
+++ b/var/spack/repos/builtin/packages/launchmon/package.py
@@ -33,9 +33,9 @@ class Launchmon(Package):
 
     version('1.0.2', '8d6ba77a0ec2eff2fde2c5cc8fa7ff7a')
 
-    depends_on('autoconf')
-    depends_on('automake')
-    depends_on('libtool')
+    depends_on('autoconf', type='build')
+    depends_on('automake', type='build')
+    depends_on('libtool', type='build')
 
     def install(self, spec, prefix):
         configure(
diff --git a/var/spack/repos/builtin/packages/libgd/package.py b/var/spack/repos/builtin/packages/libgd/package.py
index 5e4e420842bc3edd51caf240ae811aa3937632ac..938f4f6f3b7789a3e6f579568043bfbea5be0061 100644
--- a/var/spack/repos/builtin/packages/libgd/package.py
+++ b/var/spack/repos/builtin/packages/libgd/package.py
@@ -40,6 +40,7 @@ class Libgd(Package):
     version('2.1.1', 'e91a1a99903e460e7ba00a794e72cc1e')
 
     depends_on('libpng')
+    depends_on('cmake', type='build')
 
     def install(self, spec, prefix):
 
diff --git a/var/spack/repos/builtin/packages/libjpeg-turbo/package.py b/var/spack/repos/builtin/packages/libjpeg-turbo/package.py
index 8615b2ed833a3d13f84fa2c6b5b8c5ab3715f82d..d1239ba0d989bfd56eb257c81b25f9fbf7d2174f 100644
--- a/var/spack/repos/builtin/packages/libjpeg-turbo/package.py
+++ b/var/spack/repos/builtin/packages/libjpeg-turbo/package.py
@@ -35,8 +35,8 @@ class LibjpegTurbo(Package):
     version('1.3.1', '2c3a68129dac443a72815ff5bb374b05')
 
     # Can use either of these.
-    depends_on("yasm")
-    depends_on("nasm")
+    depends_on("yasm", type='build')
+    depends_on("nasm", type='build')
 
     def install(self, spec, prefix):
         configure("--prefix=%s" % prefix)
diff --git a/var/spack/repos/builtin/packages/libtool/package.py b/var/spack/repos/builtin/packages/libtool/package.py
index 0e410a5061471e365f7d9e7135b78319ff1d80c1..a0070d72d078dff1fead450f98c29e2c3ac3da13 100644
--- a/var/spack/repos/builtin/packages/libtool/package.py
+++ b/var/spack/repos/builtin/packages/libtool/package.py
@@ -35,7 +35,7 @@ class Libtool(Package):
     version('2.4.6', 'addf44b646ddb4e3919805aa88fa7c5e')
     version('2.4.2', 'd2f3b7d4627e69e13514a40e72a24d50')
 
-    depends_on('m4')
+    depends_on('m4', type='build')
 
     def _make_executable(self, name):
         return Executable(join_path(self.prefix.bin, name))
diff --git a/var/spack/repos/builtin/packages/libuv/package.py b/var/spack/repos/builtin/packages/libuv/package.py
index 63565c7aeaba69ece3002985793b80674b5d0131..0d29270b381e22659d3a96118db8b26368b34db7 100644
--- a/var/spack/repos/builtin/packages/libuv/package.py
+++ b/var/spack/repos/builtin/packages/libuv/package.py
@@ -31,9 +31,9 @@ class Libuv(Package):
 
     version('1.9.0', '14737f9c76123a19a290dabb7d1cd04c')
 
-    depends_on('automake')
-    depends_on('autoconf')
-    depends_on('libtool')
+    depends_on('automake', type='build')
+    depends_on('autoconf', type='build')
+    depends_on('libtool', type='build')
 
     def install(self, spec, prefix):
         bash = which("bash")
diff --git a/var/spack/repos/builtin/packages/libxcb/package.py b/var/spack/repos/builtin/packages/libxcb/package.py
index 746d4567e200fbb9fbc9a92a3933b1b13cd7edd9..586eb970d8fe60e63f6c4e3c48bcf124efbe0ac9 100644
--- a/var/spack/repos/builtin/packages/libxcb/package.py
+++ b/var/spack/repos/builtin/packages/libxcb/package.py
@@ -36,9 +36,9 @@ class Libxcb(Package):
     version('1.11', '1698dd837d7e6e94d029dbe8b3a82deb')
     version('1.11.1', '118623c15a96b08622603a71d8789bf3')
 
-    depends_on("python")
+    depends_on("python", type='build')
     depends_on("xcb-proto")
-    depends_on("pkg-config")
+    depends_on("pkg-config", type='build')
     depends_on("libpthread-stubs")
     depends_on('libxau')
 
diff --git a/var/spack/repos/builtin/packages/llvm-lld/package.py b/var/spack/repos/builtin/packages/llvm-lld/package.py
index 073c2d1b9e327bb7bf8209376c4955f8c41f829a..127fe1204d2270261eb768a00f84bdc5b237db4b 100644
--- a/var/spack/repos/builtin/packages/llvm-lld/package.py
+++ b/var/spack/repos/builtin/packages/llvm-lld/package.py
@@ -34,6 +34,8 @@ class LlvmLld(Package):
 
     version('3.4', '3b6a17e58c8416c869c14dd37682f78e')
 
+    depends_on('cmake', type='build')
+
     def install(self, spec, prefix):
         env['CXXFLAGS'] = self.compier.cxx11_flag
 
diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py
index 7a6ea7401cee6f94ad920b57b013478b5425fbac..e79c123a7eabd14dc408191a5db99a47bb2acbbb 100644
--- a/var/spack/repos/builtin/packages/llvm/package.py
+++ b/var/spack/repos/builtin/packages/llvm/package.py
@@ -51,7 +51,7 @@ class Llvm(Package):
     variant('all_targets', default=True, description="Build all supported targets, default targets <current arch>,NVPTX,AMDGPU,CppBackend")
 
     # Build dependency
-    depends_on('cmake @2.8.12.2:')
+    depends_on('cmake@2.8.12.2:', type='build')
 
     # Universal dependency
     depends_on('python@2.7:2.8')  # Seems not to support python 3.X.Y
diff --git a/var/spack/repos/builtin/packages/lmod/package.py b/var/spack/repos/builtin/packages/lmod/package.py
index 7d75866d52fe73ec8f6a4b63ac02734aad49fa3e..efa235f646a217a96955152637975d1645880f10 100644
--- a/var/spack/repos/builtin/packages/lmod/package.py
+++ b/var/spack/repos/builtin/packages/lmod/package.py
@@ -42,8 +42,8 @@ class Lmod(Package):
     version('6.0.1', '91abf52fe5033bd419ffe2842ebe7af9')
 
     depends_on('lua@5.2:')
-    depends_on('lua-luaposix')
-    depends_on('lua-luafilesystem')
+    depends_on('lua-luaposix', type=nolink)
+    depends_on('lua-luafilesystem', type=nolink)
 
     parallel = False
 
diff --git a/var/spack/repos/builtin/packages/mbedtls/package.py b/var/spack/repos/builtin/packages/mbedtls/package.py
index ae34d25691103cbd02b78f71f920577947b1dff4..13c0ce768fefdc53ddc2c7a89654758c0d26b734 100644
--- a/var/spack/repos/builtin/packages/mbedtls/package.py
+++ b/var/spack/repos/builtin/packages/mbedtls/package.py
@@ -37,7 +37,7 @@ class Mbedtls(Package):
     version('2.1.3' , '7eb4cf1dfa68578a2c8dbd0b6fa752dd')
     version('1.3.16', '4144d7320c691f721aeb9e67a1bc38e0')
 
-    depends_on('cmake')
+    depends_on('cmake', type='build')
 
     def install(self, spec, prefix):
         cmake('.', *std_cmake_args)
diff --git a/var/spack/repos/builtin/packages/memaxes/package.py b/var/spack/repos/builtin/packages/memaxes/package.py
index 135384e2f7746c2b617456760ecbac16187e2249..31672abaec0bf4d78e4d97ab72423f7fd164efcb 100644
--- a/var/spack/repos/builtin/packages/memaxes/package.py
+++ b/var/spack/repos/builtin/packages/memaxes/package.py
@@ -32,7 +32,7 @@ class Memaxes(Package):
     version('0.5', '5874f3fda9fd2d313c0ff9684f915ab5',
             url='https://github.com/llnl/MemAxes/archive/v0.5.tar.gz')
 
-    depends_on("cmake@2.8.9:")
+    depends_on('cmake@2.8.9:', type='build')
     depends_on("qt@5:")
 
     def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/mesa/package.py b/var/spack/repos/builtin/packages/mesa/package.py
index bd9c9eec4aa370f76a7d3f51508794d343e7bc29..3bad17b5cb0aab545e48f95379d94b64aeb45273 100644
--- a/var/spack/repos/builtin/packages/mesa/package.py
+++ b/var/spack/repos/builtin/packages/mesa/package.py
@@ -44,8 +44,8 @@ class Mesa(Package):
 
     # mesa 10.x
     # depends_on("py-mako")
-    # depends_on("flex")
-    # depends_on("bison")
+    # depends_on("flex", type='build')
+    # depends_on("bison", type='build')
     # depends_on("dri2proto")
     # depends_on("libxcb")
     # depends_on("libxshmfence")
diff --git a/var/spack/repos/builtin/packages/metis/package.py b/var/spack/repos/builtin/packages/metis/package.py
index c4f2afaff258e99c96ca2074e016de9857b2c93d..2180f2cce2f473d2539f834f0578e919176d412c 100644
--- a/var/spack/repos/builtin/packages/metis/package.py
+++ b/var/spack/repos/builtin/packages/metis/package.py
@@ -50,7 +50,7 @@ class Metis(Package):
     variant('idx64', default=False, description='Use int64_t as default index type')
     variant('real64', default=False, description='Use double precision floating point types')
 
-    depends_on('cmake@2.8:', when='@5:')  # build-time dependency
+    depends_on('cmake@2.8:', when='@5:', type='build')
 
     patch('install_gklib_defs_rename.patch', when='@5:')
 
diff --git a/var/spack/repos/builtin/packages/mfem/package.py b/var/spack/repos/builtin/packages/mfem/package.py
index 1b4456380b45dbe834b70a1a145598732a316770..e7a1d963889ed1d0aca0794746092013a704b31a 100644
--- a/var/spack/repos/builtin/packages/mfem/package.py
+++ b/var/spack/repos/builtin/packages/mfem/package.py
@@ -62,7 +62,7 @@ class Mfem(Package):
     depends_on('blas', when='+suite-sparse')
     depends_on('lapack', when='+suite-sparse')
     depends_on('metis@5:', when='+suite-sparse ^suite-sparse@4.5:')
-    depends_on('cmake', when='^metis@5:')
+    depends_on('cmake', when='^metis@5:', type='build')
 
     def check_variants(self, spec):
         if '+mpi' in spec and ('+hypre' not in spec or '+metis' not in spec):
diff --git a/var/spack/repos/builtin/packages/mpibash/package.py b/var/spack/repos/builtin/packages/mpibash/package.py
index b328b98ecf7a4dbf9a31a4127c69bc467d8c8211..e659663d9010bb90dec8c8f7b9b2fa25f5fb6be1 100644
--- a/var/spack/repos/builtin/packages/mpibash/package.py
+++ b/var/spack/repos/builtin/packages/mpibash/package.py
@@ -36,7 +36,7 @@ class Mpibash(Package):
     patch('mpibash-4.3.patch', level=1, when='@4.3')
 
     # above patch modifies configure.ac
-    depends_on('autoconf')
+    depends_on('autoconf', type='build')
 
     # uses MPI_Exscan which is in MPI-1.2 and later
     depends_on('mpi@1.2:')
diff --git a/var/spack/repos/builtin/packages/muster/package.py b/var/spack/repos/builtin/packages/muster/package.py
index 993f14724505ce95bf0150a65cccf6b6ce487f31..64b7324415fe6e2292a0d97418697a8992a98ebe 100644
--- a/var/spack/repos/builtin/packages/muster/package.py
+++ b/var/spack/repos/builtin/packages/muster/package.py
@@ -39,6 +39,7 @@ class Muster(Package):
 
     depends_on("boost")
     depends_on("mpi")
+    depends_on('cmake', type='build')
 
     def install(self, spec, prefix):
         cmake(".", *std_cmake_args)
diff --git a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py
index f8af76429b84a4588dcc75ff2140c93a04761a22..0fb181a7b2e31d15c3da40f032a653312e240728 100644
--- a/var/spack/repos/builtin/packages/netcdf-cxx4/package.py
+++ b/var/spack/repos/builtin/packages/netcdf-cxx4/package.py
@@ -34,7 +34,7 @@ class NetcdfCxx4(Package):
     version('4.2.1', 'd019853802092cf686254aaba165fc81')
 
     depends_on('netcdf')
-    depends_on("autoconf")
+    depends_on("autoconf", type='build')
 
     def install(self, spec, prefix):
         # Rebuild to prevent problems of inconsistency in git repo
diff --git a/var/spack/repos/builtin/packages/netcdf/package.py b/var/spack/repos/builtin/packages/netcdf/package.py
index c2256d5e9f9d691ca60e48a3539e393505d8e840..063d38e4f943fa9c526e99149cd1b3b0f246d822 100644
--- a/var/spack/repos/builtin/packages/netcdf/package.py
+++ b/var/spack/repos/builtin/packages/netcdf/package.py
@@ -39,7 +39,7 @@ class Netcdf(Package):
     variant('mpi',  default=True,  description='Enables MPI parallelism')
     variant('hdf4', default=False, description='Enable HDF4 support')
 
-    depends_on("m4")
+    depends_on("m4", type='build')
     depends_on("hdf", when='+hdf4')
 
     # Required for DAP support
diff --git a/var/spack/repos/builtin/packages/netlib-lapack/package.py b/var/spack/repos/builtin/packages/netlib-lapack/package.py
index 47857eb713e6bb199e01e0d6c15a8b3b6940f126..70015baf1c53c7c00491e97fc64acca8bae5a62e 100644
--- a/var/spack/repos/builtin/packages/netlib-lapack/package.py
+++ b/var/spack/repos/builtin/packages/netlib-lapack/package.py
@@ -52,7 +52,7 @@ class NetlibLapack(Package):
     provides('blas', when='~external-blas')
     provides('lapack')
 
-    depends_on('cmake')
+    depends_on('cmake', type='build')
     depends_on('blas', when='+external-blas')
 
 
diff --git a/var/spack/repos/builtin/packages/netlib-scalapack/package.py b/var/spack/repos/builtin/packages/netlib-scalapack/package.py
index f7fe26a42da85c5288ffef8ad8f224c1b816bcf8..a8250a38de3fd5445b85c01e0cca72552c117e8e 100644
--- a/var/spack/repos/builtin/packages/netlib-scalapack/package.py
+++ b/var/spack/repos/builtin/packages/netlib-scalapack/package.py
@@ -42,9 +42,9 @@ class NetlibScalapack(Package):
 
     provides('scalapack')
 
-    depends_on('cmake')
     depends_on('mpi')
     depends_on('lapack')
+    depends_on('cmake', when='@2.0.0:', type='build')
 
     def install(self, spec, prefix):
         options = [
diff --git a/var/spack/repos/builtin/packages/numdiff/package.py b/var/spack/repos/builtin/packages/numdiff/package.py
index 7e094370ac67677cd4b5459eb328cb081e62ad74..97164165e018e6d5509602b4322d8025a25c4fdc 100644
--- a/var/spack/repos/builtin/packages/numdiff/package.py
+++ b/var/spack/repos/builtin/packages/numdiff/package.py
@@ -35,7 +35,7 @@ class Numdiff(Package):
 
     version('5.8.1',    'a295eb391f6cb1578209fc6b4f9d994e')
 
-    depends_on('gettext', when=sys.platform=='darwin')
+    depends_on('gettext', when=sys.platform=='darwin', type='build')
 
     def install(self, spec, prefix):
         options = ['--prefix=%s' % prefix]
diff --git a/var/spack/repos/builtin/packages/oce/package.py b/var/spack/repos/builtin/packages/oce/package.py
index 06b6b7cbb07a8fac6fbe801f753f09abce8dd6cf..108c8f8a41c0d30242309e859f75ce235e553cf9 100644
--- a/var/spack/repos/builtin/packages/oce/package.py
+++ b/var/spack/repos/builtin/packages/oce/package.py
@@ -42,7 +42,7 @@ class Oce(Package):
 
     variant('tbb', default=True, description='Build with Intel Threading Building Blocks')
 
-    depends_on('cmake@2.8:')
+    depends_on('cmake@2.8:', type='build')
     depends_on('tbb', when='+tbb')
 
     # There is a bug in OCE which appears with Clang (version?) or GCC 6.0
diff --git a/var/spack/repos/builtin/packages/octave/package.py b/var/spack/repos/builtin/packages/octave/package.py
index 1e835512ca7de638318b9732fd9260188d793b89..aa521899e5c9acacfb40843c59d3d2ceeb93196e 100644
--- a/var/spack/repos/builtin/packages/octave/package.py
+++ b/var/spack/repos/builtin/packages/octave/package.py
@@ -68,9 +68,9 @@ class Octave(Package):
     depends_on('blas')
     depends_on('lapack')
     # Octave does not configure with sed from darwin:
-    depends_on('sed', when=sys.platform == 'darwin')
+    depends_on('sed', when=sys.platform == 'darwin', type='build')
     depends_on('pcre')
-    depends_on('pkg-config')
+    depends_on('pkg-config', type='build')
 
     # Strongly recommended dependencies
     depends_on('readline',     when='+readline')
diff --git a/var/spack/repos/builtin/packages/ompt-openmp/package.py b/var/spack/repos/builtin/packages/ompt-openmp/package.py
index e74dcf6c23332e8df76dd9e246fd9573ec8f2a38..800c04ae0eaa494db268e68587caa2fa496a4277 100644
--- a/var/spack/repos/builtin/packages/ompt-openmp/package.py
+++ b/var/spack/repos/builtin/packages/ompt-openmp/package.py
@@ -31,7 +31,7 @@ class OmptOpenmp(Package):
 
     version('0.1', '2334e6a84b52da41b27afd9831ed5370')
 
-    # depends_on("foo")
+    depends_on('cmake', type='build')
 
     def install(self, spec, prefix):
         with working_dir("runtime/build", create=True):
diff --git a/var/spack/repos/builtin/packages/opencv/package.py b/var/spack/repos/builtin/packages/opencv/package.py
index 989c66316c3c4ce497fca2b1fe460d40b2fa3d5d..ff551d0b920d06e5beeb875ead6f6165c713a919 100644
--- a/var/spack/repos/builtin/packages/opencv/package.py
+++ b/var/spack/repos/builtin/packages/opencv/package.py
@@ -54,7 +54,8 @@ class Opencv(Package):
     depends_on('python')
     depends_on('py-numpy')
 
-    depends_on('eigen', when='+eigen')
+    depends_on('eigen', when='+eigen', type='build')
+    depends_on('cmake', type='build')
 
     # FIXME : GUI extensions missing
     # FIXME : CUDA extensions still missing
diff --git a/var/spack/repos/builtin/packages/openjpeg/package.py b/var/spack/repos/builtin/packages/openjpeg/package.py
index 1d00edb06d32ca5bef1f5e81ef3f4fe18b89cd9d..1bc5b04f6fca0761d79343da2e6ef543d1a6528a 100644
--- a/var/spack/repos/builtin/packages/openjpeg/package.py
+++ b/var/spack/repos/builtin/packages/openjpeg/package.py
@@ -43,7 +43,7 @@ class Openjpeg(Package):
     version('1.5.2', '545f98923430369a6b046ef3632ef95c')
     version('1.5.1', 'd774e4b5a0db5f0f171c4fc0aabfa14e')
 
-    depends_on('cmake')
+    depends_on('cmake', type='build')
 
     def install(self, spec, prefix):
         cmake('.', *std_cmake_args)
diff --git a/var/spack/repos/builtin/packages/openspeedshop/package.py b/var/spack/repos/builtin/packages/openspeedshop/package.py
index c501ea063c3c2d118fd9bf04e16d8b19a8713d10..4e2694a53c6114d8cc31af8f29d8a17ecc958963 100644
--- a/var/spack/repos/builtin/packages/openspeedshop/package.py
+++ b/var/spack/repos/builtin/packages/openspeedshop/package.py
@@ -80,7 +80,7 @@ class Openspeedshop(Package):
     variant('mpich2', default=False, description="Build mpi experiment collector for mpich2 MPI when this variant is enabled.")
     variant('mpich', default=False, description="Build mpi experiment collector for mpich MPI when this variant is enabled.")
 
-    depends_on("cmake@3.0.2")
+    depends_on("cmake@3.0.2", type='build')
     # Dependencies for openspeedshop that are common to all the variants of the OpenSpeedShop build
     depends_on("bison")
     depends_on("flex")
diff --git a/var/spack/repos/builtin/packages/p4est/package.py b/var/spack/repos/builtin/packages/p4est/package.py
index d0db4f7f2071fe5607bd595de02661e9e9b862b8..4bbf0c1311007ffa36b35a35a0d5381249568448 100644
--- a/var/spack/repos/builtin/packages/p4est/package.py
+++ b/var/spack/repos/builtin/packages/p4est/package.py
@@ -34,9 +34,9 @@ class P4est(Package):
     variant('tests', default=True, description='Run small tests')
 
     # build dependencies
-    depends_on('automake')
-    depends_on('autoconf')
-    depends_on('libtool@2.4.2:')
+    depends_on('automake', type='build')
+    depends_on('autoconf', type='build')
+    depends_on('libtool@2.4.2:', type='build')
 
     # other dependencies
     depends_on('lua') # Needed for the submodule sc
diff --git a/var/spack/repos/builtin/packages/paradiseo/package.py b/var/spack/repos/builtin/packages/paradiseo/package.py
index d6324b63e6c28cecaae309447f0163edbd073106..97d36d94a49c1154f77e64d201fbb2ee528cc6f9 100644
--- a/var/spack/repos/builtin/packages/paradiseo/package.py
+++ b/var/spack/repos/builtin/packages/paradiseo/package.py
@@ -48,13 +48,13 @@ class Paradiseo(Package):
     variant('gnuplot',  default=False, description='Enable GnuPlot support')
     
     # Required dependencies
-    depends_on ("cmake")
+    depends_on ("cmake", type='build')
 
     # Optional dependencies
     depends_on ("mpi", when="+mpi")
-    depends_on ("doxygen", when='+doc')
+    depends_on ("doxygen", when='+doc', type='build')
     depends_on ("gnuplot", when='+gnuplot')
-    depends_on ("eigen", when='+edo')
+    depends_on ("eigen", when='+edo', type='build')
     depends_on ("boost~mpi", when='+edo~mpi')
     depends_on ("boost+mpi", when='+edo+mpi')
 
diff --git a/var/spack/repos/builtin/packages/parallel-netcdf/package.py b/var/spack/repos/builtin/packages/parallel-netcdf/package.py
index 59c44c8a4a2d7d2d1a7e196ebe85d3fdc4d493d1..deee46df8ff50bf2e3fefe07395c1bcb69fc6baf 100644
--- a/var/spack/repos/builtin/packages/parallel-netcdf/package.py
+++ b/var/spack/repos/builtin/packages/parallel-netcdf/package.py
@@ -39,7 +39,7 @@ class ParallelNetcdf(Package):
     variant('fortran', default=True, description='Build the Fortran Interface')
     variant('fpic', default=True, description='Produce position-independent code (for use with shared libraries)')
 
-    depends_on("m4")
+    depends_on("m4", type='build')
     depends_on("mpi")
 
     # See: https://trac.mcs.anl.gov/projects/parallel-netcdf/browser/trunk/INSTALL
diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py
index 711cbc98c9c7665a1af84fecab11b659d34e522b..75f5272006eb6adaa27b715f203374b2af20c2e6 100644
--- a/var/spack/repos/builtin/packages/paraview/package.py
+++ b/var/spack/repos/builtin/packages/paraview/package.py
@@ -43,12 +43,13 @@ class Paraview(Package):
     variant('opengl2', default=False, description='Enable OpenGL2 backend')
 
     depends_on('python@2:2.7', when='+python')
-    depends_on('py-numpy', when='+python')
-    depends_on('py-matplotlib', when='+python')
+    depends_on('py-numpy', when='+python', type='run')
+    depends_on('py-matplotlib', when='+python', type='run')
     depends_on('tcl', when='+tcl')
     depends_on('mpi', when='+mpi')
     depends_on('qt@:4', when='+qt')
 
+    depends_on('cmake', type='build')
     depends_on('bzip2')
     depends_on('freetype')
     #depends_on('hdf5+mpi', when='+mpi')
diff --git a/var/spack/repos/builtin/packages/parmetis/package.py b/var/spack/repos/builtin/packages/parmetis/package.py
index 9b36f273e4c2a8f243e159c37160281abc3adef2..b2ceadc1283ccab2de2261248896a06b704c3596 100644
--- a/var/spack/repos/builtin/packages/parmetis/package.py
+++ b/var/spack/repos/builtin/packages/parmetis/package.py
@@ -42,7 +42,7 @@ class Parmetis(Package):
     variant('debug', default=False, description='Builds the library in debug mode')
     variant('gdb', default=False, description='Enables gdb support')
 
-    depends_on('cmake@2.8:')  # build dependency
+    depends_on('cmake@2.8:', type='build')  # build dependency
     depends_on('mpi')
     depends_on('metis@5:')
 
diff --git a/var/spack/repos/builtin/packages/pidx/package.py b/var/spack/repos/builtin/packages/pidx/package.py
index d38dcd7b963a46478eec77a5894638e616bf5ae7..e7b18ce7a84d565aca600fb7af3f3e3712a389b9 100644
--- a/var/spack/repos/builtin/packages/pidx/package.py
+++ b/var/spack/repos/builtin/packages/pidx/package.py
@@ -36,6 +36,7 @@ class Pidx(Package):
     version('1.0', git='https://github.com/sci-visus/PIDX.git',
             commit='6afa1cf71d1c41263296dc049c8fabaf73c296da')
 
+    depends_on('cmake', type='build')
     depends_on("mpi")
 
     def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/psi4/package.py b/var/spack/repos/builtin/packages/psi4/package.py
index fc77ba741237a9e00bfda4cffa313fdf8fd5ee60..192dd86e0ef58299820cf2ca1abf5fefd50bd4e3 100644
--- a/var/spack/repos/builtin/packages/psi4/package.py
+++ b/var/spack/repos/builtin/packages/psi4/package.py
@@ -41,8 +41,8 @@ class Psi4(Package):
     depends_on('lapack')
     depends_on('boost+chrono+filesystem+python+regex+serialization+system+timer+thread')
     depends_on('python')
-    depends_on('cmake')
-    depends_on('py-numpy')
+    depends_on('cmake', type='build')
+    depends_on('py-numpy', type=nolink)
 
     # Optional dependencies
     # TODO: add packages for these
diff --git a/var/spack/repos/builtin/packages/py-astroid/package.py b/var/spack/repos/builtin/packages/py-astroid/package.py
index 8ba6696b0c3f65ef3d4a351e6019445a356e161d..e1ea71fb671754cacc5ca9d84e6ac73f132095cb 100644
--- a/var/spack/repos/builtin/packages/py-astroid/package.py
+++ b/var/spack/repos/builtin/packages/py-astroid/package.py
@@ -22,7 +22,7 @@
 # License along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 ##############################################################################
-from spack import depends_on, extends, version
+from spack import depends_on, extends, version, nolink
 from spack import Package
 
 
@@ -37,9 +37,9 @@ class PyAstroid(Package):
     version('1.4.1', 'ed70bfed5e4b25be4292e7fe72da2c02')
 
     extends('python')
-    depends_on('py-logilab-common')
-    depends_on('py-setuptools')
-    depends_on('py-six')
+    depends_on('py-logilab-common', type=nolink)
+    depends_on('py-setuptools', type='build')
+    depends_on('py-six', type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-astropy/package.py b/var/spack/repos/builtin/packages/py-astropy/package.py
index a9962777dc037489966ccc6c5b2c7da98a1fb03a..25dce87e4942fee1606f431949b9176406e3751f 100644
--- a/var/spack/repos/builtin/packages/py-astropy/package.py
+++ b/var/spack/repos/builtin/packages/py-astropy/package.py
@@ -38,18 +38,18 @@ class PyAstropy(Package):
 
     # Required dependencies
     extends('python')
-    depends_on('py-numpy')
+    depends_on('py-numpy', type=nolink)
 
     # Optional dependencies
-    depends_on('py-h5py')
-    depends_on('py-beautifulsoup4')
-    depends_on('py-pyyaml')
-    depends_on('py-scipy')
+    depends_on('py-h5py', type=nolink)
+    depends_on('py-beautifulsoup4', type=nolink)
+    depends_on('py-pyyaml', type=nolink)
+    depends_on('py-scipy', type=nolink)
     depends_on('libxml2')
-    depends_on('py-matplotlib')
-    depends_on('py-pytz')
-    depends_on('py-scikit-image')
-    depends_on('py-pandas')
+    depends_on('py-matplotlib', type=nolink)
+    depends_on('py-pytz', type=nolink)
+    depends_on('py-scikit-image', type=nolink)
+    depends_on('py-pandas', type=nolink)
 
     # System dependencies
     depends_on('cfitsio')
diff --git a/var/spack/repos/builtin/packages/py-autopep8/package.py b/var/spack/repos/builtin/packages/py-autopep8/package.py
index f2fd3cd683c15eb00107e67bbf2ca764b09ae044..507664949b81eda054987866ee6cf443eb0c20d9 100644
--- a/var/spack/repos/builtin/packages/py-autopep8/package.py
+++ b/var/spack/repos/builtin/packages/py-autopep8/package.py
@@ -8,8 +8,8 @@ class PyAutopep8(Package):
     version('1.2.2', 'def3d023fc9dfd1b7113602e965ad8e1')
 
     extends('python')
-    depends_on('py-setuptools')
-    depends_on('py-pep8')
+    depends_on('py-setuptools', type='build')
+    depends_on('py-pep8', type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-basemap/package.py b/var/spack/repos/builtin/packages/py-basemap/package.py
index 13f604bacd3d1ec11c0a4d307bc8ed52cd41d32d..9c7f6454df4dfcab2ca05003c24c5272d37a54f2 100644
--- a/var/spack/repos/builtin/packages/py-basemap/package.py
+++ b/var/spack/repos/builtin/packages/py-basemap/package.py
@@ -35,10 +35,10 @@ class PyBasemap(Package):
     version('1.0.7', '48c0557ced9e2c6e440b28b3caff2de8')
 
     extends('python')
-    depends_on('py-setuptools')
-    depends_on('py-numpy')
-    depends_on('py-matplotlib+gui')
-    depends_on('pil')
+    depends_on('py-setuptools', type='build')
+    depends_on('py-numpy', type=nolink)
+    depends_on('py-matplotlib+gui', type=nolink)
+    depends_on('pil', type=nolink)
     depends_on("geos")
 
     def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/py-biopython/package.py b/var/spack/repos/builtin/packages/py-biopython/package.py
index 26f42e060b6d8850a9419c5deebe2edcda2ef3f9..bcc889756efc8833155ae98b3b2bb7119a495d55 100644
--- a/var/spack/repos/builtin/packages/py-biopython/package.py
+++ b/var/spack/repos/builtin/packages/py-biopython/package.py
@@ -32,8 +32,8 @@ class PyBiopython(Package):
     version('1.65', '143e7861ade85c0a8b5e2bbdd1da1f67')
 
     extends('python')
-    depends_on('py-mx')
-    depends_on('py-numpy')
+    depends_on('py-mx', type=nolink)
+    depends_on('py-numpy', type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-blessings/package.py b/var/spack/repos/builtin/packages/py-blessings/package.py
index 05a1f5bcbbeb93b061896b8f05341446d91b5f78..8d7a2343d114ed5c8c51579582287be403a2fe3c 100644
--- a/var/spack/repos/builtin/packages/py-blessings/package.py
+++ b/var/spack/repos/builtin/packages/py-blessings/package.py
@@ -31,7 +31,7 @@ class PyBlessings(Package):
 
     version('1.6', '4f552a8ebcd4982693c92571beb99394')
 
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     extends("python")
 
diff --git a/var/spack/repos/builtin/packages/py-bottleneck/package.py b/var/spack/repos/builtin/packages/py-bottleneck/package.py
index 1a186b219cbeb4afbddd1139894a953600d64b90..2483fab85f1bc5345f518011240fb58fa8f83af6 100644
--- a/var/spack/repos/builtin/packages/py-bottleneck/package.py
+++ b/var/spack/repos/builtin/packages/py-bottleneck/package.py
@@ -32,7 +32,7 @@ class PyBottleneck(Package):
     version('1.0.0', '380fa6f275bd24f27e7cf0e0d752f5d2')
 
     extends('python')
-    depends_on('py-numpy')
+    depends_on('py-numpy', type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-cffi/package.py b/var/spack/repos/builtin/packages/py-cffi/package.py
index 58d0a81990e738d74f73ba99e4ea6360f1d54c50..e54d50fa5060874e2d66f13633aff9993323bcc7 100644
--- a/var/spack/repos/builtin/packages/py-cffi/package.py
+++ b/var/spack/repos/builtin/packages/py-cffi/package.py
@@ -33,8 +33,8 @@ class PyCffi(Package):
     version('1.1.2', 'ca6e6c45b45caa87aee9adc7c796eaea')
 
     extends('python')
-    depends_on('py-setuptools')
-    depends_on('py-pycparser')
+    depends_on('py-setuptools', type='build')
+    depends_on('py-pycparser', type=nolink)
     depends_on('libffi')
 
     def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/py-coverage/package.py b/var/spack/repos/builtin/packages/py-coverage/package.py
index 92a5bd008840d35254467df8d32e4f560aca6ee0..b7eaf58cd6735f09aef5dd72cc404f53aec2a2e2 100644
--- a/var/spack/repos/builtin/packages/py-coverage/package.py
+++ b/var/spack/repos/builtin/packages/py-coverage/package.py
@@ -32,7 +32,7 @@ class PyCoverage(Package):
 
     version('4.0a6', '1bb4058062646148965bef0796b61efc')
 
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     extends('python')
 
diff --git a/var/spack/repos/builtin/packages/py-csvkit/package.py b/var/spack/repos/builtin/packages/py-csvkit/package.py
index 7fe2f953f706abcbd37886e447da28fd88492792..2deaa2f74e84d04935c3ccde6c35c24e96564bb4 100644
--- a/var/spack/repos/builtin/packages/py-csvkit/package.py
+++ b/var/spack/repos/builtin/packages/py-csvkit/package.py
@@ -35,12 +35,12 @@ class PyCsvkit(Package):
 
     extends('python')
 
-    depends_on('py-dateutil')
-    depends_on('py-dbf')
-    depends_on('py-xlrd')
-    depends_on('py-SQLAlchemy')
-    depends_on('py-six')
-    depends_on('py-openpyxl')
+    depends_on('py-dateutil', type=nolink)
+    depends_on('py-dbf', type=nolink)
+    depends_on('py-xlrd', type=nolink)
+    depends_on('py-SQLAlchemy', type=nolink)
+    depends_on('py-six', type=nolink)
+    depends_on('py-openpyxl', type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-dask/package.py b/var/spack/repos/builtin/packages/py-dask/package.py
index 831f86e81cff91358c6bffa59c2443cbcbd57e12..b7dbab3d979e217b824b197e6be22a2fcda02ba7 100644
--- a/var/spack/repos/builtin/packages/py-dask/package.py
+++ b/var/spack/repos/builtin/packages/py-dask/package.py
@@ -33,7 +33,7 @@ class PyDask(Package):
 
     extends('python')
 
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-dateutil/package.py b/var/spack/repos/builtin/packages/py-dateutil/package.py
index eb8eb09e75da67788fceb34239d7f5fc7959e8c6..dfd1e143d905629c500bc872cf12ca6fc37714ba 100644
--- a/var/spack/repos/builtin/packages/py-dateutil/package.py
+++ b/var/spack/repos/builtin/packages/py-dateutil/package.py
@@ -34,8 +34,8 @@ class PyDateutil(Package):
     version('2.5.2', 'eafe168e8f404bf384514f5116eedbb6')
 
     extends('python')
-    depends_on('py-setuptools')
-    depends_on('py-six')
+    depends_on('py-setuptools', type='build')
+    depends_on('py-six', type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-decorator/package.py b/var/spack/repos/builtin/packages/py-decorator/package.py
index 90a95cd0cb99513366e8d86ec30dcc807cd91572..bd78f262f43906ab1fac7f0dff97baa421009fc6 100644
--- a/var/spack/repos/builtin/packages/py-decorator/package.py
+++ b/var/spack/repos/builtin/packages/py-decorator/package.py
@@ -33,7 +33,7 @@ class PyDecorator(Package):
 
     extends('python')
 
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-emcee/package.py b/var/spack/repos/builtin/packages/py-emcee/package.py
index d57ef4bd76ca0f051ae8c201c3956be47ff2be9f..397f737cb1db6d52af584d160b3a26ebebf727a2 100644
--- a/var/spack/repos/builtin/packages/py-emcee/package.py
+++ b/var/spack/repos/builtin/packages/py-emcee/package.py
@@ -35,7 +35,7 @@ class PyEmcee(Package):
     version('2.1.0', 'c6b6fad05c824d40671d4a4fc58dfff7')
 
     extends('python')
-    depends_on('py-numpy')
+    depends_on('py-numpy', type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix={0}'.format(prefix))
diff --git a/var/spack/repos/builtin/packages/py-flake8/package.py b/var/spack/repos/builtin/packages/py-flake8/package.py
index b261467d84da9239a2e6247528ed06aa4cd34ee6..2fabe03d6637251eeaaad286d0331556e301fa7e 100644
--- a/var/spack/repos/builtin/packages/py-flake8/package.py
+++ b/var/spack/repos/builtin/packages/py-flake8/package.py
@@ -34,7 +34,7 @@ class PyFlake8(Package):
     version('2.5.4', 'a4585b3569b95c3f66acb8294a7f06ef')
 
     extends('python')
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-funcsigs/package.py b/var/spack/repos/builtin/packages/py-funcsigs/package.py
index 9d987b284e73ccde1d574124bc2e265ee8e7bb3d..11ba639b85d928923200a94d21975f6ffac85757 100644
--- a/var/spack/repos/builtin/packages/py-funcsigs/package.py
+++ b/var/spack/repos/builtin/packages/py-funcsigs/package.py
@@ -34,7 +34,7 @@ class PyFuncsigs(Package):
 
     extends('python')
 
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-genshi/package.py b/var/spack/repos/builtin/packages/py-genshi/package.py
index cba479a88f8ebcae6b386aaa67ddbf6001cafcb1..ea8d26c7966fc6ac244ad2d57ede964e3678dd9e 100644
--- a/var/spack/repos/builtin/packages/py-genshi/package.py
+++ b/var/spack/repos/builtin/packages/py-genshi/package.py
@@ -36,7 +36,7 @@ class PyGenshi(Package):
     version('0.6', '604e8b23b4697655d36a69c2d8ef7187')
 
     extends("python")
-    depends_on("py-setuptools")
+    depends_on("py-setuptools", type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-gnuplot/package.py b/var/spack/repos/builtin/packages/py-gnuplot/package.py
index 3381c4a5ac3f0d65d52ba315248d279720c5b7b2..b08b03d1f1ca172e1502add642af30e4af13cea9 100644
--- a/var/spack/repos/builtin/packages/py-gnuplot/package.py
+++ b/var/spack/repos/builtin/packages/py-gnuplot/package.py
@@ -32,7 +32,7 @@ class PyGnuplot(Package):
     version('1.8', 'abd6f571e7aec68ae7db90a5217cd5b1')
 
     extends('python')
-    depends_on('py-numpy')
+    depends_on('py-numpy', type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-h5py/package.py b/var/spack/repos/builtin/packages/py-h5py/package.py
index 67461babe71fb49f3c18e788783ff9f9dc213f8f..c1950a91ac071ceba5846220c42516dbbfb8ad38 100644
--- a/var/spack/repos/builtin/packages/py-h5py/package.py
+++ b/var/spack/repos/builtin/packages/py-h5py/package.py
@@ -41,17 +41,17 @@ class PyH5py(Package):
     extends('python')
 
     # Build dependencies
-    depends_on('py-cython@0.19:')
-    depends_on('pkg-config')
+    depends_on('py-cython@0.19:', type='build')
+    depends_on('pkg-config', type='build')
     depends_on('hdf5@1.8.4:')
     depends_on('hdf5+mpi', when='+mpi')
     depends_on('mpi', when='+mpi')
 
     # Build and runtime dependencies
-    depends_on('py-numpy@1.6.1:')
+    depends_on('py-numpy@1.6.1:', type=nolink)
 
     # Runtime dependencies
-    depends_on('py-six')
+    depends_on('py-six', type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'configure',
diff --git a/var/spack/repos/builtin/packages/py-iminuit/package.py b/var/spack/repos/builtin/packages/py-iminuit/package.py
index 47751a702d14d8c620f8bc128a64ac48301aa003..d7446c06d47a0f5f0f94c3fb7cba1a3188cdb644 100644
--- a/var/spack/repos/builtin/packages/py-iminuit/package.py
+++ b/var/spack/repos/builtin/packages/py-iminuit/package.py
@@ -35,12 +35,12 @@ class PyIminuit(Package):
 
     # Required dependencies
     extends('python')
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     # Optional dependencies
-    depends_on('py-numpy')
-    depends_on('py-matplotlib')
-    depends_on('py-cython')
+    depends_on('py-numpy', type=nolink)
+    depends_on('py-matplotlib', type=nolink)
+    depends_on('py-cython', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix={0}'.format(prefix))
diff --git a/var/spack/repos/builtin/packages/py-ipython/package.py b/var/spack/repos/builtin/packages/py-ipython/package.py
index 7a94f90b3868100d945dbf87c18fcb17d6998a7c..b583609953cedb1b1408a79fc3e097fde2270162 100644
--- a/var/spack/repos/builtin/packages/py-ipython/package.py
+++ b/var/spack/repos/builtin/packages/py-ipython/package.py
@@ -33,8 +33,8 @@ class PyIpython(Package):
     version('3.1.0', 'a749d90c16068687b0ec45a27e72ef8f')
 
     extends('python')
-    depends_on('py-pygments')
-    depends_on('py-setuptools')
+    depends_on('py-pygments', type=nolink)
+    depends_on('py-setuptools', type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-jinja2/package.py b/var/spack/repos/builtin/packages/py-jinja2/package.py
index 48312d9baf69885c6ae7e89fd528ae6f1a44bf7b..57f26e3b904f1800d24c17ac693d5d6d65157f7b 100644
--- a/var/spack/repos/builtin/packages/py-jinja2/package.py
+++ b/var/spack/repos/builtin/packages/py-jinja2/package.py
@@ -22,7 +22,7 @@
 # License along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 ##############################################################################
-from spack import depends_on, extends, version
+from spack import depends_on, extends, version, nolink
 from spack import Package
 
 
@@ -43,8 +43,8 @@ class PyJinja2(Package):
     version('2.7', 'ec70433f325051dcedacbb2465028a35')
 
     extends("python")
-    depends_on("py-setuptools")
-    depends_on("py-markupsafe")
+    depends_on("py-setuptools", type='build')
+    depends_on("py-markupsafe", type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-lockfile/package.py b/var/spack/repos/builtin/packages/py-lockfile/package.py
index 998b41abc65ea17229fa29436ac09bc5c6022f98..38cc81b89531d0a0789cd01db59c74f8e8b37fe7 100644
--- a/var/spack/repos/builtin/packages/py-lockfile/package.py
+++ b/var/spack/repos/builtin/packages/py-lockfile/package.py
@@ -41,7 +41,7 @@ class PyLockfile(Package):
     version('0.10.2', '1aa6175a6d57f082cd12e7ac6102ab15')
 
     extends("python")
-    depends_on("py-setuptools")
+    depends_on("py-setuptools", type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-logilab-common/package.py b/var/spack/repos/builtin/packages/py-logilab-common/package.py
index 8675c48e9a832ca110585942843b4056ea75d181..6dab4a40e4eb90f88e7cce2a639b6b7bc94c0284 100644
--- a/var/spack/repos/builtin/packages/py-logilab-common/package.py
+++ b/var/spack/repos/builtin/packages/py-logilab-common/package.py
@@ -22,7 +22,7 @@
 # License along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 ##############################################################################
-from spack import depends_on, extends, version
+from spack import depends_on, extends, version, nolink
 from spack import Package
 
 
@@ -34,8 +34,8 @@ class PyLogilabCommon(Package):
     version('1.2.0', 'f7b51351b7bfe052746fa04c03253c0b')
 
     extends("python")
-    depends_on("py-setuptools")
-    depends_on("py-six")
+    depends_on("py-setuptools", type='build')
+    depends_on("py-six", type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-mako/package.py b/var/spack/repos/builtin/packages/py-mako/package.py
index a03ef4defb9b8106f605b22686529168caa65115..56741ec11f2363152c1c6e62976878d96cd9e708 100644
--- a/var/spack/repos/builtin/packages/py-mako/package.py
+++ b/var/spack/repos/builtin/packages/py-mako/package.py
@@ -33,7 +33,7 @@ class PyMako(Package):
 
     version('1.0.1', '9f0aafd177b039ef67b90ea350497a54')
 
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
     extends('python')
 
     def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/py-markupsafe/package.py b/var/spack/repos/builtin/packages/py-markupsafe/package.py
index 58c9f700665e378845cc6540abdd8f5d1712dde0..ee396de7be60fe8022cd33b7a9c0e3100198af78 100644
--- a/var/spack/repos/builtin/packages/py-markupsafe/package.py
+++ b/var/spack/repos/builtin/packages/py-markupsafe/package.py
@@ -44,7 +44,7 @@ class PyMarkupsafe(Package):
     version('0.19', '64b05361adb92c11839fc470e308c593')
 
     extends("python")
-    depends_on("py-setuptools")
+    depends_on("py-setuptools", type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-matplotlib/package.py b/var/spack/repos/builtin/packages/py-matplotlib/package.py
index 14f9716ae6bd3e4bfd56b135a4effd0e7bf8d0bd..d4f96706b3be7fe4af99f3ec5413ecd2efe463e2 100644
--- a/var/spack/repos/builtin/packages/py-matplotlib/package.py
+++ b/var/spack/repos/builtin/packages/py-matplotlib/package.py
@@ -38,19 +38,19 @@ class PyMatplotlib(Package):
 
     extends('python', ignore=r'bin/nosetests.*$|bin/pbr$')
 
-    depends_on('py-pyside', when='+gui')
-    depends_on('py-ipython', when='+ipython')
-    depends_on('py-pyparsing')
-    depends_on('py-six')
-    depends_on('py-dateutil')
-    depends_on('py-pytz')
-    depends_on('py-nose')
-    depends_on('py-numpy')
-    depends_on('py-mock')
-    depends_on('py-pbr')
-    depends_on('py-funcsigs')
+    depends_on('py-pyside', when='+gui', type=nolink)
+    depends_on('py-ipython', when='+ipython', type=nolink)
+    depends_on('py-pyparsing', type=nolink)
+    depends_on('py-six', type=nolink)
+    depends_on('py-dateutil', type=nolink)
+    depends_on('py-pytz', type=nolink)
+    depends_on('py-nose', type=nolink)
+    depends_on('py-numpy', type=nolink)
+    depends_on('py-mock', type=nolink)
+    depends_on('py-pbr', type=nolink)
+    depends_on('py-funcsigs', type=nolink)
 
-    depends_on('pkg-config')
+    depends_on('pkg-config', type='build')
     depends_on('freetype')
     depends_on('qt', when='+gui')
     depends_on('bzip2')
diff --git a/var/spack/repos/builtin/packages/py-mistune/package.py b/var/spack/repos/builtin/packages/py-mistune/package.py
index 9bcbb5a9270d15fbc22f619d883ce16aafc1f6f4..399c10005ea5db86b6e2b2fbe06da18c00f8cc2c 100644
--- a/var/spack/repos/builtin/packages/py-mistune/package.py
+++ b/var/spack/repos/builtin/packages/py-mistune/package.py
@@ -40,7 +40,7 @@ class PyMistune(Package):
     version('0.5', '997736554f1f95eea78c66ae339b5722')
 
     extends('python')
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-mock/package.py b/var/spack/repos/builtin/packages/py-mock/package.py
index 0587131b886002e55e538bc1d706bbc836bb111f..f4c178de670718682610cb8df8febe4b92da27e8 100644
--- a/var/spack/repos/builtin/packages/py-mock/package.py
+++ b/var/spack/repos/builtin/packages/py-mock/package.py
@@ -35,8 +35,8 @@ class PyMock(Package):
     version('1.3.0', '73ee8a4afb3ff4da1b4afa287f39fdeb')
 
     extends('python')
-    depends_on('py-pbr')
-    depends_on('py-setuptools@17.1:')
+    depends_on('py-pbr', type=nolink)
+    depends_on('py-setuptools@17.1:', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-mpi4py/package.py b/var/spack/repos/builtin/packages/py-mpi4py/package.py
index 2764b8b3c6e626962e5342a367cf6e42d5f90536..a749e16779e47da85e7b396777419000b9f59d8b 100644
--- a/var/spack/repos/builtin/packages/py-mpi4py/package.py
+++ b/var/spack/repos/builtin/packages/py-mpi4py/package.py
@@ -33,7 +33,7 @@ class PyMpi4py(Package):
     version('1.3.1', 'dbe9d22bdc8ed965c23a7ceb6f32fc3c')
 
     extends('python')
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
     depends_on('mpi')
 
     def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/py-mysqldb1/package.py b/var/spack/repos/builtin/packages/py-mysqldb1/package.py
index 9918ba3e64f8954b6c1f1aff458f4c31acd3d56a..46b44f34dd5e598819178b2811881411e44cd6a9 100644
--- a/var/spack/repos/builtin/packages/py-mysqldb1/package.py
+++ b/var/spack/repos/builtin/packages/py-mysqldb1/package.py
@@ -32,7 +32,7 @@ class PyMysqldb1(Package):
     version('1.2.5', '332c8f4955b6bc0c79ea15170bf7321b')
 
     extends('python')
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-nestle/package.py b/var/spack/repos/builtin/packages/py-nestle/package.py
index 16506e3eca0190ebfeb5935bb4300c1ed6976b4c..81f9fe4d0987e7193000a0e5300f70b1bb58daf0 100644
--- a/var/spack/repos/builtin/packages/py-nestle/package.py
+++ b/var/spack/repos/builtin/packages/py-nestle/package.py
@@ -35,10 +35,10 @@ class PyNestle(Package):
 
     # Required dependencies
     extends('python')
-    depends_on('py-numpy')
+    depends_on('py-numpy', type=nolink)
 
     # Optional dependencies
-    depends_on('py-scipy')
+    depends_on('py-scipy', type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix={0}'.format(prefix))
diff --git a/var/spack/repos/builtin/packages/py-netcdf/package.py b/var/spack/repos/builtin/packages/py-netcdf/package.py
index e3f857a0ceac8f423ebb31a19839d4232594541b..9a354cb1c167bbff2723dcb386cb14c2c1d56335 100644
--- a/var/spack/repos/builtin/packages/py-netcdf/package.py
+++ b/var/spack/repos/builtin/packages/py-netcdf/package.py
@@ -32,8 +32,8 @@ class PyNetcdf(Package):
     version('1.2.3.1', '4fc4320d4f2a77b894ebf8da1c9895af')
 
     extends('python')
-    depends_on('py-numpy')
-    depends_on('py-cython')
+    depends_on('py-numpy', type=nolink)
+    depends_on('py-cython', type=nolink)
     depends_on('netcdf')
 
     def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/py-networkx/package.py b/var/spack/repos/builtin/packages/py-networkx/package.py
index 6bdb24e36e5a884067f24cdc409078899f027d20..d5457176284c2c29e1b7e2c41cceb06f44b8604f 100644
--- a/var/spack/repos/builtin/packages/py-networkx/package.py
+++ b/var/spack/repos/builtin/packages/py-networkx/package.py
@@ -33,7 +33,7 @@ class PyNetworkx(Package):
 
     extends('python')
 
-    depends_on('py-decorator')
+    depends_on('py-decorator', type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-nose/package.py b/var/spack/repos/builtin/packages/py-nose/package.py
index abb2d500a2bd475e29f9656fb9dd3b6f28680602..d15a1784d1e6a47a336cdc3d103c10f27f709cd8 100644
--- a/var/spack/repos/builtin/packages/py-nose/package.py
+++ b/var/spack/repos/builtin/packages/py-nose/package.py
@@ -37,7 +37,7 @@ class PyNose(Package):
     version('1.3.7', '4d3ad0ff07b61373d2cefc89c5d0b20b')
 
     extends('python', ignore=r'bin/nosetests.*$')
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-numexpr/package.py b/var/spack/repos/builtin/packages/py-numexpr/package.py
index d8bacd179ff11c46c3b751c48d8ff759b2689f93..fd8d7dc0c6de86667c20535b9a27679ea1362398 100644
--- a/var/spack/repos/builtin/packages/py-numexpr/package.py
+++ b/var/spack/repos/builtin/packages/py-numexpr/package.py
@@ -34,7 +34,7 @@ class PyNumexpr(Package):
     version('2.5', '84f66cced45ba3e30dcf77a937763aaa')
 
     extends('python')
-    depends_on('py-numpy')
+    depends_on('py-numpy', type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-numpy/package.py b/var/spack/repos/builtin/packages/py-numpy/package.py
index e9672b7bb0b75f1032ab5fae9d9eff7b216628ba..273f5bfd8debd964a38cad27a69cd75113515641 100644
--- a/var/spack/repos/builtin/packages/py-numpy/package.py
+++ b/var/spack/repos/builtin/packages/py-numpy/package.py
@@ -43,7 +43,7 @@ class PyNumpy(Package):
     variant('lapack', default=True)
 
     extends('python')
-    depends_on('py-nose')
+    depends_on('py-nose', type='build')
     depends_on('blas',   when='+blas')
     depends_on('lapack', when='+lapack')
 
diff --git a/var/spack/repos/builtin/packages/py-openpyxl/package.py b/var/spack/repos/builtin/packages/py-openpyxl/package.py
index 30cb52348f5057ee7bfc3c12c54935f8714b8154..624da58ff30b533571e67f465b2c740bc4fcf63f 100644
--- a/var/spack/repos/builtin/packages/py-openpyxl/package.py
+++ b/var/spack/repos/builtin/packages/py-openpyxl/package.py
@@ -34,8 +34,8 @@ class PyOpenpyxl(Package):
 
     extends('python')
 
-    depends_on('py-jdcal')
-    depends_on('py-setuptools')
+    depends_on('py-jdcal', type=nolink)
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-pandas/package.py b/var/spack/repos/builtin/packages/py-pandas/package.py
index 7f54fc5d76131f91110b5b1e3870c0294b9d72c9..8bd4227faf6cdb9d16cd2a3bd92884393d6532a3 100644
--- a/var/spack/repos/builtin/packages/py-pandas/package.py
+++ b/var/spack/repos/builtin/packages/py-pandas/package.py
@@ -35,12 +35,12 @@ class PyPandas(Package):
     version('0.18.0', 'f143762cd7a59815e348adf4308d2cf6')
 
     extends('python')
-    depends_on('py-dateutil')
-    depends_on('py-numpy')
-    depends_on('py-setuptools')
-    depends_on('py-pytz')
-    depends_on('py-numexpr')
-    depends_on('py-bottleneck')
+    depends_on('py-dateutil', type=nolink)
+    depends_on('py-numpy', type=nolink)
+    depends_on('py-setuptools', type='build')
+    depends_on('py-pytz', type=nolink)
+    depends_on('py-numexpr', type=nolink)
+    depends_on('py-bottleneck', type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-pbr/package.py b/var/spack/repos/builtin/packages/py-pbr/package.py
index 336ea37144070ac5343f5ef385265fd19ceaf75c..8502b0b3642bae7b3c6fcc6a243d5dca1f15f857 100644
--- a/var/spack/repos/builtin/packages/py-pbr/package.py
+++ b/var/spack/repos/builtin/packages/py-pbr/package.py
@@ -34,7 +34,7 @@ class PyPbr(Package):
 
     extends('python')
 
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-pep8/package.py b/var/spack/repos/builtin/packages/py-pep8/package.py
index 987783b39275871ff2d2f3ef17aa07aa619fb080..ffcc2b318c735622d973f4c135a5f741875c6e8d 100644
--- a/var/spack/repos/builtin/packages/py-pep8/package.py
+++ b/var/spack/repos/builtin/packages/py-pep8/package.py
@@ -8,7 +8,7 @@ class PyPep8(Package):
     version('1.7.0', '31070a3a6391928893cbf5fa523eb8d9')
 
     extends('python')
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-periodictable/package.py b/var/spack/repos/builtin/packages/py-periodictable/package.py
index 7d8a6359792e25d54e6ac18736f987c276eb78ac..608f4e16c16d056b315fd1d3595e7e1c9d94e9ae 100644
--- a/var/spack/repos/builtin/packages/py-periodictable/package.py
+++ b/var/spack/repos/builtin/packages/py-periodictable/package.py
@@ -33,8 +33,8 @@ class PyPeriodictable(Package):
 
     version('1.4.1', '7246b63cc0b6b1be6e86b6616f9e866e')
 
-    depends_on('py-numpy')
-    depends_on('py-pyparsing')
+    depends_on('py-numpy', type=nolink)
+    depends_on('py-pyparsing', type=nolink)
     extends('python')
 
     def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/py-phonopy/package.py b/var/spack/repos/builtin/packages/py-phonopy/package.py
index 68774c90c2b43896f4c34fb1c94736774221dd70..a3a4b7a9f7f7fc761f87525c4cf2762899d15fa1 100644
--- a/var/spack/repos/builtin/packages/py-phonopy/package.py
+++ b/var/spack/repos/builtin/packages/py-phonopy/package.py
@@ -33,10 +33,10 @@ class PyPhonopy(Package):
     version('1.10.0', '973ed1bcea46e21b9bf747aab9061ff6')
 
     extends('python')
-    depends_on('py-numpy')
-    depends_on('py-scipy')
-    depends_on('py-matplotlib')
-    depends_on('py-pyyaml')
+    depends_on('py-numpy', type=nolink)
+    depends_on('py-scipy', type=nolink)
+    depends_on('py-matplotlib', type=nolink)
+    depends_on('py-pyyaml', type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--home=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-pillow/package.py b/var/spack/repos/builtin/packages/py-pillow/package.py
index 25cf412b31631039eeb537f043d49dcff127bd30..13a09f63cfacc14e8c1efe545f4bff857d7a81cb 100644
--- a/var/spack/repos/builtin/packages/py-pillow/package.py
+++ b/var/spack/repos/builtin/packages/py-pillow/package.py
@@ -62,8 +62,8 @@ class PyPillow(Package):
 
     # Required dependencies
     extends('python')
-    depends_on('binutils')
-    depends_on('py-setuptools')
+    depends_on('binutils', type='build')
+    depends_on('py-setuptools', type='build')
 
     # Recommended dependencies
     depends_on('jpeg', when='+jpeg')
diff --git a/var/spack/repos/builtin/packages/py-prettytable/package.py b/var/spack/repos/builtin/packages/py-prettytable/package.py
index e3edc7b706fb67ee7c123c9cbe695b849fd390cd..cf814733d491dabfb45151ff98380fd01e062d87 100644
--- a/var/spack/repos/builtin/packages/py-prettytable/package.py
+++ b/var/spack/repos/builtin/packages/py-prettytable/package.py
@@ -38,7 +38,7 @@ class PyPrettytable(Package):
     version('0.7.2', 'a6b80afeef286ce66733d54a0296b13b')
 
     extends("python")
-    depends_on("py-setuptools")
+    depends_on("py-setuptools", type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-protobuf/package.py b/var/spack/repos/builtin/packages/py-protobuf/package.py
index da3a65c22eaf592a22a9599cac2e2d8674311005..dd2b5651de72441634a38f5a8a20b09ee123ca6a 100644
--- a/var/spack/repos/builtin/packages/py-protobuf/package.py
+++ b/var/spack/repos/builtin/packages/py-protobuf/package.py
@@ -44,7 +44,7 @@ class PyProtobuf(Package):
 
     extends('python')
 
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix={0}'.format(prefix))
diff --git a/var/spack/repos/builtin/packages/py-py2neo/package.py b/var/spack/repos/builtin/packages/py-py2neo/package.py
index 9c6e2192647352a834fd567263a1724041ad27e5..02f37d8b7840aecb2b2ba31353d6f27382d66c9e 100644
--- a/var/spack/repos/builtin/packages/py-py2neo/package.py
+++ b/var/spack/repos/builtin/packages/py-py2neo/package.py
@@ -38,7 +38,7 @@ class PyPy2neo(Package):
     version('2.0.5', '143b1f9c0aa22faf170c1b9f84c7343b')
     version('2.0.4', 'b3f7efd3344dc3f66db4eda11e5899f7')
 
-    depends_on("py-setuptools")
+    depends_on("py-setuptools", type='build')
     extends("python")
 
     def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/py-pycparser/package.py b/var/spack/repos/builtin/packages/py-pycparser/package.py
index c33769c526fe73cfbba3baab6d3a94de08225fcd..9afba500779cfa66eae840f7544c6974e850499a 100644
--- a/var/spack/repos/builtin/packages/py-pycparser/package.py
+++ b/var/spack/repos/builtin/packages/py-pycparser/package.py
@@ -33,7 +33,7 @@ class PyPycparser(Package):
 
     
     extends('python')
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-pygments/package.py b/var/spack/repos/builtin/packages/py-pygments/package.py
index fedf3d068dc2071b98b0455a6fdeb8fc95fd92b7..0ca15dd10dc329eed1d93ccd84ed3df909f8daa4 100644
--- a/var/spack/repos/builtin/packages/py-pygments/package.py
+++ b/var/spack/repos/builtin/packages/py-pygments/package.py
@@ -33,7 +33,7 @@ class PyPygments(Package):
     version('2.0.2', '238587a1370d62405edabd0794b3ec4a')
 
     extends('python')
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-pylint/package.py b/var/spack/repos/builtin/packages/py-pylint/package.py
index 66118e822825730673339cedbb42900d20078da6..7107b2987fdeb15c1c3a9336e6f3c49075f1e6bb 100644
--- a/var/spack/repos/builtin/packages/py-pylint/package.py
+++ b/var/spack/repos/builtin/packages/py-pylint/package.py
@@ -34,8 +34,8 @@ class PyPylint(Package):
     version('1.4.3', '5924c1c7ca5ca23647812f5971d0ea44')
 
     extends('python')
-    depends_on('py-nose')
-    depends_on('py-setuptools')
+    depends_on('py-nose', type='build')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-pyqt/package.py b/var/spack/repos/builtin/packages/py-pyqt/package.py
index b090e25682116867f299252cf9c414537475b025..05fb7aa22cc7243b00691f1a6be8bd5561a4e036 100644
--- a/var/spack/repos/builtin/packages/py-pyqt/package.py
+++ b/var/spack/repos/builtin/packages/py-pyqt/package.py
@@ -34,7 +34,7 @@ class PyPyqt(Package):
     version('4.11.3', '997c3e443165a89a559e0d96b061bf70')
 
     extends('python')
-    depends_on('py-sip')
+    depends_on('py-sip', type=nolink)
 
     # TODO: allow qt5 when conditional deps are supported.
     # TODO: Fix version matching so that @4 works like @:4
diff --git a/var/spack/repos/builtin/packages/py-pyside/package.py b/var/spack/repos/builtin/packages/py-pyside/package.py
index affee6c55a1082f72a35b5e171c53f84d9d50562..cd174ce6583f9ee7438d7e9715acccfb336a27f7 100644
--- a/var/spack/repos/builtin/packages/py-pyside/package.py
+++ b/var/spack/repos/builtin/packages/py-pyside/package.py
@@ -32,11 +32,10 @@ class PyPyside(Package):
 
     version('1.2.2', 'c45bc400c8a86d6b35f34c29e379e44d')
 
-    # TODO: make build dependency
-    # depends_on("cmake")
+    depends_on('cmake', type='build')
 
     extends('python')
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
     depends_on('qt@:4')
 
     def patch(self):
diff --git a/var/spack/repos/builtin/packages/py-pytables/package.py b/var/spack/repos/builtin/packages/py-pytables/package.py
index 47592fb3d1d8283c70da15cd6f9fd3c99a6567bc..58ed067b2189f0f4e92b10000fae04daf3e559f6 100644
--- a/var/spack/repos/builtin/packages/py-pytables/package.py
+++ b/var/spack/repos/builtin/packages/py-pytables/package.py
@@ -34,9 +34,9 @@ class PyPytables(Package):
 
     extends('python')
     depends_on('hdf5')
-    depends_on('py-numpy')
-    depends_on('py-numexpr')
-    depends_on('py-cython')
+    depends_on('py-numpy', type=nolink)
+    depends_on('py-numexpr', type=nolink)
+    depends_on('py-cython', type=nolink)
 
     def install(self, spec, prefix):
         env["HDF5_DIR"] = spec['hdf5'].prefix
diff --git a/var/spack/repos/builtin/packages/py-python-daemon/package.py b/var/spack/repos/builtin/packages/py-python-daemon/package.py
index ae6393986d67b71dca151b26e0ffd88f0b97ebb3..c2c7c4de4f8f02e410833a2f5210caaed2a67b87 100644
--- a/var/spack/repos/builtin/packages/py-python-daemon/package.py
+++ b/var/spack/repos/builtin/packages/py-python-daemon/package.py
@@ -42,8 +42,8 @@ class PyPythonDaemon(Package):
     version('2.0.5', '73e7f49f525c51fa4a995aea4d80de41')
 
     extends("python")
-    depends_on("py-setuptools")
-    depends_on("py-lockfile")
+    depends_on("py-setuptools", type='build')
+    depends_on("py-lockfile", type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-restview/package.py b/var/spack/repos/builtin/packages/py-restview/package.py
index 91b1db993ed9b5f2f4c37517fa3e02a1b09fa3cf..047214c58ecc2d5a5ef460f12fa91e907db03021 100644
--- a/var/spack/repos/builtin/packages/py-restview/package.py
+++ b/var/spack/repos/builtin/packages/py-restview/package.py
@@ -34,8 +34,8 @@ class PyRestview(Package):
     version('2.6.1', 'ac8b70e15b8f1732d1733d674813666b')
 
     extends('python')
-    depends_on('py-docutils')
-    depends_on('py-pygments')
+    depends_on('py-docutils', type=nolink)
+    depends_on('py-pygments', type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix={0}'.format(prefix))
diff --git a/var/spack/repos/builtin/packages/py-rpy2/package.py b/var/spack/repos/builtin/packages/py-rpy2/package.py
index 03fd2b4a06f64179611efb25d2074314b27cebea..8f4771f0eb5d3b73887b8207b41d1bf43fd62442 100644
--- a/var/spack/repos/builtin/packages/py-rpy2/package.py
+++ b/var/spack/repos/builtin/packages/py-rpy2/package.py
@@ -33,7 +33,7 @@ class PyRpy2(Package):
     version('2.5.6', 'a36e758b633ce6aec6a5f450bfee980f')
 
     extends('python')
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     depends_on('R')
 
diff --git a/var/spack/repos/builtin/packages/py-scikit-image/package.py b/var/spack/repos/builtin/packages/py-scikit-image/package.py
index 4c8fd0942a45c87b517a2c2101663c8f598ab485..26c286e4be02355e2f7e1b196f2158b9c49b5cc3 100644
--- a/var/spack/repos/builtin/packages/py-scikit-image/package.py
+++ b/var/spack/repos/builtin/packages/py-scikit-image/package.py
@@ -36,12 +36,12 @@ class PyScikitImage(Package):
 
     extends('python', ignore=r'bin/.*\.py$')
 
-    depends_on('py-dask')
-    depends_on('pil')
-    depends_on('py-networkx')
-    depends_on('py-six')
-    depends_on('py-scipy')
-    depends_on('py-matplotlib')
+    depends_on('py-dask', type=nolink)
+    depends_on('pil', type=nolink)
+    depends_on('py-networkx', type=nolink)
+    depends_on('py-six', type=nolink)
+    depends_on('py-scipy', type=nolink)
+    depends_on('py-matplotlib', type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-scikit-learn/package.py b/var/spack/repos/builtin/packages/py-scikit-learn/package.py
index 7bb5853b19124a00a56c9b14f3097ed1094d3715..1a6112bcf3ec73a469fa3dfeb47a059558565cee 100644
--- a/var/spack/repos/builtin/packages/py-scikit-learn/package.py
+++ b/var/spack/repos/builtin/packages/py-scikit-learn/package.py
@@ -35,9 +35,9 @@ class PyScikitLearn(Package):
 
     extends('python')
 
-    depends_on('py-setuptools')
-    depends_on('py-numpy')
-    depends_on('py-scipy')
+    depends_on('py-setuptools', type='build')
+    depends_on('py-numpy', type=nolink)
+    depends_on('py-scipy', type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-scipy/package.py b/var/spack/repos/builtin/packages/py-scipy/package.py
index f7c372b345959f2883eb0ea5d9ef00b889837911..ea3731cf1bbb086ac60a62b0c686baf816e0eb8e 100644
--- a/var/spack/repos/builtin/packages/py-scipy/package.py
+++ b/var/spack/repos/builtin/packages/py-scipy/package.py
@@ -34,8 +34,8 @@ class PyScipy(Package):
     version('0.15.0', '639112f077f0aeb6d80718dc5019dc7a')
 
     extends('python')
-    depends_on('py-nose')
-    depends_on('py-numpy+blas+lapack')
+    depends_on('py-nose', type='build')
+    depends_on('py-numpy+blas+lapack', type=nolink)
 
     def install(self, spec, prefix):
         if 'atlas' in spec:
diff --git a/var/spack/repos/builtin/packages/py-shiboken/package.py b/var/spack/repos/builtin/packages/py-shiboken/package.py
index a2240c68a4c46c55fafe4781aa9ecb4089670ddb..27188e141729140065471023854ec3fcac44e90d 100644
--- a/var/spack/repos/builtin/packages/py-shiboken/package.py
+++ b/var/spack/repos/builtin/packages/py-shiboken/package.py
@@ -32,11 +32,10 @@ class PyShiboken(Package):
 
     version('1.2.2', '345cfebda221f525842e079a6141e555')
 
-    # TODO: make build dependency
-    # depends_on("cmake")
+    depends_on('cmake', type='build')
 
     extends('python')
-    depends_on("py-setuptools")
+    depends_on("py-setuptools", type='build')
     depends_on("libxml2")
     depends_on("qt@:4.8")
 
diff --git a/var/spack/repos/builtin/packages/py-six/package.py b/var/spack/repos/builtin/packages/py-six/package.py
index 3efb3d43172b69ab0240124cdc9a4db6cc88ae6c..eb4846d5af837785d46a64c162757f5c5bcecadd 100644
--- a/var/spack/repos/builtin/packages/py-six/package.py
+++ b/var/spack/repos/builtin/packages/py-six/package.py
@@ -33,7 +33,7 @@ class PySix(Package):
     version('1.10.0', '34eed507548117b2ab523ab14b2f8b55')
 
     extends('python')
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-sncosmo/package.py b/var/spack/repos/builtin/packages/py-sncosmo/package.py
index 82ae2a2e69c0af8a6d9349953615d7018ca6dd0a..feb3856e8b85047a72f5531beec82a241131d346 100644
--- a/var/spack/repos/builtin/packages/py-sncosmo/package.py
+++ b/var/spack/repos/builtin/packages/py-sncosmo/package.py
@@ -37,15 +37,15 @@ class PySncosmo(Package):
     # Required dependencies
     # py-sncosmo binaries are duplicates of those from py-astropy
     extends('python', ignore=r'bin/.*')
-    depends_on('py-numpy')
-    depends_on('py-scipy')
-    depends_on('py-astropy')
+    depends_on('py-numpy', type=nolink)
+    depends_on('py-scipy', type=nolink)
+    depends_on('py-astropy', type=nolink)
 
     # Recommended dependencies
-    depends_on('py-matplotlib')
-    depends_on('py-iminuit')
-    depends_on('py-emcee')
-    depends_on('py-nestle')
+    depends_on('py-matplotlib', type=nolink)
+    depends_on('py-iminuit', type=nolink)
+    depends_on('py-emcee', type=nolink)
+    depends_on('py-nestle', type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix={0}'.format(prefix))
diff --git a/var/spack/repos/builtin/packages/py-storm/package.py b/var/spack/repos/builtin/packages/py-storm/package.py
index 53af720c50e3e122528df6ac76cd67b9acf70883..0e972480f369a8f72ef05d6916e698ab43520c19 100644
--- a/var/spack/repos/builtin/packages/py-storm/package.py
+++ b/var/spack/repos/builtin/packages/py-storm/package.py
@@ -34,7 +34,7 @@ class PyStorm(Package):
     version('0.20', '8628503141f0f06c0749d607ac09b9c7')
 
     extends('python')
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-tappy/package.py b/var/spack/repos/builtin/packages/py-tappy/package.py
index a1026a9b4b4f749ef842ce4fdae70ea2a823caee..b10244acddf844535d5210725decdd2606739e68 100644
--- a/var/spack/repos/builtin/packages/py-tappy/package.py
+++ b/var/spack/repos/builtin/packages/py-tappy/package.py
@@ -33,7 +33,7 @@ class PyTappy(Package):
     version('1.6', 'c8bdb93ad66e05f939905172a301bedf')
 
     extends('python')
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-tuiview/package.py b/var/spack/repos/builtin/packages/py-tuiview/package.py
index 200a33a676c3cf65d71feb2a106254fc6cfd3424..56056ebad16ae7a1a108fed809f06a1ba30b71e9 100644
--- a/var/spack/repos/builtin/packages/py-tuiview/package.py
+++ b/var/spack/repos/builtin/packages/py-tuiview/package.py
@@ -35,8 +35,8 @@ class PyTuiview(Package):
     version('1.1.7', '4b3b38a820cc239c8ab4a181ac5d4c30')
 
     extends("python")
-    depends_on("py-pyqt")
-    depends_on("py-numpy")
+    depends_on("py-pyqt", type=nolink)
+    depends_on("py-numpy", type=nolink)
     depends_on("gdal")
 
     def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/py-twisted/package.py b/var/spack/repos/builtin/packages/py-twisted/package.py
index 27db4adff4206c902bbf158ce24b2d1458aa3cbb..2ce83cd24c07043eb16519a9a139716d7cae61ad 100644
--- a/var/spack/repos/builtin/packages/py-twisted/package.py
+++ b/var/spack/repos/builtin/packages/py-twisted/package.py
@@ -32,7 +32,7 @@ class PyTwisted(Package):
     version('15.4.0', '5337ffb6aeeff3790981a2cd56db9655')
     version('15.3.0', 'b58e83da2f00b3352afad74d0c5c4599')
 
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     extends('python')
 
diff --git a/var/spack/repos/builtin/packages/py-unittest2/package.py b/var/spack/repos/builtin/packages/py-unittest2/package.py
index f669a500ec8f84a60704526d9c35b5082496dd38..174ab0ca5f262c343572084dfc447c31b6924b00 100644
--- a/var/spack/repos/builtin/packages/py-unittest2/package.py
+++ b/var/spack/repos/builtin/packages/py-unittest2/package.py
@@ -35,7 +35,7 @@ class PyUnittest2(Package):
     version('1.1.0', 'f72dae5d44f091df36b6b513305ea000')
 
     extends('python')
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-unittest2py3k/package.py b/var/spack/repos/builtin/packages/py-unittest2py3k/package.py
index ca857395fbe2fad4f7864dbc19ce9b4dc10f99b0..95e6dcbff0e576ec24cf363476c6e695d4725b16 100644
--- a/var/spack/repos/builtin/packages/py-unittest2py3k/package.py
+++ b/var/spack/repos/builtin/packages/py-unittest2py3k/package.py
@@ -36,7 +36,7 @@ class PyUnittest2py3k(Package):
     version('0.5.1', '8824ff92044310d9365f90d892bf0f09')
 
     extends('python')
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-urwid/package.py b/var/spack/repos/builtin/packages/py-urwid/package.py
index 0accc72df8a775424ef30e493ba09e205e90d07c..48ba84e7bc85f8c74a70c44468dea929774346c2 100644
--- a/var/spack/repos/builtin/packages/py-urwid/package.py
+++ b/var/spack/repos/builtin/packages/py-urwid/package.py
@@ -31,7 +31,7 @@ class PyUrwid(Package):
 
     version('1.3.0', 'a989acd54f4ff1a554add464803a9175')
 
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     extends("python")
 
diff --git a/var/spack/repos/builtin/packages/py-virtualenv/package.py b/var/spack/repos/builtin/packages/py-virtualenv/package.py
index d42cb96eb77508be92318f0c51ad8c343e39b4b8..d6b33ae175a90821de6914025fa179f7f550cf40 100644
--- a/var/spack/repos/builtin/packages/py-virtualenv/package.py
+++ b/var/spack/repos/builtin/packages/py-virtualenv/package.py
@@ -35,7 +35,7 @@ class PyVirtualenv(Package):
     version('15.0.1', '28d76a0d9cbd5dc42046dd14e76a6ecc')
 
     extends('python')
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-wcsaxes/package.py b/var/spack/repos/builtin/packages/py-wcsaxes/package.py
index b0adbe365806020cd90163ee7134df6b5e44bbd0..9588b879fa09423a7d5481c3076bb431fb8b8aaf 100644
--- a/var/spack/repos/builtin/packages/py-wcsaxes/package.py
+++ b/var/spack/repos/builtin/packages/py-wcsaxes/package.py
@@ -35,9 +35,9 @@ class PyWcsaxes(Package):
     version('0.8', 'de1c60fdae4c330bf5ddb9f1ab5ab920')
 
     extends('python', ignore=r'bin/pbr')
-    depends_on('py-numpy')
-    depends_on('py-matplotlib')
-    depends_on('py-astropy')
+    depends_on('py-numpy', type=nolink)
+    depends_on('py-matplotlib', type=nolink)
+    depends_on('py-astropy', type=nolink)
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix={0}'.format(prefix))
diff --git a/var/spack/repos/builtin/packages/py-wheel/package.py b/var/spack/repos/builtin/packages/py-wheel/package.py
index 68b6f3d679142aba645652e6442a41ac4eb4d8b2..9e383a9a19fff9b5d4d03454e4963654d29b6b62 100644
--- a/var/spack/repos/builtin/packages/py-wheel/package.py
+++ b/var/spack/repos/builtin/packages/py-wheel/package.py
@@ -33,7 +33,7 @@ class PyWheel(Package):
     version('0.26.0', '4cfc6e7e3dc7377d0164914623922a10')
 
     extends('python')
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/py-yapf/package.py b/var/spack/repos/builtin/packages/py-yapf/package.py
index 60f740c98dc4dea5f4fa30c0508ff7706dcbe277..f7fe4037a135755aa3e2da6c9dafe06373bb4ed0 100644
--- a/var/spack/repos/builtin/packages/py-yapf/package.py
+++ b/var/spack/repos/builtin/packages/py-yapf/package.py
@@ -33,7 +33,7 @@ class PyYapf(Package):
     version('0.2.1', '348ccf86cf2057872e4451b204fb914c')
 
     extends('python')
-    depends_on('py-setuptools')
+    depends_on('py-setuptools', type='build')
 
     def install(self, spec, prefix):
         python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/repos/builtin/packages/qhull/package.py b/var/spack/repos/builtin/packages/qhull/package.py
index 280c9cc12c0ab32f584c2db64c2bc481b4639ae0..f7cbcc273659ef5412a288bd4c1031fc3058ea30 100644
--- a/var/spack/repos/builtin/packages/qhull/package.py
+++ b/var/spack/repos/builtin/packages/qhull/package.py
@@ -45,7 +45,7 @@ class Qhull(Package):
     # https://github.com/qhull/qhull/pull/5
     patch('qhull-iterator.patch', when='@1.0')
     
-    depends_on('cmake')
+    depends_on('cmake', type='build')
 
     def install(self, spec, prefix):
         with working_dir('spack-build', create=True):
diff --git a/var/spack/repos/builtin/packages/qt/package.py b/var/spack/repos/builtin/packages/qt/package.py
index 0c91a5ce87cc34a3146a30e053dabec513ac1d1e..f33e5c2d0e580cdf2364743267a200246ffa35a5 100644
--- a/var/spack/repos/builtin/packages/qt/package.py
+++ b/var/spack/repos/builtin/packages/qt/package.py
@@ -60,8 +60,8 @@ class Qt(Package):
 
     # Webkit
     # depends_on("gperf")
-    # depends_on("flex")
-    # depends_on("bison")
+    # depends_on("flex", type='build')
+    # depends_on("bison", type='build')
     # depends_on("ruby")
     # depends_on("icu4c")
 
diff --git a/var/spack/repos/builtin/packages/ravel/package.py b/var/spack/repos/builtin/packages/ravel/package.py
index 763ec1b9a2efbba59887123e20dbc257d083f3c9..96692ac7c14d58788ab7ba9d4c7bfe357f105456 100644
--- a/var/spack/repos/builtin/packages/ravel/package.py
+++ b/var/spack/repos/builtin/packages/ravel/package.py
@@ -33,8 +33,7 @@ class Ravel(Package):
 
     version('1.0.0', 'b25fece58331c2adfcce76c5036485c2')
 
-    # TODO: make this a build dependency
-    depends_on('cmake@2.8.9:')
+    depends_on('cmake@2.8.9:', type='build')
 
     depends_on('muster@1.0.1:')
     depends_on('otf')
diff --git a/var/spack/repos/builtin/packages/rose/package.py b/var/spack/repos/builtin/packages/rose/package.py
index b8a65e8574bb11e75119ac041297f9d7c2a8dcad..bcd317eb8ffbe1da0069b52a372af8c6676dcf77 100644
--- a/var/spack/repos/builtin/packages/rose/package.py
+++ b/var/spack/repos/builtin/packages/rose/package.py
@@ -40,9 +40,9 @@ class Rose(Package):
 
     patch('add_spack_compiler_recognition.patch')
 
-    depends_on("autoconf@2.69")
-    depends_on("automake@1.14")
-    depends_on("libtool@2.4")
+    depends_on("autoconf@2.69", type='build')
+    depends_on("automake@1.14", type='build')
+    depends_on("libtool@2.4", type='build')
     depends_on("boost@1.54.0")
     depends_on("jdk@8u25-linux-x64")
 
diff --git a/var/spack/repos/builtin/packages/scotch/package.py b/var/spack/repos/builtin/packages/scotch/package.py
index 2f6e42c439a370395e2ae88112581d6869323e10..c2bad20c2fe39c7a28cd7c21fe5e2daf3d1ed00b 100644
--- a/var/spack/repos/builtin/packages/scotch/package.py
+++ b/var/spack/repos/builtin/packages/scotch/package.py
@@ -45,8 +45,8 @@ class Scotch(Package):
     variant('shared', default=True, description='Build a shared version of the library')
     variant('metis', default=True, description='Build metis and parmetis wrapper libraries')
 
-    depends_on('flex')
-    depends_on('bison')
+    depends_on('flex', type='build')
+    depends_on('bison', type='build')
     depends_on('mpi', when='+mpi')
     depends_on('zlib', when='+compression')
 
diff --git a/var/spack/repos/builtin/packages/serf/package.py b/var/spack/repos/builtin/packages/serf/package.py
index ff6fd2da9b0bdb1956a34d2e61bb1bab97bbc6a4..ebca74a3ab89df456c7b5094eb1a14cd5d8c1886 100644
--- a/var/spack/repos/builtin/packages/serf/package.py
+++ b/var/spack/repos/builtin/packages/serf/package.py
@@ -36,7 +36,7 @@ class Serf(Package):
 
     depends_on('apr')
     depends_on('apr-util')
-    depends_on('scons')
+    depends_on('scons', type='build')
     depends_on('expat')
     depends_on('openssl')
     depends_on('zlib')
diff --git a/var/spack/repos/builtin/packages/spot/package.py b/var/spack/repos/builtin/packages/spot/package.py
index 59535dcc4cb829a83d7ad0c847b792861c8cae3e..21bb6f03a70e483747eaf8812207e0e42a44b17c 100644
--- a/var/spack/repos/builtin/packages/spot/package.py
+++ b/var/spack/repos/builtin/packages/spot/package.py
@@ -32,7 +32,7 @@ class Spot(Package):
 
     version('1.99.3', 'd53adcb2d0fe7c69f45d4e595a58254e')
 
-    #depends_on("gcc@4.8:")
+    #depends_on("gcc@4.8:", type='build')
     depends_on("python@3.2:")
 
     def install(self, spec, prefix):
diff --git a/var/spack/repos/builtin/packages/stat/package.py b/var/spack/repos/builtin/packages/stat/package.py
index 80d27e149f98f1cf1c879e7dbec83ae148df0502..a03713397b66d46c6609f32a95acd777d57962a8 100644
--- a/var/spack/repos/builtin/packages/stat/package.py
+++ b/var/spack/repos/builtin/packages/stat/package.py
@@ -39,7 +39,7 @@ class Stat(Package):
     depends_on('libdwarf')
     depends_on('dyninst')
     depends_on('graphlib')
-    depends_on('graphviz')
+    depends_on('graphviz', type=alldeps)
     depends_on('launchmon')
     depends_on('mrnet')
 
diff --git a/var/spack/repos/builtin/packages/swiftsim/package.py b/var/spack/repos/builtin/packages/swiftsim/package.py
index 42e8fb466a0a1a1b249e9574f591b277671db0f7..37862a73a9a4dec1feda9738b6f40d61eb2a52fb 100644
--- a/var/spack/repos/builtin/packages/swiftsim/package.py
+++ b/var/spack/repos/builtin/packages/swiftsim/package.py
@@ -43,10 +43,10 @@ class Swiftsim(Package):
     variant('mpi', default=True, description='Enable distributed memory parallelism')
 
     # Build dependencies
-    depends_on('autoconf')
-    depends_on('automake')
-    depends_on('libtool')
-    depends_on('m4')
+    depends_on('autoconf', type='build')
+    depends_on('automake', type='build')
+    depends_on('libtool', type='build')
+    depends_on('m4', type='build')
     # link-time / run-time dependencies
     depends_on('mpi', when='+mpi')
     depends_on('metis')
diff --git a/var/spack/repos/builtin/packages/task/package.py b/var/spack/repos/builtin/packages/task/package.py
index dc52c4f9f6faa4cb28b29381e9d09ebe1bef07e1..8c3b412f48de761ca59b34c0870960f9ef220791 100644
--- a/var/spack/repos/builtin/packages/task/package.py
+++ b/var/spack/repos/builtin/packages/task/package.py
@@ -31,6 +31,7 @@ class Task(Package):
 
     version('2.4.4', '517450c4a23a5842df3e9905b38801b3')
 
+    depends_on('cmake', type='build')
     depends_on("gnutls")
     depends_on("libuuid")
     # depends_on("gcc@4.8:")
diff --git a/var/spack/repos/builtin/packages/taskd/package.py b/var/spack/repos/builtin/packages/taskd/package.py
index 8a022b4fe9869980ebe8d944a62d908f412e50fa..1d7f9ed49ea796fcd895e8b9c1b651c1a3c86fcf 100644
--- a/var/spack/repos/builtin/packages/taskd/package.py
+++ b/var/spack/repos/builtin/packages/taskd/package.py
@@ -32,6 +32,7 @@ class Taskd(Package):
 
     version('1.1.0', 'ac855828c16f199bdbc45fbc227388d0')
 
+    depends_on('cmake', type='build')
     depends_on("libuuid")
     depends_on("gnutls")
 
diff --git a/var/spack/repos/builtin/packages/tetgen/package.py b/var/spack/repos/builtin/packages/tetgen/package.py
index c301a5b4e5b01861e881011924b3de66aae325d8..97aa68be65a08ee558bbe0d7c417aa245b82001c 100644
--- a/var/spack/repos/builtin/packages/tetgen/package.py
+++ b/var/spack/repos/builtin/packages/tetgen/package.py
@@ -38,9 +38,7 @@ class Tetgen(Package):
     version('1.4.3', 'd6a4bcdde2ac804f7ec66c29dcb63c18')
     version('1.5.0', '3b9fd9cdec121e52527b0308f7aad5c1', url='http://www.tetgen.org/1.5/src/tetgen1.5.0.tar.gz')
 
-    # TODO: Make this a build dependency once build dependencies are supported
-    # (see: https://github.com/LLNL/spack/pull/378).
-    depends_on('cmake@2.8.7:', when='@1.5.0:')
+    depends_on('cmake@2.8.7:', when='@1.5.0:', type='build')
 
     def install(self, spec, prefix):
         make('tetgen', 'tetlib')
diff --git a/var/spack/repos/builtin/packages/the_platinum_searcher/package.py b/var/spack/repos/builtin/packages/the_platinum_searcher/package.py
index 9c9a66cdefc9894edeafb6111fe0d1672e1c2064..0d2c2918c4f6518ccee970209af36ed0cc873024 100644
--- a/var/spack/repos/builtin/packages/the_platinum_searcher/package.py
+++ b/var/spack/repos/builtin/packages/the_platinum_searcher/package.py
@@ -12,7 +12,7 @@ class ThePlatinumSearcher(Package):
 
     version('head', go=package)
 
-    extends("go")
+    extends("go", deptypes='build')
 
     def install(self, spec, prefix):
         env = os.environ
diff --git a/var/spack/repos/builtin/packages/the_silver_searcher/package.py b/var/spack/repos/builtin/packages/the_silver_searcher/package.py
index e289b6d7836aff6ba3db0c4ae780b78be3fc5ea3..988619df304ee4a0df4f526b4a1703ad65021dcd 100644
--- a/var/spack/repos/builtin/packages/the_silver_searcher/package.py
+++ b/var/spack/repos/builtin/packages/the_silver_searcher/package.py
@@ -33,7 +33,7 @@ class TheSilverSearcher(Package):
 
     depends_on('pcre')
     depends_on('xz')
-    depends_on('pkg-config')
+    depends_on('pkg-config', type='build')
 
     def install(self, spec, prefix):
         configure("--prefix=%s" % prefix)
diff --git a/var/spack/repos/builtin/packages/thrift/package.py b/var/spack/repos/builtin/packages/thrift/package.py
index 6d834c6321d8b0a4f503be820d11a020a03270f9..025ee2b88582ab37ba071820d136dcadde165964 100644
--- a/var/spack/repos/builtin/packages/thrift/package.py
+++ b/var/spack/repos/builtin/packages/thrift/package.py
@@ -41,12 +41,12 @@ class Thrift(Package):
     variant('python', default=True, description="Build support for python")
 
     depends_on('jdk')
-    depends_on('autoconf')
-    depends_on('automake')
-    depends_on('libtool')
+    depends_on('autoconf', type='build')
+    depends_on('automake', type='build')
+    depends_on('libtool', type='build')
     depends_on('boost@1.53:')
-    depends_on('bison')
-    depends_on('flex')
+    depends_on('bison', type='build')
+    depends_on('flex', type='build')
     depends_on('openssl')
 
     # Variant dependencies
diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py
index 3a53ac5c01c13fb7d397fa5c2f6ffdb6fd20737e..56499af8d99c80a422c0f75cae47463523d7ef8d 100644
--- a/var/spack/repos/builtin/packages/trilinos/package.py
+++ b/var/spack/repos/builtin/packages/trilinos/package.py
@@ -68,6 +68,8 @@ class Trilinos(Package):
     variant('debug',        default=False, description='Builds a debug version of the libraries')
     variant('boost',        default=True, description='Compile with Boost')
 
+    depends_on('cmake', type='build')
+
     # Everything should be compiled with -fpic
     depends_on('blas')
     depends_on('lapack')
diff --git a/var/spack/repos/builtin/packages/vim/package.py b/var/spack/repos/builtin/packages/vim/package.py
index f66c20894bbb4dcd02b00b4fbfdfe6603c13b255..e0dfb64879187ed2a82cdcd247e5b8ac9b36a18d 100644
--- a/var/spack/repos/builtin/packages/vim/package.py
+++ b/var/spack/repos/builtin/packages/vim/package.py
@@ -60,7 +60,7 @@ class Vim(Package):
     depends_on('ruby', when='+ruby')
 
     variant('cscope', default=False, description="build with cscope support")
-    depends_on('cscope', when='+cscope')
+    depends_on('cscope', when='+cscope', type='run')
 
     variant('gui', default=False, description="build with gui (gvim)")
     # virtual dependency?
diff --git a/var/spack/repos/builtin/packages/vtk/package.py b/var/spack/repos/builtin/packages/vtk/package.py
index d2296dbc266c188983bb1a93074311bbce9482df..5c196b5ea8146e53125c86a75d142fed4ddf13a3 100644
--- a/var/spack/repos/builtin/packages/vtk/package.py
+++ b/var/spack/repos/builtin/packages/vtk/package.py
@@ -37,6 +37,7 @@ class Vtk(Package):
 
     version('6.1.0', '25e4dfb3bad778722dcaec80cd5dab7d')
 
+    depends_on('cmake', type='build')
     depends_on("qt")
 
     # VTK7 defaults to OpenGL2 rendering backend