diff --git a/var/spack/repos/builtin/packages/astyle/package.py b/var/spack/repos/builtin/packages/astyle/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..7260fd74a1d6f156652263ba8b02f7f32e47c2f9
--- /dev/null
+++ b/var/spack/repos/builtin/packages/astyle/package.py
@@ -0,0 +1,17 @@
+from spack import *
+import os
+
+class Astyle(Package):
+    """A Free, Fast, and Small Automatic Formatter for C, C++, C++/CLI, Objective-C, C#, and Java Source Code."""
+    homepage = "http://astyle.sourceforge.net/"
+    url      = "http://downloads.sourceforge.net/project/astyle/astyle/astyle%202.04/astyle_2.04_linux.tar.gz"
+
+    version('2.04', '30b1193a758b0909d06e7ee8dd9627f6')
+
+    def install(self, spec, prefix):
+
+        with working_dir('src'):
+            make('-f',
+                join_path(self.stage.source_path,'build','clang','Makefile'),
+                parallel=False)
+            install(join_path(self.stage.source_path, 'src','bin','astyle'), self.prefix.bin)
diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py
index 1f93d39769ba0a9f28d59b1b7dc80c271d235505..91a4e3b415f75efbc6181cf63e3ca3f5f9835480 100644
--- a/var/spack/repos/builtin/packages/cmake/package.py
+++ b/var/spack/repos/builtin/packages/cmake/package.py
@@ -30,6 +30,7 @@ class Cmake(Package):
     homepage  = 'https://www.cmake.org'
     url       = 'https://cmake.org/files/v3.4/cmake-3.4.3.tar.gz'
 
+    version('3.5.1',    'ca051f4a66375c89d1a524e726da0296')
     version('3.5.0',    '33c5d09d4c33d4ffcc63578a6ba8777e')
     version('3.4.3',    '4cb3ff35b2472aae70f542116d616e63')
     version('3.4.0',    'cd3034e0a44256a0917e254167217fc8')
diff --git a/var/spack/repos/builtin/packages/gdal/package.py b/var/spack/repos/builtin/packages/gdal/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..4f1f1ec2dd1eaa348ee985809cb4e85c26913793
--- /dev/null
+++ b/var/spack/repos/builtin/packages/gdal/package.py
@@ -0,0 +1,69 @@
+from spack import *
+
+class Gdal(Package):
+    """
+    GDAL is a translator library for raster and vector geospatial
+    data formats that is released under an X/MIT style Open Source
+    license by the Open Source Geospatial Foundation. As a library,
+    it presents a single raster abstract data model and vector
+    abstract data model to the calling application for all supported
+    formats. It also comes with a variety of useful command line
+    utilities for data translation and processing
+    """
+
+    homepage   = "http://www.gdal.org/"
+    url        = "http://download.osgeo.org/gdal/2.0.2/gdal-2.0.2.tar.gz"
+    list_url   = "http://download.osgeo.org/gdal/"
+    list_depth = 2
+
+    version('2.0.2', '573865f3f59ba7b4f8f4cddf223b52a5')
+
+    extends('python')
+
+    variant('hdf5', default=False, description='Enable HDF5 support')
+    variant('hdf', default=False, description='Enable HDF4 support')
+    variant('openjpeg', default=False, description='Enable JPEG2000 support')
+    variant('geos', default=False, description='Enable GEOS support')
+    variant('kea', default=False, description='Enable KEA support')
+    variant('netcdf', default=False, description='Enable netcdf support')
+
+    depends_on('swig')
+    depends_on("hdf5", when='+hdf5')
+    depends_on("hdf", when='+hdf')
+    depends_on("openjpeg", when='+openjpeg')
+    depends_on("geos", when='+geos')
+    depends_on("kealib", when='+kea')
+    depends_on("netcdf", when='+netcdf')
+    depends_on("libtiff")
+    depends_on("libpng")
+    depends_on("zlib")
+    depends_on("proj")
+    depends_on("py-numpy")
+
+    parallel = False
+
+    def install(self, spec, prefix):
+        args = []
+        args.append("--prefix=%s" % prefix)
+        args.append("--with-liblzma=yes")
+        args.append("--with-zlib=%s" % spec['zlib'].prefix)
+        args.append("--with-python=%s" % spec['python'].prefix.bin + "/python")
+        args.append("--without-libtool")
+
+        if '+geos' in spec:
+            args.append('--with-geos=yes')
+        if '+hdf' in spec:
+            args.append('--with-hdf4=%s' % spec['hdf'].prefix)
+        if '+hdf5' in spec:
+            args.append('--with-hdf5=%s' % spec['hdf5'].prefix)
+        if '+openjpeg' in spec:
+            args.append('--with-openjpeg=%s' % spec['openjpeg'].prefix)
+        if '+kea' in spec:
+            args.append('--with-kea=yes')
+        if '+netcdf' in spec:
+            args.append('--with-netcdf=%s' % spec['netcdf'].prefix)
+
+        configure(*args)
+
+        make()
+        make("install")
diff --git a/var/spack/repos/builtin/packages/googletest/package.py b/var/spack/repos/builtin/packages/googletest/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..663b758747becb83c4b4b058a6c84fd08cd5f1db
--- /dev/null
+++ b/var/spack/repos/builtin/packages/googletest/package.py
@@ -0,0 +1,24 @@
+from spack import *
+
+class Googletest(Package):
+    """Google test framework for C++.  Also called gtest."""
+    homepage = "https://github.com/google/googletest"
+    url      = "https://github.com/google/googletest/tarball/release-1.7.0"
+
+    version('1.7.0', '5eaf03ed925a47b37c8e1d559eb19bc4')
+
+    depends_on("cmake")
+
+    def install(self, spec, prefix):
+        which('cmake')('.', *std_cmake_args)
+
+        make()
+
+        # Google Test doesn't have a make install
+        # We have to do our own install here.
+	install_tree('include', prefix.include)
+
+        mkdirp(prefix.lib)
+	install('./libgtest.a', '%s' % prefix.lib)
+	install('./libgtest_main.a', '%s' % prefix.lib)
+
diff --git a/var/spack/repos/builtin/packages/kealib/package.py b/var/spack/repos/builtin/packages/kealib/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..475d21e1d8059e0db02b67146dcf48004734f6c9
--- /dev/null
+++ b/var/spack/repos/builtin/packages/kealib/package.py
@@ -0,0 +1,35 @@
+from spack import *
+
+class Kealib(Package):
+    """An HDF5 Based Raster File Format
+    
+    KEALib provides an implementation of the GDAL data model.
+    The format supports raster attribute tables, image pyramids,
+    meta-data and in-built statistics while also handling very
+    large files and compression throughout.
+    
+    Based on the HDF5 standard, it also provides a base from which
+    other formats can be derived and is a good choice for long
+    term data archiving. An independent software library (libkea)
+    provides complete access to the KEA image format and a GDAL
+    driver allowing KEA images to be used from any GDAL supported software.
+    
+    Development work on this project has been funded by Landcare Research.
+    """
+    homepage = "http://kealib.org/"
+    url      = "https://bitbucket.org/chchrsc/kealib/get/kealib-1.4.5.tar.gz"
+
+    version('1.4.5', '112e9c42d980b2d2987a3c15d0833a5d')
+
+    depends_on("hdf5")
+
+    def install(self, spec, prefix):
+        with working_dir('trunk', create=False):
+            cmake_args = []
+            cmake_args.append("-DCMAKE_INSTALL_PREFIX=%s" % prefix)
+            cmake_args.append("-DHDF5_INCLUDE_DIR=%s" % spec['hdf5'].prefix.include)
+            cmake_args.append("-DHDF5_LIB_PATH=%s" % spec['hdf5'].prefix.lib)
+            cmake('.', *cmake_args)
+
+            make()
+            make("install")
diff --git a/var/spack/repos/builtin/packages/openjpeg/package.py b/var/spack/repos/builtin/packages/openjpeg/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..afec197d11242ad8076d872f8032c0e7376943c4
--- /dev/null
+++ b/var/spack/repos/builtin/packages/openjpeg/package.py
@@ -0,0 +1,26 @@
+from spack import *
+
+class Openjpeg(Package):
+    """
+    OpenJPEG is an open-source JPEG 2000 codec written in C language.
+    It has been developed in order to promote the use of JPEG 2000, a
+    still-image compression standard from the Joint Photographic
+    Experts Group (JPEG).
+    Since April 2015, it is officially recognized by ISO/IEC and
+    ITU-T as a JPEG 2000 Reference Software.
+    """
+    homepage = "https://github.com/uclouvain/openjpeg"
+    url      = "https://github.com/uclouvain/openjpeg/archive/version.2.1.tar.gz"
+
+    version('2.1'  , '3e1c451c087f8462955426da38aa3b3d')
+    version('2.0.1', '105876ed43ff7dbb2f90b41b5a43cfa5')
+    version('2.0'  , 'cdf266530fee8af87454f15feb619609')
+    version('1.5.2', '545f98923430369a6b046ef3632ef95c')
+    version('1.5.1', 'd774e4b5a0db5f0f171c4fc0aabfa14e')
+
+
+    def install(self, spec, prefix):
+        cmake('.', *std_cmake_args)
+
+        make()
+        make("install")
diff --git a/var/spack/repos/builtin/packages/py-cython/package.py b/var/spack/repos/builtin/packages/py-cython/package.py
index 68eb735ad9307891f56966abbaf902e49ccaf1be..072355026e1e6c96088a3daf1d228d1f1d0af03e 100644
--- a/var/spack/repos/builtin/packages/py-cython/package.py
+++ b/var/spack/repos/builtin/packages/py-cython/package.py
@@ -3,10 +3,14 @@
 class PyCython(Package):
     """The Cython compiler for writing C extensions for the Python language."""
     homepage = "https://pypi.python.org/pypi/cython"
-    url      = "https://pypi.python.org/packages/source/C/Cython/cython-0.22.tar.gz"
+    url      = "https://pypi.python.org/packages/source/C/Cython/Cython-0.22.tar.gz"
 
-    version('0.21.2', 'd21adb870c75680dc857cd05d41046a4')
+    version('0.23.5', '66b62989a67c55af016c916da36e7514')
+    version('0.23.4', '157df1f69bcec6b56fd97e0f2e057f6e')
+
+    # These versions contain illegal Python3 code...
     version('0.22', '1ae25add4ef7b63ee9b4af697300d6b6')
+    version('0.21.2', 'd21adb870c75680dc857cd05d41046a4')
 
     extends('python')
 
diff --git a/var/spack/repos/builtin/packages/py-libxml2/package.py b/var/spack/repos/builtin/packages/py-libxml2/package.py
deleted file mode 100644
index 59005428e4d1c9bcc520b0da5e8a107dee5573d0..0000000000000000000000000000000000000000
--- a/var/spack/repos/builtin/packages/py-libxml2/package.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from spack import *
-
-class PyLibxml2(Package):
-    """A Python wrapper around libxml2."""
-    homepage = "https://xmlsoft.org/python.html"
-    url      = "ftp://xmlsoft.org/libxml2/python/libxml2-python-2.6.21.tar.gz"
-
-    version('2.6.21', '229dd2b3d110a77defeeaa73af83f7f3')
-
-    extends('python')
-    depends_on('libxml2')
-    depends_on('libxslt')
-
-    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
new file mode 100644
index 0000000000000000000000000000000000000000..984b4196b1989c8f3853cf9b0f35260c26ec4954
--- /dev/null
+++ b/var/spack/repos/builtin/packages/py-tuiview/package.py
@@ -0,0 +1,19 @@
+from spack import *
+
+class PyTuiview(Package):
+    """
+       TuiView is a lightweight raster GIS with powerful raster attribute
+       table manipulation abilities.
+    """
+    homepage = "https://bitbucket.org/chchrsc/tuiview"
+    url      = "https://bitbucket.org/chchrsc/tuiview/get/tuiview-1.1.7.tar.gz"
+
+    version('1.1.7', '4b3b38a820cc239c8ab4a181ac5d4c30')
+
+    extends("python")
+    depends_on("py-pyqt")
+    depends_on("py-numpy")
+    depends_on("gdal")
+
+    def install(self, spec, prefix):
+        python('setup.py', 'install', '--prefix=%s' % prefix)