diff --git a/README.md b/README.md
index 7a13dba2a8b74cfe52c04d27533dbd92cf344e3a..74a327b517a89c0ba59615bb8ec3839c50f28a82 100644
--- a/README.md
+++ b/README.md
@@ -41,6 +41,7 @@ people:
 
   * David Beckingsale
   * David Boehme
+  * Alfredo Gimenez
   * Luc Jaulmes
   * Matt Legendre
   * Greg Lee
diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py
index 84d2bd77ef336f892b547a11533be30e9e3bb18a..59b25d96e7ce31d485cfa3ad4e314c69789692f2 100644
--- a/lib/spack/spack/build_environment.py
+++ b/lib/spack/spack/build_environment.py
@@ -184,6 +184,10 @@ def set_module_variables_for_package(pkg):
     if platform.mac_ver()[0]:
         m.std_cmake_args.append('-DCMAKE_FIND_FRAMEWORK=LAST')
 
+    # Set up CMake rpath
+    m.std_cmake_args.append('-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=FALSE')
+    m.std_cmake_args.append('-DCMAKE_INSTALL_RPATH=%s' % ":".join(get_rpaths(pkg)))
+
     # Emulate some shell commands for convenience
     m.pwd        = os.getcwd
     m.cd         = os.chdir
@@ -203,6 +207,16 @@ def set_module_variables_for_package(pkg):
     m.prefix  = pkg.prefix
 
 
+def get_rpaths(pkg):
+    """Get a list of all the rpaths for a package."""
+    rpaths = [pkg.prefix.lib, pkg.prefix.lib64]
+    rpaths.extend(d.prefix.lib for d in pkg.spec.traverse(root=False)
+                  if os.path.isdir(d.prefix.lib))
+    rpaths.extend(d.prefix.lib64 for d in pkg.spec.traverse(root=False)
+                  if os.path.isdir(d.prefix.lib64))
+    return rpaths
+
+
 def setup_package(pkg):
     """Execute all environment setup routines."""
     set_compiler_environment_variables(pkg)
diff --git a/lib/spack/spack/cmd/location.py b/lib/spack/spack/cmd/location.py
index 810c34d0a617a123ca1655eec18f6e5fb0cb93d1..709e894b7fadae5d8d91bd06551269c777630cdc 100644
--- a/lib/spack/spack/cmd/location.py
+++ b/lib/spack/spack/cmd/location.py
@@ -23,6 +23,7 @@
 # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 ##############################################################################
 import os
+import sys
 from external import argparse
 
 import llnl.util.tty as tty
diff --git a/share/spack/setup-env.sh b/share/spack/setup-env.sh
index 91b1dc46302abb503afeac5e1bc796697bd1d7bf..b2bcbaf6c7cfda834973803f6878232215c66226 100755
--- a/share/spack/setup-env.sh
+++ b/share/spack/setup-env.sh
@@ -165,8 +165,8 @@ fi
 #
 # Set up modules and dotkit search paths in the user environment
 #
-_sp_share_dir="$(dirname $_sp_source_file)"
-_sp_prefix="$(dirname $(dirname $_sp_share_dir))"
+_sp_share_dir=$(cd "$(dirname $_sp_source_file)" && pwd)
+_sp_prefix=$(cd "$(dirname $(dirname $_sp_share_dir))" && pwd)
 
 # TODO: fix SYS_TYPE to something non-LLNL-specific
 _spack_pathadd DK_NODE    "$_sp_share_dir/dotkit/$SYS_TYPE"
diff --git a/var/spack/packages/Mitos/package.py b/var/spack/packages/Mitos/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..272360a55c4cd8329dda8d52e2957e60c251809a
--- /dev/null
+++ b/var/spack/packages/Mitos/package.py
@@ -0,0 +1,18 @@
+from spack import *
+
+class Mitos(Package):
+    """Mitos is a library and a tool for collecting sampled memory
+    performance data to view with MemAxes"""
+
+    homepage = "https://github.com/scalability-llnl/Mitos"
+    url      = "https://github.com/scalability-llnl/Mitos"
+
+    version('0.7', git='https://github.com/scalability-llnl/Mitos.git', tag='v0.7')
+
+    depends_on('dyninst')
+
+    def install(self, spec, prefix):
+        with working_dir('spack-build', create=True):
+            cmake('..', *std_cmake_args)
+            make()
+            make("install")
diff --git a/var/spack/packages/bison/package.py b/var/spack/packages/bison/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..7c526fb95894c934c122b00f2c366410bd4449f6
--- /dev/null
+++ b/var/spack/packages/bison/package.py
@@ -0,0 +1,17 @@
+from spack import *
+
+class Bison(Package):
+    """Bison is a general-purpose parser generator that converts 
+    an annotated context-free grammar into a deterministic LR or 
+    generalized LR (GLR) parser employing LALR(1) parser tables."""
+
+    homepage = "http://www.gnu.org/software/bison/"
+    url      = "http://ftp.gnu.org/gnu/bison/bison-3.0.tar.gz"
+
+    version('3.0.4', 'a586e11cd4aff49c3ff6d3b6a4c9ccf8')
+
+    def install(self, spec, prefix):
+        configure("--prefix=%s" % prefix)
+
+        make()
+        make("install")
diff --git a/var/spack/packages/dbus/package.py b/var/spack/packages/dbus/package.py
index 5fee103f038229ca4926318d5c591b5392390324..f7f394498ced828991114e5f4f942945c8324ece 100644
--- a/var/spack/packages/dbus/package.py
+++ b/var/spack/packages/dbus/package.py
@@ -23,3 +23,7 @@ def install(self, spec, prefix):
         configure("--prefix=%s" % prefix)
         make()
         make("install")
+
+        # dbus needs a machine id generated after install
+        dbus_uuidgen = Executable(join_path(prefix.bin, 'dbus-uuidgen'))
+        dbus_uuidgen('--ensure')
diff --git a/var/spack/packages/dri2proto/package.py b/var/spack/packages/dri2proto/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..11dfa568e2704821d82dbc7513bea670719a650c
--- /dev/null
+++ b/var/spack/packages/dri2proto/package.py
@@ -0,0 +1,14 @@
+from spack import *
+
+class Dri2proto(Package):
+    """DRI2 Protocol Headers."""
+    homepage = "http://http://cgit.freedesktop.org/xorg/proto/dri2proto/"
+    url      = "http://xorg.freedesktop.org/releases/individual/proto/dri2proto-2.8.tar.gz"
+
+    version('2.8', '19ea18f63d8ae8053c9fa84b60365b77')
+
+    def install(self, spec, prefix):
+        configure("--prefix=%s" % prefix)
+
+        make()
+        make("install")
diff --git a/var/spack/packages/flex/package.py b/var/spack/packages/flex/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..b065904912ce7dcf44258c02481b2ac2a641a498
--- /dev/null
+++ b/var/spack/packages/flex/package.py
@@ -0,0 +1,15 @@
+from spack import *
+
+class Flex(Package):
+    """Flex is a tool for generating scanners."""
+
+    homepage = "http://flex.sourceforge.net/"
+    url      = "http://download.sourceforge.net/flex/flex-2.5.39.tar.gz"
+
+    version('2.5.39', 'e133e9ead8ec0a58d81166b461244fde')
+
+    def install(self, spec, prefix):
+        configure("--prefix=%s" % prefix)
+
+        make()
+        make("install")
diff --git a/var/spack/packages/gperf/package.py b/var/spack/packages/gperf/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..32551b67b400258f1096bbce65aab2f0db1498cd
--- /dev/null
+++ b/var/spack/packages/gperf/package.py
@@ -0,0 +1,19 @@
+from spack import *
+
+class Gperf(Package):
+    """GNU gperf is a perfect hash function generator. For a given
+    list of strings, it produces a hash function and hash table, in
+    form of C or C++ code, for looking up a value depending on the
+    input string. The hash function is perfect, which means that the
+    hash table has no collisions, and the hash table lookup needs a
+    single string comparison only."""
+
+    homepage = "https://www.gnu.org/software/gperf/"
+    url      = "http://ftp.gnu.org/pub/gnu/gperf/gperf-3.0.4.tar.gz"
+
+    version('3.0.4', 'c1f1db32fb6598d6a93e6e88796a8632')
+
+    def install(self, spec, prefix):
+        configure("--prefix=%s" % prefix)
+        make()
+        make("install")
diff --git a/var/spack/packages/icu4c/package.py b/var/spack/packages/icu4c/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..55b44463b2c6238adf6b08e1d3dbea9160aac104
--- /dev/null
+++ b/var/spack/packages/icu4c/package.py
@@ -0,0 +1,17 @@
+from spack import *
+
+class Icu4c(Package):
+    """ICU is a mature, widely used set of C/C++ and Java libraries 
+    providing Unicode and Globalization support for software applications."""
+
+    homepage = "http://site.icu-project.org/"
+    url      = "http://downloads.sourceforge.net/project/icu/ICU4C/54.1/icu4c-54_1-src.tgz"
+
+    version('54_1', 'e844caed8f2ca24c088505b0d6271bc0')
+
+    def install(self, spec, prefix):
+        cd("source")
+        configure("--prefix=%s" % prefix)
+
+        make()
+        make("install")
diff --git a/var/spack/packages/libdrm/package.py b/var/spack/packages/libdrm/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..00736b7811af926e615d3aa5a0f9fc880a0916f9
--- /dev/null
+++ b/var/spack/packages/libdrm/package.py
@@ -0,0 +1,18 @@
+from spack import *
+
+class Libdrm(Package):
+    """A userspace  library for  accessing the  DRM, direct
+    rendering  manager, on  Linux,  BSD and  other  operating 
+    systems that support the  ioctl interface."""
+
+    homepage = "http://dri.freedesktop.org/libdrm/" # no real website...
+    url      = "http://dri.freedesktop.org/libdrm/libdrm-2.4.59.tar.gz"
+
+    version('2.4.59', '105ac7af1afcd742d402ca7b4eb168b6')
+    version('2.4.33', '86e4e3debe7087d5404461e0032231c8')
+
+    def install(self, spec, prefix):
+        configure("--prefix=%s" % prefix)
+
+        make()
+        make("install")
diff --git a/var/spack/packages/libpng/package.py b/var/spack/packages/libpng/package.py
index c148a3d58cb5f6391fc1571feb2b0dd3222559ef..e02b08663e099e092e6f108227164e5e9648f73f 100644
--- a/var/spack/packages/libpng/package.py
+++ b/var/spack/packages/libpng/package.py
@@ -5,9 +5,9 @@ class Libpng(Package):
     homepage = "http://www.libpng.org/pub/png/libpng.html"
     url      = "http://download.sourceforge.net/libpng/libpng-1.6.16.tar.gz"
 
-    version('1.6.14', '2101b3de1d5f348925990f9aa8405660')
-    version('1.6.15', '829a256f3de9307731d4f52dc071916d')
     version('1.6.16', '1a4ad377919ab15b54f6cb6a3ae2622d')
+    version('1.6.15', '829a256f3de9307731d4f52dc071916d')
+    version('1.6.14', '2101b3de1d5f348925990f9aa8405660')
 
     def install(self, spec, prefix):
         configure("--prefix=%s" % prefix)
diff --git a/var/spack/packages/libxcb/package.py b/var/spack/packages/libxcb/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..521cd0d475749e4dd55ed480e1f94d01c42a8e69
--- /dev/null
+++ b/var/spack/packages/libxcb/package.py
@@ -0,0 +1,21 @@
+from spack import *
+
+class Libxcb(Package):
+    """The X protocol C-language Binding (XCB) is a replacement 
+    for Xlib featuring a small footprint, latency hiding, direct 
+    access to the protocol, improved threading support, and 
+    extensibility."""
+
+    homepage = "http://xcb.freedesktop.org/"
+    url      = "http://xcb.freedesktop.org/dist/libxcb-1.11.tar.gz"
+
+    version('1.11', '1698dd837d7e6e94d029dbe8b3a82deb')
+
+    depends_on("python")
+    depends_on("xcb-proto")
+
+    def install(self, spec, prefix):
+        configure("--prefix=%s" % prefix)
+
+        make()
+        make("install")
diff --git a/var/spack/packages/libxshmfence/package.py b/var/spack/packages/libxshmfence/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..3aa2448b46b21fa3f14cbeae047cf3c3405cb212
--- /dev/null
+++ b/var/spack/packages/libxshmfence/package.py
@@ -0,0 +1,16 @@
+from spack import *
+
+class Libxshmfence(Package):
+    """This is a tiny library that exposes a event API on top of Linux
+    futexes."""
+
+    homepage = "http://keithp.com/blogs/dri3_extension/" # not really...
+    url      = "http://xorg.freedesktop.org/archive/individual/lib/libxshmfence-1.2.tar.gz"
+
+    version('1.2', 'f0b30c0fc568b22ec524859ee28556f1')
+
+    def install(self, spec, prefix):
+        configure("--prefix=%s" % prefix)
+
+        make()
+        make("install")
diff --git a/var/spack/packages/llvm/package.py b/var/spack/packages/llvm/package.py
index c7a10df55ae1992e4c4cb5909c00a45642d26f98..69354a5c9095eaddc2f038ffc0dfd0d196beea92 100644
--- a/var/spack/packages/llvm/package.py
+++ b/var/spack/packages/llvm/package.py
@@ -35,6 +35,12 @@ class Llvm(Package):
     url      = "http://llvm.org/releases/3.4.2/llvm-3.4.2.src.tar.gz"
 
     version('3.4.2', 'a20669f75967440de949ac3b1bad439c')
+    version('3.0', 'a8e5f5f1c1adebae7b4a654c376a6005',
+            url='http://llvm.org/releases/3.0/llvm-3.0.tar.gz')
+    version('2.9', '793138412d2af2c7c7f54615f8943771',
+            url='http://llvm.org/releases/2.9/llvm-2.9.tgz')
+    version('2.8', '220d361b4d17051ff4bb21c64abe05ba',
+            url='http://llvm.org/releases/2.8/llvm-2.8.tgz')
 
     def install(self, spec, prefix):
         env['CXXFLAGS'] = self.compiler.cxx11_flag
diff --git a/var/spack/packages/memaxes/package.py b/var/spack/packages/memaxes/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..afa62009a626eaa68870a7e29f9376b9cc61a52e
--- /dev/null
+++ b/var/spack/packages/memaxes/package.py
@@ -0,0 +1,20 @@
+from spack import *
+
+class Memaxes(Package):
+    """MemAxes is a visualizer for sampled memory trace data."""
+
+    homepage = "https://github.com/scalability-llnl/MemAxes"
+
+    version('0.5', 'b0f561d48aa7301e028d074bc4b5751b',
+            url='https://github.com/scalability-llnl/MemAxes/archive/v0.5.tar.gz')
+
+    depends_on("cmake@2.8.9:")
+    depends_on("qt@5:")
+    depends_on("vtk")
+
+    def install(self, spec, prefix):
+        with working_dir('spack-build', create=True):
+            cmake('..', *std_cmake_args)
+            make()
+            make("install")
+
diff --git a/var/spack/packages/mesa/package.py b/var/spack/packages/mesa/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..2dba878a77cdbd947756da1a4a2eda9df49f2489
--- /dev/null
+++ b/var/spack/packages/mesa/package.py
@@ -0,0 +1,33 @@
+from spack import *
+
+class Mesa(Package):
+    """Mesa is an open-source implementation of the OpenGL 
+    specification - a system for rendering interactive 3D graphics."""
+
+    homepage = "http://www.mesa3d.org"
+    url      = "ftp://ftp.freedesktop.org/pub/mesa/older-versions/8.x/8.0.5/MesaLib-8.0.5.tar.gz"
+    # url      = "ftp://ftp.freedesktop.org/pub/mesa/10.4.4/MesaLib-10.4.4.tar.gz"
+
+    # version('10.4.4', '8d863a3c209bf5116b2babfccccc68ce')
+    version('8.0.5', 'cda5d101f43b8784fa60bdeaca4056f2')
+
+    # mesa 7.x, 8.x, 9.x 
+    depends_on("libdrm@2.4.33")
+    depends_on("llvm@3.0")
+
+    # patch("llvm-fixes.patch") # using newer llvm
+
+    # mesa 10.x
+    # depends_on("py-mako")
+    # depends_on("flex")
+    # depends_on("bison")
+    # depends_on("dri2proto")
+    # depends_on("libxcb")
+    # depends_on("libxshmfence")
+
+
+    def install(self, spec, prefix):
+        configure("--prefix=%s" % prefix)
+
+        make()
+        make("install")
diff --git a/var/spack/packages/py-mako/package.py b/var/spack/packages/py-mako/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..3e91ffd8e57f678458caaee831da72c2208e4231
--- /dev/null
+++ b/var/spack/packages/py-mako/package.py
@@ -0,0 +1,16 @@
+from spack import *
+
+class PyMako(Package):
+    """A super-fast templating language that borrows the best 
+    ideas from the existing templating languages."""
+
+    homepage = "https://pypi.python.org/pypi/mako"
+    url      = "https://pypi.python.org/packages/source/M/Mako/Mako-1.0.1.tar.gz"
+
+    version('1.0.1', '9f0aafd177b039ef67b90ea350497a54')
+
+    depends_on('py-setuptools')
+    extends('python')
+
+    def install(self, spec, prefix):
+        python('setup.py', 'install', '--prefix=%s' % prefix)
diff --git a/var/spack/packages/qt/package.py b/var/spack/packages/qt/package.py
index 3b5096c4f0c782e7ce51d885e5834dfcac322b84..30f46c08dc387c7eb3fa4d651f4bb3f69d1d6cd9 100644
--- a/var/spack/packages/qt/package.py
+++ b/var/spack/packages/qt/package.py
@@ -1,10 +1,20 @@
 import os
 from spack import *
+import os
 
 class Qt(Package):
     """Qt is a comprehensive cross-platform C++ application framework."""
     homepage = "http://qt.io"
+    list_url   = 'http://download.qt-project.org/official_releases/qt/'
+    list_depth = 2
+
+    version('5.4.0', 'e8654e4b37dd98039ba20da7a53877e6',
+            url='http://download.qt-project.org/official_releases/qt/5.4/5.4.0/single/qt-everywhere-opensource-src-5.4.0.tar.gz')
+    version('5.3.2', 'febb001129927a70174467ecb508a682',
+            url='http://download.qt.io/archive/qt/5.3/5.3.2/single/qt-everywhere-opensource-src-5.3.2.tar.gz')
 
+    version('5.2.1', 'a78408c887c04c34ce615da690e0b4c8',
+            url='http://download.qt.io/archive/qt/5.2/5.2.1/single/qt-everywhere-opensource-src-5.2.1.tar.gz')
     version('4.8.6', '2edbe4d6c2eff33ef91732602f3518eb',
             url="http://download.qt-project.org/official_releases/qt/4.8/4.8.6/qt-everywhere-opensource-src-4.8.6.tar.gz")
 
@@ -21,26 +31,51 @@ class Qt(Package):
     depends_on("libmng")
     depends_on("jpeg")
 
+    # Webkit
+    # depends_on("gperf")
+    # depends_on("flex")
+    # depends_on("bison")
+    # depends_on("ruby")
+    # depends_on("icu4c")
+
+    # OpenGL hardware acceleration
+    depends_on("mesa")
+    depends_on("libxcb")
+
+
     def setup_dependent_environment(self, module, spec, dep_spec):
         """Dependencies of Qt find it using the QTDIR environment variable."""
         os.environ['QTDIR'] = self.prefix
 
 
     def patch(self):
+        if self.spec.satisfies('@4'):
+            qmake_conf = 'mkspecs/common/g++-base.conf'
+        elif self.spec.satisfies('@5'):
+            qmake_conf = 'qtbase/mkspecs/common/g++-base.conf'
+        else:
+            return
+
         # Fix qmake compilers in the default mkspec
-        qmake_conf = 'mkspecs/common/g++-base.conf'
-        filter_file(r'^QMAKE_CC *=.*$',  'QMAKE_CC = cc', qmake_conf)
-        filter_file(r'^QMAKE_CXX *=.*$', 'QMAKE_CXX = c++', qmake_conf)
+        filter_file(r'^QMAKE_COMPILER *=.*$',  'QMAKE_COMPILER = cc', qmake_conf)
+        filter_file(r'^QMAKE_CC *=.*$',        'QMAKE_CC = cc',       qmake_conf)
+        filter_file(r'^QMAKE_CXX *=.*$',       'QMAKE_CXX = c++',     qmake_conf)
 
 
     def install(self, spec, prefix):
+        # Apparently this is the only way to
+        # "truly" get rid of webkit compiles now...
+        os.rename("qtwebkit","no-qtwebkit")
+        os.rename("qtwebkit-examples","no-qtwebkit-examples")
         configure('-v',
                   '-confirm-license',
                   '-opensource',
                   '-prefix', prefix,
                   '-openssl-linked',
                   '-dbus-linked',
-                  '-fast',
+                  #'-fast',
+                  '-opengl',
+                  '-qt-xcb',
                   '-optimized-qmake',
                   '-no-pch',
                   # phonon required for py-pyqt
diff --git a/var/spack/packages/ruby/package.py b/var/spack/packages/ruby/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..718fd0a3be1ec461762a7ed3bf08dc603d3d244e
--- /dev/null
+++ b/var/spack/packages/ruby/package.py
@@ -0,0 +1,16 @@
+from spack import *
+
+class Ruby(Package):
+    """A dynamic, open source programming language with a focus on 
+    simplicity and productivity."""
+
+    homepage = "https://www.ruby-lang.org/"
+    url      = "http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.0.tar.gz"
+
+    version('2.2.0', 'cd03b28fd0b555970f5c4fd481700852')
+
+    def install(self, spec, prefix):
+        configure("--prefix=%s" % prefix)
+
+        make()
+        make("install")
diff --git a/var/spack/packages/util-linux/package.py b/var/spack/packages/util-linux/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..cb7ceabf571f11c9f2861ced15cd1528369bc556
--- /dev/null
+++ b/var/spack/packages/util-linux/package.py
@@ -0,0 +1,20 @@
+from spack import *
+import os
+
+class UtilLinux(Package):
+    """Util-linux is a suite of essential utilities for any Linux system."""
+
+    homepage = "http://freecode.com/projects/util-linux"
+    url      = "https://www.kernel.org/pub/linux/utils/util-linux/v2.25/util-linux-2.25.tar.gz"
+
+    version('2.25', 'f6d7fc6952ec69c4dc62c8d7c59c1d57')
+
+    depends_on("python@2.7:")
+
+    def install(self, spec, prefix):
+        configure("--prefix=%s" % prefix, 
+                "PKG_CONFIG_PATH=%s/pkgconfig" % spec['python'].prefix.lib,
+                "--disable-use-tty-group")
+
+        make()
+        make("install")
diff --git a/var/spack/packages/vtk/package.py b/var/spack/packages/vtk/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..4a27a8fedba1c06705f5a1e603f4b29713b5b5cb
--- /dev/null
+++ b/var/spack/packages/vtk/package.py
@@ -0,0 +1,40 @@
+from spack import *
+
+class Vtk(Package):
+    """The Visualization Toolkit (VTK) is an open-source, freely
+    available software system for 3D computer graphics, image
+    processing and visualization. """
+    homepage = "http://www.vtk.org"
+    url      = "http://www.vtk.org/files/release/6.1/VTK-6.1.0.tar.gz"
+
+    version('6.1.0', '25e4dfb3bad778722dcaec80cd5dab7d')
+
+    depends_on("qt")
+
+    def install(self, spec, prefix):
+        with working_dir('spack-build', create=True):
+            cmake_args = [
+                "..",
+                "-DBUILD_SHARED_LIBS=ON",
+                # Disable wrappers for other languages.
+                "-DVTK_WRAP_PYTHON=OFF",
+                "-DVTK_WRAP_JAVA=OFF",
+                "-DVTK_WRAP_TCL=OFF"]
+            cmake_args.extend(std_cmake_args)
+
+            # Enable Qt support here.
+            cmake_args.extend([
+                "-DQT_QMAKE_EXECUTABLE:PATH=%s/qmake" % spec['qt'].prefix.bin,
+                "-DVTK_Group_Qt:BOOL=ON",
+                # Ignore webkit because it's hard to build w/Qt
+                "-DVTK_Group_Qt=OFF",
+                "-DModule_vtkGUISupportQt:BOOL=ON",
+                "-DModule_vtkGUISupportQtOpenGL:BOOL=ON"
+                ])
+
+            if spec['qt'].satisfies('@5'):
+                cmake_args.append("-DVTK_QT_VERSION:STRING=5")
+
+            cmake(*cmake_args)
+            make()
+            make("install")
diff --git a/var/spack/packages/xcb-proto/package.py b/var/spack/packages/xcb-proto/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..17a94bd8924ddcb49527fce4e502ae3aff52e525
--- /dev/null
+++ b/var/spack/packages/xcb-proto/package.py
@@ -0,0 +1,15 @@
+from spack import *
+
+class XcbProto(Package):
+    """Protocol for libxcb"""
+
+    homepage = "http://xcb.freedesktop.org/"
+    url      = "http://xcb.freedesktop.org/dist/xcb-proto-1.11.tar.gz"
+
+    version('1.11', 'c8c6cb72c84f58270f4db1f39607f66a')
+
+    def install(self, spec, prefix):
+        configure("--prefix=%s" % prefix)
+
+        make()
+        make("install")