diff --git a/requirements.txt b/requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9396d1c799ad67caa5864b291744d6765426ab87
--- /dev/null
+++ b/requirements.txt
@@ -0,0 +1,4 @@
+setuptools
+bob.extension
+bob.blitz
+bob.core
diff --git a/setup.py b/setup.py
index b6062bd5f8799dedd00dc152ba58352f73e456f4..fdf4fe2303d3e6001102fed6d8ac4dca0baff345 100644
--- a/setup.py
+++ b/setup.py
@@ -6,10 +6,13 @@
 bob_packages = ['bob.core']
 
 from setuptools import setup, find_packages, dist
-dist.Distribution(dict(setup_requires=['bob.blitz'] + bob_packages))
-from bob.extension.utils import egrep, find_header, find_library
+dist.Distribution(dict(setup_requires=['bob.extension', 'bob.blitz'] + bob_packages))
+from bob.extension.utils import egrep, find_header, find_library,
 from bob.blitz.extension import Extension, Library, build_ext
 
+from bob.extension.utils import load_requirements
+build_requires = load_requirements()
+
 import os
 
 packages = ['boost']
@@ -95,7 +98,7 @@ class hdf5:
     candidates = find_library(module, version=self.version, prefixes=[prefix], only_static=only_static)
 
     if not candidates:
-      raise RuntimeError("cannot find required %s binary module `%s' - make sure libsvm is installed on `%s'" % (self.name, module, prefix))
+      raise RuntimeError("cannot find required %s binary module `%s' - make sure libhdf5 is installed on `%s'" % (self.name, module, prefix))
 
     # libraries
     self.libraries = []
@@ -142,11 +145,8 @@ setup(
     include_package_data=True,
     zip_safe=False,
 
-    install_requires=[
-      'setuptools',
-      'bob.blitz',
-      'bob.core'
-    ],
+    setup_requires = build_requires,
+    install_requires = build_requires,
 
     namespace_packages=[
       "bob",