diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst
index 8a39ee28e2c765fa9c17ba15321ebdcab83f5361..b09c677e0b10b66bd08c9744020054dbf0a7c356 100644
--- a/lib/spack/docs/packaging_guide.rst
+++ b/lib/spack/docs/packaging_guide.rst
@@ -1490,7 +1490,7 @@ Additional hybrid dependency types are (note the lack of quotes):
 
   * **<not specified>**: ``type`` assumed to be ``("build",
     "link")``. This is the common case for compiled language usage.
- 
+
 """""""""""""""""""
 Dependency Formulas
 """""""""""""""""""
@@ -2007,10 +2007,15 @@ The last element of a package is its ``install()`` method.  This is
 where the real work of installation happens, and it's the main part of
 the package you'll need to customize for each piece of software.
 
-.. literalinclude::  ../../../var/spack/repos/builtin/packages/mpfr/package.py
-   :pyobject: Mpfr.install
+.. code-block:: python
    :linenos:
 
+   def install(self, spec prefix):
+       configure('--prefix={0}'.format(prefix))
+
+       make()
+       make('install')
+
 ``install`` takes a ``spec``: a description of how the package should
 be built, and a ``prefix``: the path to the directory where the
 software should be installed.
diff --git a/var/spack/repos/builtin/packages/applewmproto/package.py b/var/spack/repos/builtin/packages/applewmproto/package.py
index 8d7e360bfb05a2ecc2d53358a5d041c3ad14d506..41d7c4c10a9b06d66d3ef89a2e34f4838211a9df 100644
--- a/var/spack/repos/builtin/packages/applewmproto/package.py
+++ b/var/spack/repos/builtin/packages/applewmproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Applewmproto(Package):
+class Applewmproto(AutotoolsPackage):
     """Apple Rootless Window Management Extension.
 
     This extension defines a protcol that allows X window managers
@@ -39,8 +39,3 @@ class Applewmproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/appres/package.py b/var/spack/repos/builtin/packages/appres/package.py
index 47a9c5bb545f3ce6fe3b968f02ed7b4f469b59d5..ff13937a0e69c3ccf5a808ddbf46b775d62008d5 100644
--- a/var/spack/repos/builtin/packages/appres/package.py
+++ b/var/spack/repos/builtin/packages/appres/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Appres(Package):
+class Appres(AutotoolsPackage):
     """The appres program prints the resources seen by an application (or
     subhierarchy of an application) with the specified class and instance
     names.  It can be used to determine which resources a particular
@@ -42,9 +42,3 @@ class Appres(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/asciidoc/package.py b/var/spack/repos/builtin/packages/asciidoc/package.py
index 552030d965fc8119b714a65ec6e86d4aa2a8f3d5..428bb7d645c00354fb56021b456a07c0d4853ccb 100644
--- a/var/spack/repos/builtin/packages/asciidoc/package.py
+++ b/var/spack/repos/builtin/packages/asciidoc/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Asciidoc(Package):
+class Asciidoc(AutotoolsPackage):
     """A presentable text document format for writing articles, UNIX man
     pages and other small to medium sized documents."""
 
@@ -38,9 +38,3 @@ class Asciidoc(Package):
     depends_on('libxslt')
     depends_on('docbook-xml')
     depends_on('docbook-xsl')
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/atk/package.py b/var/spack/repos/builtin/packages/atk/package.py
index 0a7d48774d8a06e6f0a840526bd1cf10bab0e4c8..1375f2d0f92e7093d139b462b69057c07d83e575 100644
--- a/var/spack/repos/builtin/packages/atk/package.py
+++ b/var/spack/repos/builtin/packages/atk/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Atk(Package):
+class Atk(AutotoolsPackage):
     """ATK provides the set of accessibility interfaces that are
        implemented by other toolkits and applications. Using the ATK
        interfaces, accessibility tools have full access to view and
@@ -43,8 +43,3 @@ def url_for_version(self, version):
         """Handle atk's version-based custom URLs."""
         url = 'http://ftp.gnome.org/pub/gnome/sources/atk'
         return url + '/%s/atk-%s.tar.xz' % (version.up_to(2), version)
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/bdftopcf/package.py b/var/spack/repos/builtin/packages/bdftopcf/package.py
index 095f0c1bd4c3ec61ce0d20bf02ca3a92443056a4..b6ddd04418107a90ab1ba62c728ac2772335ec98 100644
--- a/var/spack/repos/builtin/packages/bdftopcf/package.py
+++ b/var/spack/repos/builtin/packages/bdftopcf/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Bdftopcf(Package):
+class Bdftopcf(AutotoolsPackage):
     """bdftopcf is a font compiler for the X server and font server.  Fonts
     in Portable Compiled Format can be read by any architecture, although
     the file is structured to allow one particular architecture to read
@@ -42,9 +42,3 @@ class Bdftopcf(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/beforelight/package.py b/var/spack/repos/builtin/packages/beforelight/package.py
index 37a91f56148ff45f2317584c083aef8a9b38b79e..3c0cbcf3cb9013ef3469eb1fb95e0273218a0eef 100644
--- a/var/spack/repos/builtin/packages/beforelight/package.py
+++ b/var/spack/repos/builtin/packages/beforelight/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Beforelight(Package):
+class Beforelight(AutotoolsPackage):
     """The beforelight program is a sample implementation of a screen saver
     for X servers supporting the MIT-SCREEN-SAVER extension.   It is only
     recommended for use as a code sample, as it does not include features
@@ -42,9 +42,3 @@ class Beforelight(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/bertini/package.py b/var/spack/repos/builtin/packages/bertini/package.py
index 7dd17a062e51c7eee50c44506292853681f1c935..c6d169fbcc7f9fcff8575f5cac6f0870286aadf8 100644
--- a/var/spack/repos/builtin/packages/bertini/package.py
+++ b/var/spack/repos/builtin/packages/bertini/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Bertini(Package):
+class Bertini(AutotoolsPackage):
     """Bertini is a general-purpose solver, written in C, that was created
     for research about polynomial continuation. It solves for the numerical
     solution of systems of polynomial equations using homotopy continuation."""
@@ -42,9 +42,3 @@ class Bertini(Package):
     depends_on('gmp')
     depends_on('mpfr')
     depends_on('mpi', when='+mpi')
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/bigreqsproto/package.py b/var/spack/repos/builtin/packages/bigreqsproto/package.py
index 61fd9c512168a360c11e262cb9bbca814e1c548a..f2542d921e2630793f1df8fb9a006dc2cd0dbed9 100644
--- a/var/spack/repos/builtin/packages/bigreqsproto/package.py
+++ b/var/spack/repos/builtin/packages/bigreqsproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Bigreqsproto(Package):
+class Bigreqsproto(AutotoolsPackage):
     """Big Requests Extension.
 
     This extension defines a protocol to enable the use of requests
@@ -38,8 +38,3 @@ class Bigreqsproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/bison/package.py b/var/spack/repos/builtin/packages/bison/package.py
index 70795f05ccf6b7deb07d3becdead44fa2e282e06..cc2d10dea11c2082e93ce4e4be2f3c7722fef958 100644
--- a/var/spack/repos/builtin/packages/bison/package.py
+++ b/var/spack/repos/builtin/packages/bison/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Bison(Package):
+class Bison(AutotoolsPackage):
     """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."""
@@ -36,9 +36,3 @@ class Bison(Package):
     version('3.0.4', 'a586e11cd4aff49c3ff6d3b6a4c9ccf8')
 
     depends_on("m4", type='build')
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/bitmap/package.py b/var/spack/repos/builtin/packages/bitmap/package.py
index 55fdacefd5a990a2300974c731e972683fdb9f62..80bc496013f7751519619159436a5b30806597c4 100644
--- a/var/spack/repos/builtin/packages/bitmap/package.py
+++ b/var/spack/repos/builtin/packages/bitmap/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Bitmap(Package):
+class Bitmap(AutotoolsPackage):
     """bitmap, bmtoa, atobm - X bitmap (XBM) editor and converter utilities."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/bitmap"
@@ -43,9 +43,3 @@ class Bitmap(Package):
     depends_on('xproto@7.0.25:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/cddlib/package.py b/var/spack/repos/builtin/packages/cddlib/package.py
index ced5f46d1f417d6fe9723a0b0abe1f36de35af2a..50dc5ad472446c5f20ad1a0d952a1861514b8dd7 100644
--- a/var/spack/repos/builtin/packages/cddlib/package.py
+++ b/var/spack/repos/builtin/packages/cddlib/package.py
@@ -26,7 +26,7 @@
 from spack import *
 
 
-class Cddlib(Package):
+class Cddlib(AutotoolsPackage):
     """The C-library cddlib is a C implementation of the Double Description
     Method of Motzkin et al. for generating all vertices (i.e. extreme points)
     and extreme rays of a general convex polyhedron in R^d given by a system
@@ -51,8 +51,3 @@ def url_for_version(self, version):
 
     depends_on("gmp")
     depends_on("libtool", type="build")
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/cfitsio/package.py b/var/spack/repos/builtin/packages/cfitsio/package.py
index 79af31ae216cb947fc94ff5dd36558e8a984fbd6..6853c33119cf149f4c3505895cd348b4c0b2ca5b 100644
--- a/var/spack/repos/builtin/packages/cfitsio/package.py
+++ b/var/spack/repos/builtin/packages/cfitsio/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Cfitsio(Package):
+class Cfitsio(AutotoolsPackage):
     """CFITSIO is a library of C and Fortran subroutines for reading and writing
     data files in FITS (Flexible Image Transport System) data format.
     """
@@ -37,8 +37,3 @@ class Cfitsio(Package):
     def url_for_version(self, version):
         url = 'ftp://heasarc.gsfc.nasa.gov/software/fitsio/c/cfitsio{0}.tar.gz'
         return url.format(version.joined)
-
-    def install(self, spec, prefix):
-        configure('--prefix=' + prefix)
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/cityhash/package.py b/var/spack/repos/builtin/packages/cityhash/package.py
index 85d948cc57a278bc971c820226e8fe6ac20b0f11..b98f39a33609c23565ca6dabb50536fd8ae8c3a0 100644
--- a/var/spack/repos/builtin/packages/cityhash/package.py
+++ b/var/spack/repos/builtin/packages/cityhash/package.py
@@ -23,10 +23,9 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 ##############################################################################
 from spack import *
-from spack.util.environment import *
 
 
-class Cityhash(Package):
+class Cityhash(AutotoolsPackage):
     """CityHash, a family of hash functions for strings."""
 
     homepage = "https://github.com/google/cityhash"
@@ -37,8 +36,5 @@ class Cityhash(Package):
     version('master', branch='master',
             git='https://github.com/google/cityhash.git')
 
-    def install(self, spec, prefix):
-        configure('--enable-sse4.2', '--prefix=%s' % prefix)
-
-        make()
-        make("install")
+    def configure_args(self):
+        return ['--enable-sse4.2']
diff --git a/var/spack/repos/builtin/packages/compiz/package.py b/var/spack/repos/builtin/packages/compiz/package.py
index ec21f5b4f2f91d27416e427f18d5945124f7344f..92820db10df876b2b0f23a8c4f9837f03ec29671 100644
--- a/var/spack/repos/builtin/packages/compiz/package.py
+++ b/var/spack/repos/builtin/packages/compiz/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Compiz(Package):
+class Compiz(AutotoolsPackage):
     """compiz - OpenGL window and compositing manager.
 
     Compiz is an OpenGL compositing manager that use
@@ -55,9 +55,3 @@ class Compiz(Package):
     depends_on('libpng')
     depends_on('glib')
     depends_on('gconf')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/compositeproto/package.py b/var/spack/repos/builtin/packages/compositeproto/package.py
index 1b3fbda0af4ef6f5f54730505f071bdefc88066d..3d445bd7e8c3e2941d3660923a33354fabbf02a7 100644
--- a/var/spack/repos/builtin/packages/compositeproto/package.py
+++ b/var/spack/repos/builtin/packages/compositeproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Compositeproto(Package):
+class Compositeproto(AutotoolsPackage):
     """Composite Extension.
 
     This package contains header files and documentation for the composite
@@ -38,8 +38,3 @@ class Compositeproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/constype/package.py b/var/spack/repos/builtin/packages/constype/package.py
index dcf88fdd55c0da000386c69a0438da8cc063fed8..3a62e89727247db81fea746b0a6c48eab9c14c70 100644
--- a/var/spack/repos/builtin/packages/constype/package.py
+++ b/var/spack/repos/builtin/packages/constype/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Constype(Package):
+class Constype(AutotoolsPackage):
     """constype prints on the standard output the Sun code for the type of
     display that the specified device is.
 
@@ -39,9 +39,3 @@ class Constype(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/coreutils/package.py b/var/spack/repos/builtin/packages/coreutils/package.py
index 94cfa1134104ed6ce03cbd6b03325f1152c5423c..a3c77dda9ce1ddb2f187aecf0128b7f47721806d 100644
--- a/var/spack/repos/builtin/packages/coreutils/package.py
+++ b/var/spack/repos/builtin/packages/coreutils/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Coreutils(Package):
+class Coreutils(AutotoolsPackage):
     """The GNU Core Utilities are the basic file, shell and text
        manipulation utilities of the GNU operating system.  These are
        the core utilities which are expected to exist on every
@@ -35,8 +35,3 @@ class Coreutils(Package):
     url      = "http://ftp.gnu.org/gnu/coreutils/coreutils-8.23.tar.xz"
 
     version('8.23', 'abed135279f87ad6762ce57ff6d89c41')
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/czmq/package.py b/var/spack/repos/builtin/packages/czmq/package.py
index ef6374619bc9d96b0086483088fc9666efca2395..f7791967b3674262b0516fdfe048638ed09de26f 100644
--- a/var/spack/repos/builtin/packages/czmq/package.py
+++ b/var/spack/repos/builtin/packages/czmq/package.py
@@ -23,10 +23,9 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 ##############################################################################
 from spack import *
-import os
 
 
-class Czmq(Package):
+class Czmq(AutotoolsPackage):
     """ A C interface to the ZMQ library """
     homepage = "http://czmq.zeromq.org"
     url      = "https://github.com/zeromq/czmq/archive/v3.0.2.tar.gz"
@@ -40,7 +39,7 @@ class Czmq(Package):
     depends_on('pkg-config', type='build')
     depends_on('zeromq')
 
-    def install(self, spec, prefix):
+    def autoreconf(self, spec, prefix):
         # Work around autogen.sh oddities
         # bash = which("bash")
         # bash("./autogen.sh")
@@ -48,14 +47,10 @@ def install(self, spec, prefix):
         autoreconf = which("autoreconf")
         autoreconf("--install", "--verbose", "--force",
                    "-I", "config",
-                   "-I", os.path.join(spec['pkg-config'].prefix,
-                                      "share", "aclocal"),
-                   "-I", os.path.join(spec['automake'].prefix,
-                                      "share", "aclocal"),
-                   "-I", os.path.join(spec['libtool'].prefix,
-                                      "share", "aclocal"),
+                   "-I", join_path(spec['pkg-config'].prefix,
+                                   "share", "aclocal"),
+                   "-I", join_path(spec['automake'].prefix,
+                                   "share", "aclocal"),
+                   "-I", join_path(spec['libtool'].prefix,
+                                   "share", "aclocal"),
                    )
-        configure("--prefix=%s" % prefix)
-
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/damageproto/package.py b/var/spack/repos/builtin/packages/damageproto/package.py
index 84e0fac3110d81cc16275e8ca60ef131d8507865..22eeeeddcb872592b1b641b47910385cecb86afa 100644
--- a/var/spack/repos/builtin/packages/damageproto/package.py
+++ b/var/spack/repos/builtin/packages/damageproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Damageproto(Package):
+class Damageproto(AutotoolsPackage):
     """X Damage Extension.
 
     This package contains header files and documentation for the X Damage
@@ -38,8 +38,3 @@ class Damageproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/datamash/package.py b/var/spack/repos/builtin/packages/datamash/package.py
index 85adeca996e60c49d7252974d3e23e9e0c8732ae..4cf7d24ef18ddcfadd1576d719cb2b438df9ac77 100644
--- a/var/spack/repos/builtin/packages/datamash/package.py
+++ b/var/spack/repos/builtin/packages/datamash/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Datamash(Package):
+class Datamash(AutotoolsPackage):
     """GNU datamash is a command-line program which performs basic numeric,
     textual and statistical operations on input textual data files.
     """
@@ -37,8 +37,3 @@ class Datamash(Package):
     version('1.0.7', '9f317bab07454032ba9c068e7f17b04b')
     version('1.0.6', 'ff26fdef0f343cb695cf1853e14a1a5b')
     version('1.0.5', '9a29549dc7feca49fdc5fab696614e11')
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/dmxproto/package.py b/var/spack/repos/builtin/packages/dmxproto/package.py
index 34213bba5f55e3d53f8c5790a79758e43681a8c8..7aa025119111bdddd27c1d7dc9fb0af9f180aff8 100644
--- a/var/spack/repos/builtin/packages/dmxproto/package.py
+++ b/var/spack/repos/builtin/packages/dmxproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Dmxproto(Package):
+class Dmxproto(AutotoolsPackage):
     """Distributed Multihead X (DMX) Extension.
 
     This extension defines a protocol for clients to access a front-end proxy
@@ -39,8 +39,3 @@ class Dmxproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/dri2proto/package.py b/var/spack/repos/builtin/packages/dri2proto/package.py
index d05e7ea2316512d76f6e2fb6696407d93b9a1f0a..4c906013b4af67c4af7bb999531fe07183683ffc 100644
--- a/var/spack/repos/builtin/packages/dri2proto/package.py
+++ b/var/spack/repos/builtin/packages/dri2proto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Dri2proto(Package):
+class Dri2proto(AutotoolsPackage):
     """Direct Rendering Infrastructure 2 Extension.
 
     This extension defines a protocol to securely allow user applications to
@@ -39,8 +39,3 @@ class Dri2proto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/dri3proto/package.py b/var/spack/repos/builtin/packages/dri3proto/package.py
index cd2594d5da6b48404aefe5e0c0a0b62cf2985ea5..be8b521aae8c97a6c54c0a7a46c9ea0a49febc2e 100644
--- a/var/spack/repos/builtin/packages/dri3proto/package.py
+++ b/var/spack/repos/builtin/packages/dri3proto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Dri3proto(Package):
+class Dri3proto(AutotoolsPackage):
     """Direct Rendering Infrastructure 3 Extension.
 
     This extension defines a protocol to securely allow user applications to
@@ -39,8 +39,3 @@ class Dri3proto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/editres/package.py b/var/spack/repos/builtin/packages/editres/package.py
index 52ad33b1334d482a32be77ab5afca931a7ba36dc..d1823ec6fdf7dbf35f461a604ad1a88602ceaffa 100644
--- a/var/spack/repos/builtin/packages/editres/package.py
+++ b/var/spack/repos/builtin/packages/editres/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Editres(Package):
+class Editres(AutotoolsPackage):
     """Dynamic resource editor for X Toolkit applications."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/editres"
@@ -40,9 +40,3 @@ class Editres(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/elfutils/package.py b/var/spack/repos/builtin/packages/elfutils/package.py
index ef8c2433c95e2aef7f8efb827c8efc2383e089b9..bdc858e121eae7cf6d49b27765f5eabefcc4a263 100644
--- a/var/spack/repos/builtin/packages/elfutils/package.py
+++ b/var/spack/repos/builtin/packages/elfutils/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Elfutils(Package):
+class Elfutils(AutotoolsPackage):
     """elfutils is a collection of various binary tools such as
     eu-objdump, eu-readelf, and other utilities that allow you to
     inspect and manipulate ELF files. Refer to Table 5.Tools Included
@@ -41,10 +41,9 @@ class Elfutils(Package):
 
     provides('elf')
 
-    def install(self, spec, prefix):
+    def autoreconf(self, spec, prefix):
         autoreconf = which('autoreconf')
         autoreconf('-if')
 
-        configure('--prefix=%s' % prefix, '--enable-maintainer-mode')
-        make()
-        make("install")
+    def configure_args(self):
+        return ['--enable-maintainer-mode']
diff --git a/var/spack/repos/builtin/packages/emacs/package.py b/var/spack/repos/builtin/packages/emacs/package.py
index 1f9caee24c2119a366d75d8fa722da20484dd903..0075c397b6424b82b084b08205398702e3cf9cc4 100644
--- a/var/spack/repos/builtin/packages/emacs/package.py
+++ b/var/spack/repos/builtin/packages/emacs/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Emacs(Package):
+class Emacs(AutotoolsPackage):
     """The Emacs programmable text editor."""
 
     homepage = "https://www.gnu.org/software/emacs"
@@ -47,7 +47,7 @@ class Emacs(Package):
     depends_on('libxaw', when='+X toolkit=athena')
     depends_on('gtkplus+X', when='+X toolkit=gtk')
 
-    def install(self, spec, prefix):
+    def configure_args(self):
         args = []
         toolkit = spec.variants['toolkit'].value
         if '+X' in spec:
@@ -61,7 +61,4 @@ def install(self, spec, prefix):
         else:
             args = ['--without-x']
 
-        configure('--prefix={0}'.format(prefix), *args)
-
-        make()
-        make("install")
+        return args
diff --git a/var/spack/repos/builtin/packages/evieext/package.py b/var/spack/repos/builtin/packages/evieext/package.py
index afc0245f506c5d8422331a04a63314e845c3ac12..8814ae31c00d6188621bd33526c63c610d24f9f2 100644
--- a/var/spack/repos/builtin/packages/evieext/package.py
+++ b/var/spack/repos/builtin/packages/evieext/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Evieext(Package):
+class Evieext(AutotoolsPackage):
     """Extended Visual Information Extension (XEVIE).
 
     This extension defines a protocol for a client to determine information
@@ -38,8 +38,3 @@ class Evieext(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/exuberant-ctags/package.py b/var/spack/repos/builtin/packages/exuberant-ctags/package.py
index 10be30ab8bf2701d08f202b43897583aa41df812..5d1c1eafc6a29b46b4ccc6fed6323ac89b4cfc82 100644
--- a/var/spack/repos/builtin/packages/exuberant-ctags/package.py
+++ b/var/spack/repos/builtin/packages/exuberant-ctags/package.py
@@ -25,15 +25,9 @@
 from spack import *
 
 
-class ExuberantCtags(Package):
+class ExuberantCtags(AutotoolsPackage):
     """The canonical ctags generator"""
     homepage = "ctags.sourceforge.net"
     url      = "http://downloads.sourceforge.net/project/ctags/ctags/5.8/ctags-5.8.tar.gz"
 
     version('5.8', 'c00f82ecdcc357434731913e5b48630d')
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/fastx-toolkit/package.py b/var/spack/repos/builtin/packages/fastx-toolkit/package.py
index 04b4d24b39c78d5ce63aa2cd84d286bdff9bf4d7..fed54b9b366847ac25a9f84bf1b51c3f1aaffd19 100644
--- a/var/spack/repos/builtin/packages/fastx-toolkit/package.py
+++ b/var/spack/repos/builtin/packages/fastx-toolkit/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class FastxToolkit(Package):
+class FastxToolkit(AutotoolsPackage):
     """The FASTX-Toolkit is a collection of command line tools for
        Short-Reads FASTA/FASTQ files preprocessing."""
 
@@ -35,9 +35,3 @@ class FastxToolkit(Package):
     version('0.0.14', 'bf1993c898626bb147de3d6695c20b40')
 
     depends_on('libgtextutils')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/fish/package.py b/var/spack/repos/builtin/packages/fish/package.py
index fb784b7571a6c4dc56ba12cbe211a7ab4d91fa57..f0dfac70c83d488a98b2f529e7467992bf4efb91 100644
--- a/var/spack/repos/builtin/packages/fish/package.py
+++ b/var/spack/repos/builtin/packages/fish/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Fish(Package):
+class Fish(AutotoolsPackage):
     """fish is a smart and user-friendly command line shell for OS X, Linux, and
     the rest of the family.
     """
@@ -35,9 +35,3 @@ class Fish(Package):
     list_url = "http://fishshell.com/"
 
     version('2.2.0', 'a76339fd14ce2ec229283c53e805faac48c3e99d9e3ede9d82c0554acfc7b77a')
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/fixesproto/package.py b/var/spack/repos/builtin/packages/fixesproto/package.py
index 64852b40e2939e94bd124c798c471a9566e9064a..934848727fbcb0bee06f1bfd2a6cd9a9e299e45f 100644
--- a/var/spack/repos/builtin/packages/fixesproto/package.py
+++ b/var/spack/repos/builtin/packages/fixesproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Fixesproto(Package):
+class Fixesproto(AutotoolsPackage):
     """X Fixes Extension.
 
     The extension makes changes to many areas of the protocol to resolve
@@ -39,8 +39,3 @@ class Fixesproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/font-util/package.py b/var/spack/repos/builtin/packages/font-util/package.py
index 0b310117c673a3abcf51c3e84adedd452c726cf2..03a466d00aa8cbe828ed2c54854f3331e40a42f5 100644
--- a/var/spack/repos/builtin/packages/font-util/package.py
+++ b/var/spack/repos/builtin/packages/font-util/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class FontUtil(Package):
+class FontUtil(AutotoolsPackage):
     """X.Org font package creation/installation utilities."""
 
     homepage = "http://cgit.freedesktop.org/xorg/font/util"
@@ -35,9 +35,3 @@ class FontUtil(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/fontcacheproto/package.py b/var/spack/repos/builtin/packages/fontcacheproto/package.py
index 77feb8757384eaef05982f2667c12444d795bbf2..f793aba9cf1120131b2ba1d45d0fa1ff2e5e51c8 100644
--- a/var/spack/repos/builtin/packages/fontcacheproto/package.py
+++ b/var/spack/repos/builtin/packages/fontcacheproto/package.py
@@ -25,15 +25,10 @@
 from spack import *
 
 
-class Fontcacheproto(Package):
+class Fontcacheproto(AutotoolsPackage):
     """X.org FontcacheProto protocol headers."""
 
     homepage = "http://cgit.freedesktop.org/xorg/proto/fontcacheproto"
     url      = "https://www.x.org/archive/individual/proto/fontcacheproto-0.1.3.tar.gz"
 
     version('0.1.3', '5a91ab914ffbfbc856e6fcde52e6f3e3')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/fontsproto/package.py b/var/spack/repos/builtin/packages/fontsproto/package.py
index c3771e18fae9c3d8a4e85f9f8542a4d78be881a2..03e825c2f7523b52296eb071b2462a140879e7ce 100644
--- a/var/spack/repos/builtin/packages/fontsproto/package.py
+++ b/var/spack/repos/builtin/packages/fontsproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Fontsproto(Package):
+class Fontsproto(AutotoolsPackage):
     """X Fonts Extension."""
 
     homepage = "http://cgit.freedesktop.org/xorg/proto/fontsproto"
@@ -35,8 +35,3 @@ class Fontsproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/fonttosfnt/package.py b/var/spack/repos/builtin/packages/fonttosfnt/package.py
index 016cab1ac86f9fc26f6695ec349b43fa6eb5070d..e8cc3a6f6f44fd430d5ed3244fb394ab7a60cbde 100644
--- a/var/spack/repos/builtin/packages/fonttosfnt/package.py
+++ b/var/spack/repos/builtin/packages/fonttosfnt/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Fonttosfnt(Package):
+class Fonttosfnt(AutotoolsPackage):
     """Wrap a bitmap font in a sfnt (TrueType) wrapper."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/fonttosfnt"
@@ -39,9 +39,3 @@ class Fonttosfnt(Package):
     depends_on('xproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/fslsfonts/package.py b/var/spack/repos/builtin/packages/fslsfonts/package.py
index 6e46bd6b5aa471441008836001f4da0cc969ea34..2becf5a346e0892464161effdc44e6eeed63a695 100644
--- a/var/spack/repos/builtin/packages/fslsfonts/package.py
+++ b/var/spack/repos/builtin/packages/fslsfonts/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Fslsfonts(Package):
+class Fslsfonts(AutotoolsPackage):
     """fslsfonts produces a list of fonts served by an X font server."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/fslsfonts"
@@ -38,9 +38,3 @@ class Fslsfonts(Package):
     depends_on('xproto@7.0.25:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/fstobdf/package.py b/var/spack/repos/builtin/packages/fstobdf/package.py
index 6358e33d2a761397edbe020f84f190d131d9fdce..7b2d433ef2a4752c22ca7f94162e6560db08a259 100644
--- a/var/spack/repos/builtin/packages/fstobdf/package.py
+++ b/var/spack/repos/builtin/packages/fstobdf/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Fstobdf(Package):
+class Fstobdf(AutotoolsPackage):
     """The fstobdf program reads a font from a font server and prints a BDF
     file on the standard output that may be used to recreate the font.
     This is useful in testing servers, debugging font metrics, and
@@ -42,9 +42,3 @@ class Fstobdf(Package):
     depends_on('xproto@7.0.25:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/gccmakedep/package.py b/var/spack/repos/builtin/packages/gccmakedep/package.py
index ed2530d89e1b984519b62a68a1b3d24a8a3a726d..1e082bb0505125e9fdbe373a035edb989b938f44 100644
--- a/var/spack/repos/builtin/packages/gccmakedep/package.py
+++ b/var/spack/repos/builtin/packages/gccmakedep/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Gccmakedep(Package):
+class Gccmakedep(AutotoolsPackage):
     """X.org gccmakedep utilities."""
 
     homepage = "https://cgit.freedesktop.org/xorg/util/gccmakedep/"
@@ -34,9 +34,3 @@ class Gccmakedep(Package):
     version('1.0.3', '127ddb6131eb4a56fdf6644a63ade788')
 
     depends_on('pkg-config@0.9.0:', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/gconf/package.py b/var/spack/repos/builtin/packages/gconf/package.py
index 3b3abc71ed854bea78a74751e7328a7998c236b3..80bc54a603098ec002900729f3e0ab2b23b0f961 100644
--- a/var/spack/repos/builtin/packages/gconf/package.py
+++ b/var/spack/repos/builtin/packages/gconf/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Gconf(Package):
+class Gconf(AutotoolsPackage):
     """GConf is a system for storing application preferences."""
 
     homepage = "https://projects.gnome.org/gconf/"
@@ -43,9 +43,3 @@ class Gconf(Package):
     # gobject-2.0 >= 2.7.0
     # dbus-1 >= 1.0.0
     # dbus-glib-1 >= 0.74
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py
index 4d39086b0627d2925f23c657733c2be0dd15f680..115974472113d900e878db0b49f4744fd3cfb2a2 100644
--- a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py
+++ b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class GdkPixbuf(Package):
+class GdkPixbuf(AutotoolsPackage):
     """The Gdk Pixbuf is a toolkit for image loading and pixel buffer
        manipulation. It is used by GTK+ 2 and GTK+ 3 to load and
        manipulate images. In the past it was distributed as part of
@@ -42,8 +42,3 @@ class GdkPixbuf(Package):
     depends_on("jpeg")
     depends_on("libpng")
     depends_on("libtiff")
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/giflib/package.py b/var/spack/repos/builtin/packages/giflib/package.py
index 7082384b9b8673e7e110c8954bbf4b48f6e38eac..feca5b046bb612c0d03be5d0f6b6146ec89d44bd 100644
--- a/var/spack/repos/builtin/packages/giflib/package.py
+++ b/var/spack/repos/builtin/packages/giflib/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Giflib(Package):
+class Giflib(AutotoolsPackage):
     """The GIFLIB project maintains the giflib service library, which has
     been pulling images out of GIFs since 1989."""
 
@@ -33,9 +33,3 @@ class Giflib(Package):
     url      = "https://downloads.sourceforge.net/project/giflib/giflib-5.1.4.tar.bz2"
 
     version('5.1.4', '2c171ced93c0e83bb09e6ccad8e3ba2b')
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/glib/package.py b/var/spack/repos/builtin/packages/glib/package.py
index 4d8085baf2a77b084e89dc3d3f93e6c7f8ebb8b5..a4d8c289d73d8a69c2d62bc1d3a085be86d436b1 100644
--- a/var/spack/repos/builtin/packages/glib/package.py
+++ b/var/spack/repos/builtin/packages/glib/package.py
@@ -23,10 +23,9 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 ##############################################################################
 from spack import *
-import os
 
 
-class Glib(Package):
+class Glib(AutotoolsPackage):
     """The GLib package contains a low-level libraries useful for
        providing data structure handling for C, portability wrappers
        and interfaces for such runtime functionality as an event loop,
@@ -59,17 +58,17 @@ def url_for_version(self, version):
         url = 'http://ftp.gnome.org/pub/gnome/sources/glib'
         return url + '/%s/glib-%s.tar.xz' % (version.up_to(2), version)
 
-    def install(self, spec, prefix):
+    def autoreconf(self, spec, prefix):
         autoreconf = which("autoreconf")
         autoreconf("--install", "--verbose", "--force",
                    "-I", "config",
-                   "-I", os.path.join(spec['pkg-config'].prefix,
-                                      "share", "aclocal"),
-                   "-I", os.path.join(spec['automake'].prefix,
-                                      "share", "aclocal"),
-                   "-I", os.path.join(spec['libtool'].prefix,
-                                      "share", "aclocal"),
+                   "-I", join_path(spec['pkg-config'].prefix,
+                                   "share", "aclocal"),
+                   "-I", join_path(spec['automake'].prefix,
+                                   "share", "aclocal"),
+                   "-I", join_path(spec['libtool'].prefix,
+                                   "share", "aclocal"),
                    )
-        configure("--prefix=%s" % prefix)
-        make()
+
+    def install(self, spec, prefix):
         make("install", parallel=False)
diff --git a/var/spack/repos/builtin/packages/globus-toolkit/package.py b/var/spack/repos/builtin/packages/globus-toolkit/package.py
index 5cec13a5af0b6388693c7147843dbb3e3efedb2b..5cdc0689a776ecf0a916a968557d614ba3e54409 100644
--- a/var/spack/repos/builtin/packages/globus-toolkit/package.py
+++ b/var/spack/repos/builtin/packages/globus-toolkit/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class GlobusToolkit(Package):
+class GlobusToolkit(AutotoolsPackage):
     """The Globus Toolkit is an open source software toolkit used for building
        grids"""
 
@@ -33,8 +33,3 @@ class GlobusToolkit(Package):
     url      = "http://toolkit.globus.org/ftppub/gt6/installers/src/globus_toolkit-6.0.1470089956.tar.gz"
 
     version('6.0.1470089956', 'b77fe3cc5a5844df995688b0e630d077')
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/glog/package.py b/var/spack/repos/builtin/packages/glog/package.py
index 14f042732b8da9533c2904ddfc5a236745f7a5ec..11d679c7ffe093ec581071c52947d1b32a4ed2a3 100644
--- a/var/spack/repos/builtin/packages/glog/package.py
+++ b/var/spack/repos/builtin/packages/glog/package.py
@@ -25,15 +25,10 @@
 from spack import *
 
 
-class Glog(Package):
+class Glog(AutotoolsPackage):
     """C++ implementation of the Google logging module."""
 
     homepage = "https://github.com/google/glog"
     url      = "https://github.com/google/glog/archive/v0.3.3.tar.gz"
 
     version('0.3.3', 'c1f86af27bd9c73186730aa957607ed0')
-
-    def install(self, spec, prefix):
-        configure("--prefix=" + prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/glproto/package.py b/var/spack/repos/builtin/packages/glproto/package.py
index 462e5290676364fe71a20ebb2eae37f61ffb04ce..8a5eaef660defe21778b9b92f5b785d2fb89c081 100644
--- a/var/spack/repos/builtin/packages/glproto/package.py
+++ b/var/spack/repos/builtin/packages/glproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Glproto(Package):
+class Glproto(AutotoolsPackage):
     """OpenGL Extension to the X Window System.
 
     This extension defines a protocol for the client to send 3D rendering
@@ -38,8 +38,3 @@ class Glproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/gnutls/package.py b/var/spack/repos/builtin/packages/gnutls/package.py
index 5f7b0daf9bbecef6b178250e8e547ba310663606..87e83649a4d33f6ff67c7fbe55521cd6974dfe3f 100644
--- a/var/spack/repos/builtin/packages/gnutls/package.py
+++ b/var/spack/repos/builtin/packages/gnutls/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Gnutls(Package):
+class Gnutls(AutotoolsPackage):
     """GnuTLS is a secure communications library implementing the SSL,
        TLS and DTLS protocols and technologies around them. It
        provides a simple C language application programming interface
@@ -40,8 +40,3 @@ class Gnutls(Package):
     version('3.3.9', 'ff61b77e39d09f1140ab5a9cf52c58b6')
 
     depends_on("nettle")
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/gperf/package.py b/var/spack/repos/builtin/packages/gperf/package.py
index 0ae07b33fcb9a62c6c65e192a3df18d4d5629116..e7dffa017a614f05dc8598cc93c37cc49517d51e 100644
--- a/var/spack/repos/builtin/packages/gperf/package.py
+++ b/var/spack/repos/builtin/packages/gperf/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Gperf(Package):
+class Gperf(AutotoolsPackage):
     """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
@@ -38,9 +38,4 @@ class Gperf(Package):
 
     version('3.0.4', 'c1f1db32fb6598d6a93e6e88796a8632')
 
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        # make('check')  # fails tests
-        make('install')
+    # NOTE: `make check` is known to fail tests
diff --git a/var/spack/repos/builtin/packages/gperftools/package.py b/var/spack/repos/builtin/packages/gperftools/package.py
index c6ca6c8057d870caecb53e0fb2d941261853a87b..300e0ae7659996dc7895971613dfe89a97b3e5b9 100644
--- a/var/spack/repos/builtin/packages/gperftools/package.py
+++ b/var/spack/repos/builtin/packages/gperftools/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Gperftools(Package):
+class Gperftools(AutotoolsPackage):
     """Google's fast malloc/free implementation, especially for
        multi-threaded applications.  Contains tcmalloc, heap-checker,
        heap-profiler, and cpu-profiler.
@@ -40,8 +40,3 @@ class Gperftools(Package):
             url="https://googledrive.com/host/0B6NtGsLhIcf7MWxMMF9JdTN3UVk/gperftools-2.3.tar.gz")
 
     depends_on("libunwind")
-
-    def install(self, spec, prefix):
-        configure("--prefix=" + prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/grandr/package.py b/var/spack/repos/builtin/packages/grandr/package.py
index 8097d4fa01c78d538d845972967c431b1533511f..dd56426ef842e5abece583b74c28ab96a7403af7 100644
--- a/var/spack/repos/builtin/packages/grandr/package.py
+++ b/var/spack/repos/builtin/packages/grandr/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Grandr(Package):
+class Grandr(AutotoolsPackage):
     """RandR user interface using GTK+ libraries."""
 
     homepage = "https://cgit.freedesktop.org/xorg/app/grandr"
@@ -36,10 +36,3 @@ class Grandr(Package):
     depends_on('gtkplus@2.0.0:')
     depends_on('gconf')
     depends_on('xrandr@1.2:')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('check')
-        make('install')
diff --git a/var/spack/repos/builtin/packages/gtkplus/package.py b/var/spack/repos/builtin/packages/gtkplus/package.py
index b53b688372ee84d8ea8a2eb3d6a84fb0628a8bf8..b17b1877ec4a3b8cfdd4003154b4ca56b1b34078 100644
--- a/var/spack/repos/builtin/packages/gtkplus/package.py
+++ b/var/spack/repos/builtin/packages/gtkplus/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Gtkplus(Package):
+class Gtkplus(AutotoolsPackage):
     """The GTK+ 2 package contains libraries used for creating graphical user
        interfaces for applications."""
     homepage = "http://www.gtk.org"
@@ -47,8 +47,3 @@ def patch(self):
         # remove disable deprecated flag.
         filter_file(r'CFLAGS="-DGDK_PIXBUF_DISABLE_DEPRECATED $CFLAGS"',
                     '', 'configure', string=True)
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/gts/package.py b/var/spack/repos/builtin/packages/gts/package.py
index 2b3d4dd4f815c0136019f195ecba07d8510f5051..ea9443fb9d5ab0a1f300702a7e7cb8a94856e2be 100644
--- a/var/spack/repos/builtin/packages/gts/package.py
+++ b/var/spack/repos/builtin/packages/gts/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Gts(Package):
+class Gts(AutotoolsPackage):
     """GTS stands for the GNU Triangulated Surface Library.
 
     It is an Open Source Free Software Library intended to provide a set of
@@ -46,8 +46,3 @@ class Gts(Package):
     version('121130', '023ebb6b13b8707534182a3ef0d12908')
 
     depends_on('glib')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/harfbuzz/package.py b/var/spack/repos/builtin/packages/harfbuzz/package.py
index 7c98c2a96a05d95401d084839b5fc03d24a61976..f8d5355f87ed9e5a70024528239d4433e339b339 100644
--- a/var/spack/repos/builtin/packages/harfbuzz/package.py
+++ b/var/spack/repos/builtin/packages/harfbuzz/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Harfbuzz(Package):
+class Harfbuzz(AutotoolsPackage):
     """The Harfbuzz package contains an OpenType text shaping engine."""
     homepage = "http://www.freedesktop.org/wiki/Software/HarfBuzz/"
     url      = "http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-0.9.37.tar.bz2"
@@ -41,8 +41,3 @@ class Harfbuzz(Package):
 
     def patch(self):
         change_sed_delimiter('@', ';', 'src/Makefile.in')
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/heppdt/package.py b/var/spack/repos/builtin/packages/heppdt/package.py
index 54c846ae33527320678a8624ec68f1633d5156cc..65946fb10285fab34bfc5a3c4c6db4d99786138e 100644
--- a/var/spack/repos/builtin/packages/heppdt/package.py
+++ b/var/spack/repos/builtin/packages/heppdt/package.py
@@ -26,7 +26,7 @@
 from spack import *
 
 
-class Heppdt(Package):
+class Heppdt(AutotoolsPackage):
     """The HepPID library contains translation methods for particle ID's
     to and from various Monte Carlo generators and the PDG standard
     numbering scheme. We realize that the generators adhere closely
@@ -40,9 +40,3 @@ class Heppdt(Package):
     version('3.03.01', 'd411f3bfdf9c4350d802241ba2629cc2')
     version('3.03.00', 'cd84d0a0454be982dcd8c285e060a7b3')
     version('2.06.01', '5688b4bdbd84b48ed5dd2545a3dc33c0')
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/hsakmt/package.py b/var/spack/repos/builtin/packages/hsakmt/package.py
index 0daad4afedf0e36b9d80b76463f26eb6d5ac57b6..534d5e4c84cd76006f8e7fe5e2732d9085153c57 100644
--- a/var/spack/repos/builtin/packages/hsakmt/package.py
+++ b/var/spack/repos/builtin/packages/hsakmt/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Hsakmt(Package):
+class Hsakmt(AutotoolsPackage):
     """hsakmt is a thunk library that provides a userspace interface to amdkfd
     (AMD's HSA Linux kernel driver). It is the HSA equivalent of libdrm."""
 
@@ -33,9 +33,3 @@ class Hsakmt(Package):
     url      = "https://www.x.org/archive/individual/lib/hsakmt-1.0.0.tar.gz"
 
     version('1.0.0', '9beb20104e505300daf541266c4c3c3d')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/htop/package.py b/var/spack/repos/builtin/packages/htop/package.py
index 3df0a353567c92336a7f78a3b1af9d450c6b7ece..7a7cc418ce2fc53fc489eabe2118c41075e804e9 100644
--- a/var/spack/repos/builtin/packages/htop/package.py
+++ b/var/spack/repos/builtin/packages/htop/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Htop(Package):
+class Htop(AutotoolsPackage):
     """htop is an interactive text-mode process viewer for Unix systems."""
 
     homepage = "https://github.com/hishamhm/htop"
@@ -34,8 +34,3 @@ class Htop(Package):
     version('2.0.2', '7d354d904bad591a931ad57e99fea84a')
 
     depends_on('ncurses')
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/htslib/package.py b/var/spack/repos/builtin/packages/htslib/package.py
index 1a8b8fd2f5e962937c436b1bd6b919b094c45fc4..77829e71b93acae3b6c59d42ae1ad4688bb70fda 100644
--- a/var/spack/repos/builtin/packages/htslib/package.py
+++ b/var/spack/repos/builtin/packages/htslib/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Htslib(Package):
+class Htslib(AutotoolsPackage):
     """C library for high-throughput sequencing data formats."""
 
     homepage = "https://github.com/samtools/htslib"
@@ -34,8 +34,3 @@ class Htslib(Package):
     version('1.3.1', '16d78f90b72f29971b042e8da8be6843')
 
     depends_on('zlib')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/hwloc/package.py b/var/spack/repos/builtin/packages/hwloc/package.py
index 5d25b6dab9c166b7dd858229eedd0797016b4ce3..68c92b3aff5903edc2391fc30ec148eac6750d1d 100644
--- a/var/spack/repos/builtin/packages/hwloc/package.py
+++ b/var/spack/repos/builtin/packages/hwloc/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Hwloc(Package):
+class Hwloc(AutotoolsPackage):
     """The Portable Hardware Locality (hwloc) software package
        provides a portable abstraction (across OS, versions,
        architectures, ...) of the hierarchical topology of modern
@@ -53,9 +53,3 @@ class Hwloc(Package):
 
     def url_for_version(self, version):
         return "http://www.open-mpi.org/software/hwloc/v%s/downloads/hwloc-%s.tar.gz" % (version.up_to(2), version)
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/hydra/package.py b/var/spack/repos/builtin/packages/hydra/package.py
index eee346ba498fc571ef209aa855cc638c8132e18e..4461adae2ef2e186918dfabe131715ff4152e179 100644
--- a/var/spack/repos/builtin/packages/hydra/package.py
+++ b/var/spack/repos/builtin/packages/hydra/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Hydra(Package):
+class Hydra(AutotoolsPackage):
     """Hydra is a process management system for starting parallel jobs.
     Hydra is designed to natively work with existing launcher daemons
     (such as ssh, rsh, fork), as well as natively integrate with resource
@@ -37,9 +37,3 @@ class Hydra(Package):
     list_depth = 2
 
     version('3.2', '4d670916695bf7e3a869cc336a881b39')
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/iceauth/package.py b/var/spack/repos/builtin/packages/iceauth/package.py
index 59c6e0e7b710e6a52f77eb7d4ae4bb5dc5f03c56..6af0d0b4bb3e610fd27c7837276d2e34c1f01780 100644
--- a/var/spack/repos/builtin/packages/iceauth/package.py
+++ b/var/spack/repos/builtin/packages/iceauth/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Iceauth(Package):
+class Iceauth(AutotoolsPackage):
     """The iceauth program is used to edit and display the authorization
     information used in connecting with ICE.   It operates very much
     like the xauth program for X11 connection authentication records."""
@@ -40,9 +40,3 @@ class Iceauth(Package):
     depends_on('xproto@7.0.22:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/ico/package.py b/var/spack/repos/builtin/packages/ico/package.py
index 5e523575cab28ecec146431463656274546d760b..2163e8566e970eb7b87b222817d3ad50e2b99f5f 100644
--- a/var/spack/repos/builtin/packages/ico/package.py
+++ b/var/spack/repos/builtin/packages/ico/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Ico(Package):
+class Ico(AutotoolsPackage):
     """ico is a simple animation program that may be used for testing various
     X11 operations and extensions.  It displays a wire-frame rotating
     polyhedron, with hidden lines removed, or a solid-fill polyhedron with
@@ -41,9 +41,3 @@ class Ico(Package):
     depends_on('xproto@7.0.22:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/ilmbase/package.py b/var/spack/repos/builtin/packages/ilmbase/package.py
index 873c830623fb8d8129ad28c3065010bb7aa0e34d..7f478f23415b097967e269d64605984c048b1054 100644
--- a/var/spack/repos/builtin/packages/ilmbase/package.py
+++ b/var/spack/repos/builtin/packages/ilmbase/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Ilmbase(Package):
+class Ilmbase(AutotoolsPackage):
     """OpenEXR ILM Base libraries (high dynamic-range image file format)"""
 
     homepage = "http://www.openexr.com/"
@@ -36,7 +36,3 @@ class Ilmbase(Package):
     version('2.0.1', '74c0d0d2873960bd0dc1993f8e03f0ae')
     version('1.0.2', '26c133ee8ca48e1196fbfb3ffe292ab4')
     version('0.9.0', '4df45f8116cb7a013b286caf6da30a2e')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-        make('install')
diff --git a/var/spack/repos/builtin/packages/imake/package.py b/var/spack/repos/builtin/packages/imake/package.py
index 32542b039169e9b46c9a287c9b60b9c5bca88994..b15a019156a906ddb3904b458f68b57278098ade 100644
--- a/var/spack/repos/builtin/packages/imake/package.py
+++ b/var/spack/repos/builtin/packages/imake/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Imake(Package):
+class Imake(AutotoolsPackage):
     """The imake build system."""
 
     homepage = "http://www.snake.net/software/imake-stuff/"
@@ -35,9 +35,3 @@ class Imake(Package):
 
     depends_on('xproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/inputproto/package.py b/var/spack/repos/builtin/packages/inputproto/package.py
index 915986ef6810ea0de145a4fdc8f8d4b1014be98a..220c314ac6043d7ff954dd96ea2137ea1d13315b 100644
--- a/var/spack/repos/builtin/packages/inputproto/package.py
+++ b/var/spack/repos/builtin/packages/inputproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Inputproto(Package):
+class Inputproto(AutotoolsPackage):
     """X Input Extension.
 
     This extension defines a protocol to provide additional input devices
@@ -38,8 +38,3 @@ class Inputproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/intel-gpu-tools/package.py b/var/spack/repos/builtin/packages/intel-gpu-tools/package.py
index 132e29839b2fe4c4a96fac6456a5014e4548f979..f72ebf76e71a24e6fb651facba7bf312a4de3d58 100644
--- a/var/spack/repos/builtin/packages/intel-gpu-tools/package.py
+++ b/var/spack/repos/builtin/packages/intel-gpu-tools/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class IntelGpuTools(Package):
+class IntelGpuTools(AutotoolsPackage):
     """Intel GPU Tools is a collection of tools for development and testing of
     the Intel DRM driver. There are many macro-level test suites that get used
     against the driver, including xtest, rendercheck, piglit, and oglconform,
@@ -58,10 +58,3 @@ class IntelGpuTools(Package):
     # python-docutils
     # x11proto-dri2-dev
     # xutils-dev
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('check')
-        make('install')
diff --git a/var/spack/repos/builtin/packages/itstool/package.py b/var/spack/repos/builtin/packages/itstool/package.py
index b8b2b4459f2d1d49069f8ab5d416e2ca0ee9bff7..c78e7404991cc32c5555d94a2f656560dd139592 100644
--- a/var/spack/repos/builtin/packages/itstool/package.py
+++ b/var/spack/repos/builtin/packages/itstool/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Itstool(Package):
+class Itstool(AutotoolsPackage):
     """ITS Tool allows you to translate your XML documents with PO files, using
        rules from the W3C Internationalization Tag Set (ITS) to determine what
        to translate and how to separate it into PO file messages."""
@@ -37,8 +37,3 @@ class Itstool(Package):
     version('2.0.1', '40935cfb08228488bd45575e5f001a34')
     version('2.0.0', 'd8c702c3e8961db83d04182c2aa4730b')
     version('1.2.0', 'c0925f6869e33af8e7fe56848c129152')
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/jpeg/package.py b/var/spack/repos/builtin/packages/jpeg/package.py
index 594240d9507fcf6e1fb6b5cbe4d789a65aabd3f2..5c45a2889c2524adce3f0aee0fb0326969701a1d 100644
--- a/var/spack/repos/builtin/packages/jpeg/package.py
+++ b/var/spack/repos/builtin/packages/jpeg/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Jpeg(Package):
+class Jpeg(AutotoolsPackage):
     """libjpeg is a widely used free library with functions for handling the
     JPEG image data format. It implements a JPEG codec (encoding and decoding)
     alongside various utilities for handling JPEG data."""
@@ -35,10 +35,3 @@ class Jpeg(Package):
 
     version('9b', '6a9996ce116ec5c52b4870dbcd6d3ddb')
     version('9a', '3353992aecaee1805ef4109aadd433e7')
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-
-        make()
-        make("test")
-        make("install")
diff --git a/var/spack/repos/builtin/packages/judy/package.py b/var/spack/repos/builtin/packages/judy/package.py
index 8b8b261e535863b40505d1f6c330b48d7ee423c5..ddcec05c2260c364dfb6a997f235f8e406b59edb 100644
--- a/var/spack/repos/builtin/packages/judy/package.py
+++ b/var/spack/repos/builtin/packages/judy/package.py
@@ -25,16 +25,11 @@
 from spack import *
 
 
-class Judy(Package):
+class Judy(AutotoolsPackage):
     """Judy: General-purpose dynamic array, associative array and hash-trie."""
     homepage = "http://judy.sourceforge.net/"
     url      = "http://downloads.sourceforge.net/project/judy/judy/Judy-1.0.5/Judy-1.0.5.tar.gz"
 
     version('1.0.5', '115a0d26302676e962ae2f70ec484a54')
-    parallel = False
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
 
-        make()
-        make("install")
+    parallel = False
diff --git a/var/spack/repos/builtin/packages/kbproto/package.py b/var/spack/repos/builtin/packages/kbproto/package.py
index 356d1c6b4fd4a5ec48638855cf08e37eb37092c5..aaf4c9e1d1a706b8ff07c3ec0c385a51e62fd71b 100644
--- a/var/spack/repos/builtin/packages/kbproto/package.py
+++ b/var/spack/repos/builtin/packages/kbproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Kbproto(Package):
+class Kbproto(AutotoolsPackage):
     """X Keyboard Extension.
 
     This extension defines a protcol to provide a number of new capabilities
@@ -38,8 +38,3 @@ class Kbproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/lbxproxy/package.py b/var/spack/repos/builtin/packages/lbxproxy/package.py
index 3de3ade0c9d364e854c2729343c2e50024fb3ac8..3895134a7ca71b8a1ff78bfe2cd0468dc292a956 100644
--- a/var/spack/repos/builtin/packages/lbxproxy/package.py
+++ b/var/spack/repos/builtin/packages/lbxproxy/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Lbxproxy(Package):
+class Lbxproxy(AutotoolsPackage):
     """lbxproxy accepts client connections, multiplexes them over a single
     connection to the X server, and performs various optimizations on the
     X protocol to make it faster over low bandwidth and/or high latency
@@ -50,9 +50,3 @@ class Lbxproxy(Package):
     depends_on('bigreqsproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/lcms/package.py b/var/spack/repos/builtin/packages/lcms/package.py
index 4d3fc59568a3bc160d6b866968da7d66cab8cf6e..ad85ebe055899df01bb4f6cc54a69285067d9a2c 100644
--- a/var/spack/repos/builtin/packages/lcms/package.py
+++ b/var/spack/repos/builtin/packages/lcms/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Lcms(Package):
+class Lcms(AutotoolsPackage):
     """Little cms is a color management library. Implements fast
        transforms between ICC profiles. It is focused on speed, and is
        portable across several platforms (MIT license)."""
@@ -37,8 +37,3 @@ class Lcms(Package):
     depends_on("jpeg")
     depends_on("libtiff")
     depends_on("zlib")
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/libapplewm/package.py b/var/spack/repos/builtin/packages/libapplewm/package.py
index 85408053ad2d2a17d168085f04f070c18cd963d2..35091985e3753e35e9c436c72bee384af24fbc1c 100644
--- a/var/spack/repos/builtin/packages/libapplewm/package.py
+++ b/var/spack/repos/builtin/packages/libapplewm/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libapplewm(Package):
+class Libapplewm(AutotoolsPackage):
     """AppleWM is a simple library designed to interface with the Apple-WM
     extension. This extension allows X window managers to better interact with
     the Mac OS X Aqua user interface when running X11 in a rootless mode."""
@@ -43,12 +43,6 @@ class Libapplewm(Package):
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
 
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        # Crashes with this error message on Linux:
-        # HIServices/Processes.h: No such file or directory
-        # May only build properly on macOS?
-
-        make()
-        make('install')
+    # Crashes with this error message on Linux:
+    # HIServices/Processes.h: No such file or directory
+    # May only build properly on macOS?
diff --git a/var/spack/repos/builtin/packages/libarchive/package.py b/var/spack/repos/builtin/packages/libarchive/package.py
index e439bf894ffb3896cc62ecc188c2e4ec74f1ab36..0edb3521d12cf52a0d36b81820e9431668279a6e 100644
--- a/var/spack/repos/builtin/packages/libarchive/package.py
+++ b/var/spack/repos/builtin/packages/libarchive/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libarchive(Package):
+class Libarchive(AutotoolsPackage):
     """libarchive: C library and command-line tools for reading and
        writing tar, cpio, zip, ISO, and other archive formats."""
 
@@ -48,10 +48,5 @@ class Libarchive(Package):
     depends_on('libxml2')
     depends_on('expat')
 
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        if self.run_tests:
-            make('check')  # cannot build test suite with Intel compilers
-        make('install')
+    # NOTE: `make check` is known to fail with the Intel compilers
+    # The build test suite cannot be built with Intel
diff --git a/var/spack/repos/builtin/packages/libcerf/package.py b/var/spack/repos/builtin/packages/libcerf/package.py
index 1964f03b95848044aba16833816cc8b6863ef483..3bc8ddbd169a5ac8e5336e0b6e6e77e497197f8b 100644
--- a/var/spack/repos/builtin/packages/libcerf/package.py
+++ b/var/spack/repos/builtin/packages/libcerf/package.py
@@ -26,7 +26,7 @@
 from spack import *
 
 
-class Libcerf(Package):
+class Libcerf(AutotoolsPackage):
     """A self-contained C library providing complex error functions, based
        on Faddeeva's plasma dispersion function w(z). Also provides Dawson's
        integral and Voigt's convolution of a Gaussian and a Lorentzian
@@ -37,13 +37,11 @@ class Libcerf(Package):
 
     version('1.3', 'b3504c467204df71e62aeccf73a25612')
 
-    def install(self, spec, prefix):
+    def configure_args(self):
         options = []
         # Clang reports unused functions as errors, see
         # http://clang.debian.net/status.php?version=3.8.1&key=UNUSED_FUNCTION
         if spec.satisfies('%clang'):
             options.append('CFLAGS=-Wno-unused-function')
 
-        configure('--prefix=%s' % prefix, *options)
-        make()
-        make("install")
+        return options
diff --git a/var/spack/repos/builtin/packages/libcircle/package.py b/var/spack/repos/builtin/packages/libcircle/package.py
index 971c29f5f1ca623cc2740c5e7fbb70910c51f68f..e1063292190596c0f0b48e6fdb6b64ef4b8ac82a 100644
--- a/var/spack/repos/builtin/packages/libcircle/package.py
+++ b/var/spack/repos/builtin/packages/libcircle/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libcircle(Package):
+class Libcircle(AutotoolsPackage):
     """libcircle provides an efficient distributed queue on a cluster,
        using self-stabilizing work stealing."""
 
@@ -35,8 +35,3 @@ class Libcircle(Package):
             url='https://github.com/hpc/libcircle/releases/download/0.2.1-rc.1/libcircle-0.2.1-rc.1.tar.gz')
 
     depends_on('mpi')
-
-    def install(self, spec, prefix):
-        configure("--prefix=" + prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/libdmx/package.py b/var/spack/repos/builtin/packages/libdmx/package.py
index fa469fd4232bb8ec2023ef99064725cc9c476c55..2aeb5b9fbb37abd1e7b7f8f451de7f2e0ed9d086 100644
--- a/var/spack/repos/builtin/packages/libdmx/package.py
+++ b/var/spack/repos/builtin/packages/libdmx/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libdmx(Package):
+class Libdmx(AutotoolsPackage):
     """libdmx - X Window System DMX (Distributed Multihead X) extension
     library."""
 
@@ -41,9 +41,3 @@ class Libdmx(Package):
     depends_on('dmxproto@2.2.99.1:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libedit/package.py b/var/spack/repos/builtin/packages/libedit/package.py
index 235e7648bcaa709b9eec1808326bfd03717b083b..5dcee61caba4c81fca858a2f08b69d9e08925860 100644
--- a/var/spack/repos/builtin/packages/libedit/package.py
+++ b/var/spack/repos/builtin/packages/libedit/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libedit(Package):
+class Libedit(AutotoolsPackage):
     """An autotools compatible port of the NetBSD editline library"""
     homepage = "http://thrysoee.dk/editline/"
     url      = "http://thrysoee.dk/editline/libedit-20150325-3.1.tar.gz"
@@ -34,9 +34,3 @@ class Libedit(Package):
             url="http://thrysoee.dk/editline/libedit-20150325-3.1.tar.gz")
 
     depends_on('ncurses')
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/libepoxy/package.py b/var/spack/repos/builtin/packages/libepoxy/package.py
index 364ea1e30c5d099f2bcdd9e3a2756ac0d59e6f97..32c95fdda428a3340930ed43e17d7ccddabe5e06 100644
--- a/var/spack/repos/builtin/packages/libepoxy/package.py
+++ b/var/spack/repos/builtin/packages/libepoxy/package.py
@@ -25,15 +25,10 @@
 from spack import *
 
 
-class Libepoxy(Package):
+class Libepoxy(AutotoolsPackage):
     """Epoxy is a library for handling OpenGL function pointer management for
     you."""
     homepage = "https://github.com/anholt/libepoxy"
     url      = "https://github.com/anholt/libepoxy/releases/download/v1.3.1/libepoxy-1.3.1.tar.bz2"
 
     version('1.3.1', '96f6620a9b005a503e7b44b0b528287d')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libevent/package.py b/var/spack/repos/builtin/packages/libevent/package.py
index 65b3a716c0a651e28f9c1786b5cb2a6cd5d569a5..86aeddaf20b1896962e3d24a95009cffc2f061e4 100644
--- a/var/spack/repos/builtin/packages/libevent/package.py
+++ b/var/spack/repos/builtin/packages/libevent/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libevent(Package):
+class Libevent(AutotoolsPackage):
     """The libevent API provides a mechanism to execute a callback function
        when a specific event occurs on a file descriptor or after a
        timeout has been reached. Furthermore, libevent also support
@@ -52,13 +52,11 @@ class Libevent(Package):
             description="Build with encryption enabled at the libevent level.")
     depends_on('openssl', when='+openssl')
 
-    def install(self, spec, prefix):
+    def configure_args(self):
         configure_args = []
         if '+openssl' in spec:
             configure_args.append('--enable-openssl')
         else:
             configure_args.append('--enable-openssl')
 
-        configure("--prefix=%s" % prefix, *configure_args)
-        make()
-        make("install")
+        return configure_args
diff --git a/var/spack/repos/builtin/packages/libfontenc/package.py b/var/spack/repos/builtin/packages/libfontenc/package.py
index 1c7fa196d9d88631add1f460b534d521e94665e9..945f74ccad3eb505b1cc4edc67d87d2f5f31370e 100644
--- a/var/spack/repos/builtin/packages/libfontenc/package.py
+++ b/var/spack/repos/builtin/packages/libfontenc/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libfontenc(Package):
+class Libfontenc(AutotoolsPackage):
     """libfontenc - font encoding library."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libfontenc"
@@ -38,9 +38,3 @@ class Libfontenc(Package):
     depends_on('xproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libfs/package.py b/var/spack/repos/builtin/packages/libfs/package.py
index 96bf62afd7f965f9522ec1492e0c214232b2e85f..96cb396b0ae7db6915e145438cae73e8570e36f3 100644
--- a/var/spack/repos/builtin/packages/libfs/package.py
+++ b/var/spack/repos/builtin/packages/libfs/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libfs(Package):
+class Libfs(AutotoolsPackage):
     """libFS - X Font Service client library.
 
     This library is used by clients of X Font Servers (xfs), such as
@@ -41,9 +41,3 @@ class Libfs(Package):
     depends_on('xtrans', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libgcrypt/package.py b/var/spack/repos/builtin/packages/libgcrypt/package.py
index b556def4d3b522bba0e11a8af9a98f3eea294b86..968793315e6fd77d9a85497d07b987c79d05551d 100644
--- a/var/spack/repos/builtin/packages/libgcrypt/package.py
+++ b/var/spack/repos/builtin/packages/libgcrypt/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libgcrypt(Package):
+class Libgcrypt(AutotoolsPackage):
     """Libgcrypt is a general purpose cryptographic library based on
        the code from GnuPG. It provides functions for all cryptographic
        building blocks: symmetric ciphers, hash algorithms, MACs, public
@@ -37,8 +37,3 @@ class Libgcrypt(Package):
     version('1.6.2', 'b54395a93cb1e57619943c082da09d5f')
 
     depends_on("libgpg-error")
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/libgd/package.py b/var/spack/repos/builtin/packages/libgd/package.py
index 6329adf8f3e7655155d5fbef62a5181e2d3fcdd1..42eb23d85ab344cc6a908b9c8ffc86cfb6347d44 100644
--- a/var/spack/repos/builtin/packages/libgd/package.py
+++ b/var/spack/repos/builtin/packages/libgd/package.py
@@ -26,7 +26,7 @@
 from spack import *
 
 
-class Libgd(Package):
+class Libgd(AutotoolsPackage):
     """GD is an open source code library for the dynamic creation of images
        by programmers. GD is written in C, and "wrappers" are available
        for Perl, PHP and other languages. GD creates PNG, JPEG, GIF,
@@ -55,7 +55,7 @@ class Libgd(Package):
     depends_on('libtiff')
     depends_on('fontconfig')
 
-    def install(self, spec, prefix):
+    def autoreconf(self, spec, prefix):
         autoreconf("--install", "--force",
                    "-I", "m4",
                    "-I", join_path(spec['gettext'].prefix,
@@ -67,6 +67,3 @@ def install(self, spec, prefix):
                    "-I", join_path(spec['libtool'].prefix,
                                    "share", "aclocal")
                    )
-        configure('--prefix={0}'.format(prefix))
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/libgpg-error/package.py b/var/spack/repos/builtin/packages/libgpg-error/package.py
index a0e2acd51601d0b71928442c90afa0dbb67963c3..26b7e6d05e8d6fd95910a52805308141b0a0cf64 100644
--- a/var/spack/repos/builtin/packages/libgpg-error/package.py
+++ b/var/spack/repos/builtin/packages/libgpg-error/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class LibgpgError(Package):
+class LibgpgError(AutotoolsPackage):
     """Libgpg-error is a small library that defines common error
        values for all GnuPG components. Among these are GPG, GPGSM,
        GPGME, GPG-Agent, libgcrypt, Libksba, DirMngr, Pinentry,
@@ -36,8 +36,3 @@ class LibgpgError(Package):
 
     version('1.21', 'ab0b5aba6d0a185b41d07bda804fd8b2')
     version('1.18', '12312802d2065774b787cbfc22cc04e9')
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/libgtextutils/package.py b/var/spack/repos/builtin/packages/libgtextutils/package.py
index 201e0318694e04d0c75413663fba6dfb77a719fb..05b6b7dabe717d96d869354cf7e185baa0a9a1df 100644
--- a/var/spack/repos/builtin/packages/libgtextutils/package.py
+++ b/var/spack/repos/builtin/packages/libgtextutils/package.py
@@ -25,16 +25,10 @@
 from spack import *
 
 
-class Libgtextutils(Package):
+class Libgtextutils(AutotoolsPackage):
     """Gordon's Text utils Library."""
 
     homepage = "https://github.com/agordon/libgtextutils"
     url      = "https://github.com/agordon/libgtextutils/releases/download/0.7/libgtextutils-0.7.tar.gz"
 
     version('0.7', '593c7c62e3c76ec49f5736eed4f96806')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libhio/package.py b/var/spack/repos/builtin/packages/libhio/package.py
index 17bd86d310fecc8083d4fa34fa86e878d272d0c6..181aca979f71e1e3bcc3dbba1a232cf6a0680e28 100644
--- a/var/spack/repos/builtin/packages/libhio/package.py
+++ b/var/spack/repos/builtin/packages/libhio/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libhio(Package):
+class Libhio(AutotoolsPackage):
     """
     A library for writing to hierarchical data store systems.
     """
@@ -38,8 +38,3 @@ class Libhio(Package):
     depends_on("libjson-c")
     depends_on("bzip2")
     depends_on("pkg-config", type="build")
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/libice/package.py b/var/spack/repos/builtin/packages/libice/package.py
index 1f6fd2f9015b91d3d5f46e03e7efc56b9fc552c7..36436df501cc30358e59e3c34026fcb86a8bc83c 100644
--- a/var/spack/repos/builtin/packages/libice/package.py
+++ b/var/spack/repos/builtin/packages/libice/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libice(Package):
+class Libice(AutotoolsPackage):
     """libICE - Inter-Client Exchange Library."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libICE"
@@ -37,9 +37,3 @@ class Libice(Package):
     depends_on('xtrans', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libjpeg-turbo/package.py b/var/spack/repos/builtin/packages/libjpeg-turbo/package.py
index 3fe159d7b99f3fba33779d2eec2d15321dd41366..8b9413bc86b4a348ad28b5bc1992a839b4dd363c 100644
--- a/var/spack/repos/builtin/packages/libjpeg-turbo/package.py
+++ b/var/spack/repos/builtin/packages/libjpeg-turbo/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class LibjpegTurbo(Package):
+class LibjpegTurbo(AutotoolsPackage):
     """libjpeg-turbo is a fork of the original IJG libjpeg which uses SIMD to
        accelerate baseline JPEG compression and decompression. libjpeg is a
        library that implements JPEG image encoding, decoding and
@@ -43,8 +43,3 @@ class LibjpegTurbo(Package):
     # TODO: Implement the selection between two supported assemblers.
     # depends_on("yasm", type='build')
     depends_on("nasm", type='build')
-
-    def install(self, spec, prefix):
-        configure("--prefix=" + prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/liblbxutil/package.py b/var/spack/repos/builtin/packages/liblbxutil/package.py
index 1de59defd6c7b86b36fab89c3be9586ea8aef1d8..fe1be09cf97a7452645b8ac85b6aee2b5aa1dbed 100644
--- a/var/spack/repos/builtin/packages/liblbxutil/package.py
+++ b/var/spack/repos/builtin/packages/liblbxutil/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Liblbxutil(Package):
+class Liblbxutil(AutotoolsPackage):
     """liblbxutil - Low Bandwith X extension (LBX) utility routines."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/liblbxutil"
@@ -43,9 +43,3 @@ class Liblbxutil(Package):
     # undefined symbol: Xalloc
     # See https://bugs.freedesktop.org/show_bug.cgi?id=8421
     # Adding a dependency on libxdmcp and adding LIBS=-lXdmcp did not fix it
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libmng/package.py b/var/spack/repos/builtin/packages/libmng/package.py
index a77aada79cc7978f2831cf083c8e3440a5014c3d..a867c1997e22f80c5adadd13e6c5a1ad5f0d18c0 100644
--- a/var/spack/repos/builtin/packages/libmng/package.py
+++ b/var/spack/repos/builtin/packages/libmng/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libmng(Package):
+class Libmng(AutotoolsPackage):
     """libmng -THE reference library for reading, displaying, writing
        and examining Multiple-Image Network Graphics.  MNG is the animation
        extension to the popular PNG image-format."""
@@ -42,8 +42,3 @@ def patch(self):
         # jpeg requires stdio to beincluded before its headrs.
         filter_file(r'^(\#include \<jpeglib\.h\>)',
                     '#include<stdio.h>\n\\1', 'libmng_types.h')
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/libmonitor/package.py b/var/spack/repos/builtin/packages/libmonitor/package.py
index f680baa26558fe29aaf3be94b2dde2ec1e2b9562..26a87c78fa41356ca7cf8be6d7955950b2c0fea1 100644
--- a/var/spack/repos/builtin/packages/libmonitor/package.py
+++ b/var/spack/repos/builtin/packages/libmonitor/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libmonitor(Package):
+class Libmonitor(AutotoolsPackage):
     """Libmonitor is a library for process and thread control."""
     homepage = "https://github.com/HPCToolkit/libmonitor"
     version('20130218', git='https://github.com/HPCToolkit/libmonitor.git',
@@ -36,8 +36,3 @@ class Libmonitor(Package):
     patch('libmonitorkrell-0000.patch', when='@20130218+krellpatch')
     patch('libmonitorkrell-0001.patch', when='@20130218+krellpatch')
     patch('libmonitorkrell-0002.patch', when='@20130218+krellpatch')
-
-    def install(self, spec, prefix):
-        configure("--prefix=" + prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/libnbc/package.py b/var/spack/repos/builtin/packages/libnbc/package.py
index 414498a37aea3ede3488a1adcbac190ac6f0abaf..e135fa6835e1c2cdf17febe81c7e88446d849e22 100644
--- a/var/spack/repos/builtin/packages/libnbc/package.py
+++ b/var/spack/repos/builtin/packages/libnbc/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libnbc(Package):
+class Libnbc(AutotoolsPackage):
     """LibNBC is a prototypic implementation of a nonblocking
     interface for MPI collective operations. Based on ANSI C and
     MPI-1, it supports all MPI-1 collective operations in a
@@ -37,8 +37,3 @@ class Libnbc(Package):
     version('1.1.1', 'ece5c94992591a9fa934a90e5dbe50ce')
 
     depends_on("mpi")
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/liboldx/package.py b/var/spack/repos/builtin/packages/liboldx/package.py
index 9e85f1ed65f8470095ab458119793a622b92d5c8..1bec00bfe3718add1eae0b6726bee3f8877fa0ea 100644
--- a/var/spack/repos/builtin/packages/liboldx/package.py
+++ b/var/spack/repos/builtin/packages/liboldx/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Liboldx(Package):
+class Liboldx(AutotoolsPackage):
     """X version 10 backwards compatibility."""
 
     homepage = "https://cgit.freedesktop.org/xorg/lib/liboldX/"
@@ -37,9 +37,3 @@ class Liboldx(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libpthread-stubs/package.py b/var/spack/repos/builtin/packages/libpthread-stubs/package.py
index fdaf327c2a7e5837243bff10ba7d6fd7e861b2c9..911bf6814c7b6065d1a884c434cf95d818ca0dc2 100644
--- a/var/spack/repos/builtin/packages/libpthread-stubs/package.py
+++ b/var/spack/repos/builtin/packages/libpthread-stubs/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class LibpthreadStubs(Package):
+class LibpthreadStubs(AutotoolsPackage):
     """The libpthread-stubs package provides weak aliases for pthread
     functions not provided in libc or otherwise available by default."""
 
@@ -33,8 +33,3 @@ class LibpthreadStubs(Package):
     url      = "https://xcb.freedesktop.org/dist/libpthread-stubs-0.3.tar.gz"
 
     version('0.3', 'a09d928c4af54fe5436002345ef71138')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libsm/package.py b/var/spack/repos/builtin/packages/libsm/package.py
index 4affd50127b4a50ebaafa9e5340be562d59241b4..9479da07d7a5473f85af4ff886a39b92bfb868c4 100644
--- a/var/spack/repos/builtin/packages/libsm/package.py
+++ b/var/spack/repos/builtin/packages/libsm/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libsm(Package):
+class Libsm(AutotoolsPackage):
     """libSM - X Session Management Library."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libSM"
@@ -39,9 +39,3 @@ class Libsm(Package):
     depends_on('xtrans', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libsodium/package.py b/var/spack/repos/builtin/packages/libsodium/package.py
index 805881ce0707cdce177932775bca056af41d2d63..a7e3ab10aed4e942efa2708699096759d9f3860f 100644
--- a/var/spack/repos/builtin/packages/libsodium/package.py
+++ b/var/spack/repos/builtin/packages/libsodium/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libsodium(Package):
+class Libsodium(AutotoolsPackage):
     """Sodium is a modern, easy-to-use software library for encryption,
     decryption, signatures, password hashing and more."""
     homepage = "https://download.libsodium.org/doc/"
@@ -44,9 +44,3 @@ def url_for_version(self, version):
         if version < Version('1.0.4'):
             url += 'old/'
         return url + 'libsodium-{0}.tar.gz'.format(version)
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/libunistring/package.py b/var/spack/repos/builtin/packages/libunistring/package.py
index 5b8837e72b27a09b50014c4a162e8e28153f116f..08657f89d19363e2fa5795176a82644cd463d16f 100644
--- a/var/spack/repos/builtin/packages/libunistring/package.py
+++ b/var/spack/repos/builtin/packages/libunistring/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libunistring(Package):
+class Libunistring(AutotoolsPackage):
     """This library provides functions for manipulating Unicode strings
     and for manipulating C strings according to the Unicode standard."""
 
@@ -34,9 +34,4 @@ class Libunistring(Package):
 
     version('0.9.6', 'cb09c398020c27edac10ca590e9e9ef3')
 
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        # make('check')  # test-verify fails for me, contacted developers
-        make('install')
+    # NOTE: `make check` fails test-verify
diff --git a/var/spack/repos/builtin/packages/libunwind/package.py b/var/spack/repos/builtin/packages/libunwind/package.py
index 63ab4aec59b3a8b380d01800996f29b1b7e92b8d..1e727f84f37b874f5b920e369efd52a7b4997122 100644
--- a/var/spack/repos/builtin/packages/libunwind/package.py
+++ b/var/spack/repos/builtin/packages/libunwind/package.py
@@ -25,15 +25,10 @@
 from spack import *
 
 
-class Libunwind(Package):
+class Libunwind(AutotoolsPackage):
     """A portable and efficient C programming interface (API) to determine
        the call-chain of a program."""
     homepage = "http://www.nongnu.org/libunwind/"
     url      = "http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz"
 
     version('1.1', 'fb4ea2f6fbbe45bf032cd36e586883ce')
-
-    def install(self, spec, prefix):
-        configure("--prefix=" + prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/libuuid/package.py b/var/spack/repos/builtin/packages/libuuid/package.py
index b8f6b1cc3af73026727ae81a6843a7bdcfd3fe38..31f109cba3bae100f12ebff32f1457d3aa9fc297 100644
--- a/var/spack/repos/builtin/packages/libuuid/package.py
+++ b/var/spack/repos/builtin/packages/libuuid/package.py
@@ -25,16 +25,10 @@
 from spack import *
 
 
-class Libuuid(Package):
+class Libuuid(AutotoolsPackage):
     """Portable uuid C library"""
 
     homepage = "http://sourceforge.net/projects/libuuid/"
     url      = "http://downloads.sourceforge.net/project/libuuid/libuuid-1.0.3.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Flibuuid%2F&ts=1433881396&use_mirror=iweb"
 
     version('1.0.3', 'd44d866d06286c08ba0846aba1086d68')
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/libuv/package.py b/var/spack/repos/builtin/packages/libuv/package.py
index dae10809f22dbc58f1c1d8a3e907a976bf8523a7..5254239019055cc819d50d47b0202316344825a5 100644
--- a/var/spack/repos/builtin/packages/libuv/package.py
+++ b/var/spack/repos/builtin/packages/libuv/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libuv(Package):
+class Libuv(AutotoolsPackage):
     """Multi-platform library with a focus on asynchronous IO"""
     homepage = "http://libuv.org"
     url      = "https://github.com/libuv/libuv/archive/v1.9.0.tar.gz"
@@ -36,11 +36,6 @@ class Libuv(Package):
     depends_on('autoconf', type='build')
     depends_on('libtool', type='build')
 
-    def install(self, spec, prefix):
+    def autoreconf(self, spec, prefix):
         bash = which("bash")
         bash('autogen.sh')
-        configure('--prefix=%s' % prefix)
-
-        make()
-        make("check")
-        make("install")
diff --git a/var/spack/repos/builtin/packages/libwindowswm/package.py b/var/spack/repos/builtin/packages/libwindowswm/package.py
index 3836e0d419477d590762908588efb91ae0830604..5b331f428cb6e2bbeb878b758d87a51cdc59793f 100644
--- a/var/spack/repos/builtin/packages/libwindowswm/package.py
+++ b/var/spack/repos/builtin/packages/libwindowswm/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libwindowswm(Package):
+class Libwindowswm(AutotoolsPackage):
     """WindowsWM - Cygwin/X rootless window management extension.
 
     WindowsWM is a simple library designed to interface with the
@@ -45,9 +45,3 @@ class Libwindowswm(Package):
     depends_on('windowswmproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libx11/package.py b/var/spack/repos/builtin/packages/libx11/package.py
index c5df2e0f83efa7d929b5acf4063cc68138abbcb5..d9c28836b8e3c4dd384706a4ea8b12e5fe5f3d87 100644
--- a/var/spack/repos/builtin/packages/libx11/package.py
+++ b/var/spack/repos/builtin/packages/libx11/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libx11(Package):
+class Libx11(AutotoolsPackage):
     """libX11 - Core X11 protocol client library."""
 
     homepage = "https://www.x.org/"
@@ -42,10 +42,3 @@ class Libx11(Package):
     depends_on('inputproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('check')
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxau/package.py b/var/spack/repos/builtin/packages/libxau/package.py
index eb1f1326c64cb5e190c5c13cd146708551465190..bf4e9f5e4eb5b2ade3d6a6f48b9dbac84d1e236d 100644
--- a/var/spack/repos/builtin/packages/libxau/package.py
+++ b/var/spack/repos/builtin/packages/libxau/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxau(Package):
+class Libxau(AutotoolsPackage):
     """The libXau package contains a library implementing the X11
     Authorization Protocol. This is useful for restricting client
     access to the display."""
@@ -38,10 +38,3 @@ class Libxau(Package):
     depends_on('xproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('check')
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxaw/package.py b/var/spack/repos/builtin/packages/libxaw/package.py
index 9f92ff57d2dff0984a373543867df78d7973f9a4..f3779be7ed3e70e2f30ec0cfbefac9a28e8a5e7c 100644
--- a/var/spack/repos/builtin/packages/libxaw/package.py
+++ b/var/spack/repos/builtin/packages/libxaw/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxaw(Package):
+class Libxaw(AutotoolsPackage):
     """Xaw is the X Athena Widget Set.
     Xaw is a widget set based on the X Toolkit Intrinsics (Xt) Library."""
 
@@ -44,9 +44,3 @@ class Libxaw(Package):
     depends_on('xextproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxaw3d/package.py b/var/spack/repos/builtin/packages/libxaw3d/package.py
index 498f57cbca319ae052f25a11d051ffad66d84b85..0e350aa2ce3e37bba4e38068cacee6d467d3b591 100644
--- a/var/spack/repos/builtin/packages/libxaw3d/package.py
+++ b/var/spack/repos/builtin/packages/libxaw3d/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxaw3d(Package):
+class Libxaw3d(AutotoolsPackage):
     """Xaw3d is the X 3D Athena Widget Set.
     Xaw3d is a widget set based on the X Toolkit Intrinsics (Xt) Library."""
 
@@ -42,9 +42,3 @@ class Libxaw3d(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxcb/package.py b/var/spack/repos/builtin/packages/libxcb/package.py
index 9fa1c6f97ce79b8cab05b0caab62caeb49e0834c..0e4d00da979897d758c294ccd0784b30984b1829 100644
--- a/var/spack/repos/builtin/packages/libxcb/package.py
+++ b/var/spack/repos/builtin/packages/libxcb/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxcb(Package):
+class Libxcb(AutotoolsPackage):
     """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
@@ -52,10 +52,3 @@ def patch(self):
             'typedef struct xcb_auth_info_t {',
             'typedef struct {',
             'src/xcb.h')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('check')
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxcomposite/package.py b/var/spack/repos/builtin/packages/libxcomposite/package.py
index 48cba002500d9ce097de029c947faab51b21f086..30d3a4c0caedc99e7349245b4b6d09e9c1179362 100644
--- a/var/spack/repos/builtin/packages/libxcomposite/package.py
+++ b/var/spack/repos/builtin/packages/libxcomposite/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxcomposite(Package):
+class Libxcomposite(AutotoolsPackage):
     """libXcomposite - client library for the Composite extension to the
     X11 protocol."""
 
@@ -40,9 +40,3 @@ class Libxcomposite(Package):
     depends_on('compositeproto@0.4:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxcursor/package.py b/var/spack/repos/builtin/packages/libxcursor/package.py
index 215452ef52545fa79828ecdb4bde6f6dee8b8331..ee5065bfa4fd6a29f4b30302cbe67db98ba03a2d 100644
--- a/var/spack/repos/builtin/packages/libxcursor/package.py
+++ b/var/spack/repos/builtin/packages/libxcursor/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxcursor(Package):
+class Libxcursor(AutotoolsPackage):
     """libXcursor - X Window System Cursor management library."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libXcursor"
@@ -40,9 +40,3 @@ class Libxcursor(Package):
     depends_on('fixesproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxdamage/package.py b/var/spack/repos/builtin/packages/libxdamage/package.py
index 448ac21945ccd762446640efe43a00a006cf90e9..4eca877421f59940e177ad6ffc98946853f08dc8 100644
--- a/var/spack/repos/builtin/packages/libxdamage/package.py
+++ b/var/spack/repos/builtin/packages/libxdamage/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxdamage(Package):
+class Libxdamage(AutotoolsPackage):
     """This package contains the library for the X Damage extension."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libXdamage"
@@ -41,9 +41,3 @@ class Libxdamage(Package):
     depends_on('xextproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxdmcp/package.py b/var/spack/repos/builtin/packages/libxdmcp/package.py
index c05d4b87719b96d1a51d555f6e24e16115ad6f33..7c4fd068f0dca6b659c4adf54d95494a45d21024 100644
--- a/var/spack/repos/builtin/packages/libxdmcp/package.py
+++ b/var/spack/repos/builtin/packages/libxdmcp/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxdmcp(Package):
+class Libxdmcp(AutotoolsPackage):
     """libXdmcp - X Display Manager Control Protocol library."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libXdmcp"
@@ -36,10 +36,3 @@ class Libxdmcp(Package):
     depends_on('xproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('check')
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxevie/package.py b/var/spack/repos/builtin/packages/libxevie/package.py
index b9f0e4163137e5bdf883e7d8c3acc6f054d66777..7435027b48b72491d66bf3724ad957277c63f37c 100644
--- a/var/spack/repos/builtin/packages/libxevie/package.py
+++ b/var/spack/repos/builtin/packages/libxevie/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxevie(Package):
+class Libxevie(AutotoolsPackage):
     """Xevie - X Event Interception Extension (XEvIE)."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libXevie"
@@ -41,9 +41,3 @@ class Libxevie(Package):
     depends_on('evieext', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxext/package.py b/var/spack/repos/builtin/packages/libxext/package.py
index 192ab3957a13362d23b74745ebb4466ce99ff30f..528f00cc357a3321f3b6d58a01fdbc595ec2162a 100644
--- a/var/spack/repos/builtin/packages/libxext/package.py
+++ b/var/spack/repos/builtin/packages/libxext/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxext(Package):
+class Libxext(AutotoolsPackage):
     """libXext - library for common extensions to the X11 protocol."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libXext"
@@ -39,9 +39,3 @@ class Libxext(Package):
     depends_on('xextproto@7.1.99:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxfixes/package.py b/var/spack/repos/builtin/packages/libxfixes/package.py
index 6b8b599a8566d5d0c5551b0c69f72ecf7fefec6c..6add3bb56d9c26045a8b85f2c5103bcdc9f5270b 100644
--- a/var/spack/repos/builtin/packages/libxfixes/package.py
+++ b/var/spack/repos/builtin/packages/libxfixes/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxfixes(Package):
+class Libxfixes(AutotoolsPackage):
     """This package contains header files and documentation for the XFIXES
     extension.  Library and server implementations are separate."""
 
@@ -41,9 +41,3 @@ class Libxfixes(Package):
     depends_on('xextproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxfont/package.py b/var/spack/repos/builtin/packages/libxfont/package.py
index 1ebf321c9f74c749bfb1a50f12270fd8547a436f..7538c34f078b26923b4522894248863dc917ba96 100644
--- a/var/spack/repos/builtin/packages/libxfont/package.py
+++ b/var/spack/repos/builtin/packages/libxfont/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxfont(Package):
+class Libxfont(AutotoolsPackage):
     """libXfont provides the core of the legacy X11 font system, handling the
     index files (fonts.dir, fonts.alias, fonts.scale), the various font file
     formats, and rasterizing them.   It is used by the X servers, the
@@ -46,9 +46,3 @@ class Libxfont(Package):
     depends_on('fontsproto@2.1.3:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxfont2/package.py b/var/spack/repos/builtin/packages/libxfont2/package.py
index 8611e65ebb9c5b1d1ba64d58f7299d73d48f568f..bc1dc06dd034926d934405ad91f86dd724fea24e 100644
--- a/var/spack/repos/builtin/packages/libxfont2/package.py
+++ b/var/spack/repos/builtin/packages/libxfont2/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxfont2(Package):
+class Libxfont2(AutotoolsPackage):
     """libXfont provides the core of the legacy X11 font system, handling the
     index files (fonts.dir, fonts.alias, fonts.scale), the various font file
     formats, and rasterizing them.   It is used by the X servers, the
@@ -46,9 +46,3 @@ class Libxfont2(Package):
     depends_on('fontsproto@2.1.3:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxfontcache/package.py b/var/spack/repos/builtin/packages/libxfontcache/package.py
index 5421f093cad90d4809e82c98d1fe6ed076f52884..c4a4d5675a85c176fb8022d62f037fc41ea98caf 100644
--- a/var/spack/repos/builtin/packages/libxfontcache/package.py
+++ b/var/spack/repos/builtin/packages/libxfontcache/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxfontcache(Package):
+class Libxfontcache(AutotoolsPackage):
     """Xfontcache - X-TrueType font cache extension client library."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libXfontcache"
@@ -40,9 +40,3 @@ class Libxfontcache(Package):
     depends_on('fontcacheproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxft/package.py b/var/spack/repos/builtin/packages/libxft/package.py
index b1b8f853d0d98263ade282fb1802bc2ae6e66b4f..8385b4168a6f0121e6eb374d9e02ff282e9e5c44 100644
--- a/var/spack/repos/builtin/packages/libxft/package.py
+++ b/var/spack/repos/builtin/packages/libxft/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxft(Package):
+class Libxft(AutotoolsPackage):
     """X FreeType library.
 
     Xft version 2.1 was the first stand alone release of Xft, a library that
@@ -44,9 +44,3 @@ class Libxft(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxi/package.py b/var/spack/repos/builtin/packages/libxi/package.py
index 4e9a2735790e605b11b7817bae357e235c31701b..5334ef9044cb1ad03e507b1f253726dbdeca8ffa 100644
--- a/var/spack/repos/builtin/packages/libxi/package.py
+++ b/var/spack/repos/builtin/packages/libxi/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxi(Package):
+class Libxi(AutotoolsPackage):
     """libXi - library for the X Input Extension."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libXi"
@@ -40,9 +40,3 @@ class Libxi(Package):
     depends_on('xproto@7.0.13:', type='build')
     depends_on('xextproto@7.0.3:', type='build')
     depends_on('inputproto@2.2.99.1:', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxinerama/package.py b/var/spack/repos/builtin/packages/libxinerama/package.py
index a001c41ca7870451338ffe88b92208c6440577ae..9e3633629a53ae7c760b14a27736092fb7f17d51 100644
--- a/var/spack/repos/builtin/packages/libxinerama/package.py
+++ b/var/spack/repos/builtin/packages/libxinerama/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxinerama(Package):
+class Libxinerama(AutotoolsPackage):
     """libXinerama - API for Xinerama extension to X11 Protocol."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libXinerama"
@@ -40,9 +40,3 @@ class Libxinerama(Package):
     depends_on('xineramaproto@1.1.99.1:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxkbfile/package.py b/var/spack/repos/builtin/packages/libxkbfile/package.py
index af8029a024afdd02b95b2469b23353df86960621..daafa8dd654f6353a39384ce69e526ef2f5a119e 100644
--- a/var/spack/repos/builtin/packages/libxkbfile/package.py
+++ b/var/spack/repos/builtin/packages/libxkbfile/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxkbfile(Package):
+class Libxkbfile(AutotoolsPackage):
     """XKB file handling routines."""
 
     homepage = "https://cgit.freedesktop.org/xorg/lib/libxkbfile"
@@ -38,9 +38,3 @@ class Libxkbfile(Package):
     depends_on('kbproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxkbui/package.py b/var/spack/repos/builtin/packages/libxkbui/package.py
index d0c132d97002ddd85beff319c8c3cce905a7e6c0..b6a40b656d2606a61371a5936f2db817aa4543f4 100644
--- a/var/spack/repos/builtin/packages/libxkbui/package.py
+++ b/var/spack/repos/builtin/packages/libxkbui/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxkbui(Package):
+class Libxkbui(AutotoolsPackage):
     """X.org libxkbui library."""
 
     homepage = "https://cgit.freedesktop.org/xorg/lib/libxkbui/"
@@ -39,9 +39,3 @@ class Libxkbui(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxml2/package.py b/var/spack/repos/builtin/packages/libxml2/package.py
index bbb934ab9fa6eb08305dc53096e574943e40cc51..29a83ee35e4633aaba4d006de92f6cc3250d2813 100644
--- a/var/spack/repos/builtin/packages/libxml2/package.py
+++ b/var/spack/repos/builtin/packages/libxml2/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxml2(Package):
+class Libxml2(AutotoolsPackage):
     """Libxml2 is the XML C parser and toolkit developed for the Gnome
        project (but usable outside of the Gnome platform), it is free
        software available under the MIT License."""
@@ -45,7 +45,7 @@ class Libxml2(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
 
-    def install(self, spec, prefix):
+    def configure_args(self):
         if '+python' in spec:
             python_args = [
                 '--with-python={0}'.format(spec['python'].prefix),
@@ -54,9 +54,4 @@ def install(self, spec, prefix):
         else:
             python_args = ['--without-python']
 
-        configure('--prefix={0}'.format(prefix), *python_args)
-
-        make()
-        if self.run_tests:
-            make('check')
-        make('install')
+        return python_args
diff --git a/var/spack/repos/builtin/packages/libxmu/package.py b/var/spack/repos/builtin/packages/libxmu/package.py
index dbba5f168d213abf3cbe6a37611f1a8a351b5b8a..937cf750133950abb024136af6abca2e6626b5ab 100644
--- a/var/spack/repos/builtin/packages/libxmu/package.py
+++ b/var/spack/repos/builtin/packages/libxmu/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxmu(Package):
+class Libxmu(AutotoolsPackage):
     """This library contains miscellaneous utilities and is not part of the
     Xlib standard.  It contains routines which only use public interfaces so
     that it may be layered on top of any proprietary implementation of Xlib
@@ -43,9 +43,3 @@ class Libxmu(Package):
     depends_on('xextproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxp/package.py b/var/spack/repos/builtin/packages/libxp/package.py
index 10aaccc54f292d638de0cc839b5dd6d6097533a8..95d4bfa2f80f37761658a98041565134a7ed2ce5 100644
--- a/var/spack/repos/builtin/packages/libxp/package.py
+++ b/var/spack/repos/builtin/packages/libxp/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxp(Package):
+class Libxp(AutotoolsPackage):
     """libXp - X Print Client Library."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libXp"
@@ -41,9 +41,3 @@ class Libxp(Package):
     depends_on('printproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxpm/package.py b/var/spack/repos/builtin/packages/libxpm/package.py
index b726e74b0becd4b260064990b534c529aaf56eee..cfb269db7f91602f92c4143efa68194c207b5e9b 100644
--- a/var/spack/repos/builtin/packages/libxpm/package.py
+++ b/var/spack/repos/builtin/packages/libxpm/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxpm(Package):
+class Libxpm(AutotoolsPackage):
     """libXpm - X Pixmap (XPM) image file format library."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libXpm"
@@ -42,9 +42,3 @@ class Libxpm(Package):
     depends_on('xproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxpresent/package.py b/var/spack/repos/builtin/packages/libxpresent/package.py
index e65d4353a00fc00787b82a00c0b204e7c7cdcdc9..5237b164a0ff5fb9112832cbdc1a49f94feac347 100644
--- a/var/spack/repos/builtin/packages/libxpresent/package.py
+++ b/var/spack/repos/builtin/packages/libxpresent/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxpresent(Package):
+class Libxpresent(AutotoolsPackage):
     """This package contains header files and documentation for the Present
     extension.  Library and server implementations are separate."""
 
@@ -41,9 +41,3 @@ class Libxpresent(Package):
     depends_on('xextproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxprintapputil/package.py b/var/spack/repos/builtin/packages/libxprintapputil/package.py
index fc66b76ac087aa94480a11212870bcffb4918eca..ef1963c30068809e74c36ca32274570b18b1383d 100644
--- a/var/spack/repos/builtin/packages/libxprintapputil/package.py
+++ b/var/spack/repos/builtin/packages/libxprintapputil/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxprintapputil(Package):
+class Libxprintapputil(AutotoolsPackage):
     """Xprint application utility routines."""
 
     homepage = "https://cgit.freedesktop.org/xorg/lib/libXprintAppUtil/"
@@ -41,9 +41,3 @@ class Libxprintapputil(Package):
     depends_on('printproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxprintutil/package.py b/var/spack/repos/builtin/packages/libxprintutil/package.py
index 8eb768958f666cb2cbf410760967e447357f4bfc..b55123a39793768abbe5115a7bd102de76bda817 100644
--- a/var/spack/repos/builtin/packages/libxprintutil/package.py
+++ b/var/spack/repos/builtin/packages/libxprintutil/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxprintutil(Package):
+class Libxprintutil(AutotoolsPackage):
     """Xprint application utility routines."""
 
     homepage = "https://cgit.freedesktop.org/xorg/lib/libXprintUtil/"
@@ -41,9 +41,3 @@ class Libxprintutil(Package):
     depends_on('printproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxrandr/package.py b/var/spack/repos/builtin/packages/libxrandr/package.py
index 56c36c0c7bcdbc278eb886b494a5af217a554829..773be3ab8bf62eb63c46a14e7d6e1b9050d91121 100644
--- a/var/spack/repos/builtin/packages/libxrandr/package.py
+++ b/var/spack/repos/builtin/packages/libxrandr/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxrandr(Package):
+class Libxrandr(AutotoolsPackage):
     """libXrandr - X Resize, Rotate and Reflection extension library."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libXrandr"
@@ -42,9 +42,3 @@ class Libxrandr(Package):
     depends_on('renderproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxrender/package.py b/var/spack/repos/builtin/packages/libxrender/package.py
index c5a6dac1be2b3090b91a124990876c72083bc1b4..9c7e657f1dc3bab54ef45bb10b5f73b289d61393 100644
--- a/var/spack/repos/builtin/packages/libxrender/package.py
+++ b/var/spack/repos/builtin/packages/libxrender/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxrender(Package):
+class Libxrender(AutotoolsPackage):
     """libXrender - library for the Render Extension to the X11 protocol."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libXrender"
@@ -38,9 +38,3 @@ class Libxrender(Package):
     depends_on('renderproto@0.9:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxres/package.py b/var/spack/repos/builtin/packages/libxres/package.py
index 6d0684c4b812bec51bfcc22e4ccdb359303ef1e6..c8a77403466fc6ddb98dad1cd317f6922125d798 100644
--- a/var/spack/repos/builtin/packages/libxres/package.py
+++ b/var/spack/repos/builtin/packages/libxres/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxres(Package):
+class Libxres(AutotoolsPackage):
     """libXRes - X-Resource extension client library."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libXRes"
@@ -40,9 +40,3 @@ class Libxres(Package):
     depends_on('resourceproto@1.0:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxscrnsaver/package.py b/var/spack/repos/builtin/packages/libxscrnsaver/package.py
index c9ca6ac1c864efb5eef7e12d5ab15cf5b39b8e06..14f3aa0f04ccd58c4bd5848981615c0d5498e581 100644
--- a/var/spack/repos/builtin/packages/libxscrnsaver/package.py
+++ b/var/spack/repos/builtin/packages/libxscrnsaver/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxscrnsaver(Package):
+class Libxscrnsaver(AutotoolsPackage):
     """XScreenSaver - X11 Screen Saver extension client library"""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libXScrnSaver"
@@ -40,9 +40,3 @@ class Libxscrnsaver(Package):
     depends_on('scrnsaverproto@1.2:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxshmfence/package.py b/var/spack/repos/builtin/packages/libxshmfence/package.py
index d4f4c8520305316d5cac88e29d3725fbb4548383..63604865bde2e3316519b24eae6059666f29f525 100644
--- a/var/spack/repos/builtin/packages/libxshmfence/package.py
+++ b/var/spack/repos/builtin/packages/libxshmfence/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxshmfence(Package):
+class Libxshmfence(AutotoolsPackage):
     """libxshmfence - Shared memory 'SyncFence' synchronization primitive.
 
     This library offers a CPU-based synchronization primitive compatible
@@ -40,10 +40,3 @@ class Libxshmfence(Package):
     depends_on('xproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('check')
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxt/package.py b/var/spack/repos/builtin/packages/libxt/package.py
index c657c866b40d092b0bddc4f4d9b65b176f4fc913..1bab6854d9553fdaf0e17071b4a809db6dd11488 100644
--- a/var/spack/repos/builtin/packages/libxt/package.py
+++ b/var/spack/repos/builtin/packages/libxt/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxt(Package):
+class Libxt(AutotoolsPackage):
     """libXt - X Toolkit Intrinsics library."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libXt"
@@ -41,9 +41,3 @@ class Libxt(Package):
     depends_on('kbproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxtrap/package.py b/var/spack/repos/builtin/packages/libxtrap/package.py
index 4589f98a8704ba14cfc472b031fc32b958c2cd82..2b22fb1679ce1cd933d73490a5ee936e4a20c880 100644
--- a/var/spack/repos/builtin/packages/libxtrap/package.py
+++ b/var/spack/repos/builtin/packages/libxtrap/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxtrap(Package):
+class Libxtrap(AutotoolsPackage):
     """libXTrap is the Xlib-based client API for the DEC-XTRAP extension.
 
     XTrap was a proposed standard extension for X11R5 which facilitated the
@@ -50,9 +50,3 @@ class Libxtrap(Package):
     depends_on('xextproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxtst/package.py b/var/spack/repos/builtin/packages/libxtst/package.py
index 0d16643f94f545378bffcd70e277ed3bffead0bd..aaff481afc4bbb25bd93da06fbd5dad8e4696ef2 100644
--- a/var/spack/repos/builtin/packages/libxtst/package.py
+++ b/var/spack/repos/builtin/packages/libxtst/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxtst(Package):
+class Libxtst(AutotoolsPackage):
     """libXtst provides the Xlib-based client API for the XTEST & RECORD
     extensions.
 
@@ -51,9 +51,3 @@ class Libxtst(Package):
     depends_on('inputproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxv/package.py b/var/spack/repos/builtin/packages/libxv/package.py
index 03f10a1842c2c8084f978d835c148926f44c754c..2662da8647464d13856635e03e9db89236509f52 100644
--- a/var/spack/repos/builtin/packages/libxv/package.py
+++ b/var/spack/repos/builtin/packages/libxv/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxv(Package):
+class Libxv(AutotoolsPackage):
     """libXv - library for the X Video (Xv) extension to the
     X Window System."""
 
@@ -41,9 +41,3 @@ class Libxv(Package):
     depends_on('videoproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxvmc/package.py b/var/spack/repos/builtin/packages/libxvmc/package.py
index 9d5695c2c1036a8b60c0a453f35169f2c6168c02..8492f660a401d75e18adf134b281e93fe6141b3a 100644
--- a/var/spack/repos/builtin/packages/libxvmc/package.py
+++ b/var/spack/repos/builtin/packages/libxvmc/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxvmc(Package):
+class Libxvmc(AutotoolsPackage):
     """X.org libXvMC library."""
 
     homepage = "https://cgit.freedesktop.org/xorg/lib/libXvMC"
@@ -41,9 +41,3 @@ class Libxvmc(Package):
     depends_on('videoproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxxf86dga/package.py b/var/spack/repos/builtin/packages/libxxf86dga/package.py
index 292c5d213bd3f01ecf7558dc7b146425a9cf2024..501a40705fde68c30cbab1157957fa1afdb68684 100644
--- a/var/spack/repos/builtin/packages/libxxf86dga/package.py
+++ b/var/spack/repos/builtin/packages/libxxf86dga/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxxf86dga(Package):
+class Libxxf86dga(AutotoolsPackage):
     """libXxf86dga - Client library for the XFree86-DGA extension."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libXxf86dga"
@@ -41,9 +41,3 @@ class Libxxf86dga(Package):
     depends_on('xf86dgaproto@2.0.99.2:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxxf86misc/package.py b/var/spack/repos/builtin/packages/libxxf86misc/package.py
index 0247f8b57cfc7ac8964c5c9ab4f1981146579dd6..8e6f743183df9f8de66e781ad8ad3f8bc1952f8c 100644
--- a/var/spack/repos/builtin/packages/libxxf86misc/package.py
+++ b/var/spack/repos/builtin/packages/libxxf86misc/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxxf86misc(Package):
+class Libxxf86misc(AutotoolsPackage):
     """libXxf86misc - Extension library for the XFree86-Misc X extension."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libXxf86misc"
@@ -41,9 +41,3 @@ class Libxxf86misc(Package):
     depends_on('xf86miscproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/libxxf86vm/package.py b/var/spack/repos/builtin/packages/libxxf86vm/package.py
index feec5ff3d21fdb4e70b419024ed7d2cadefcc93b..6f91c62a2d2fee4f7ce9c2df2031e373c9d2660a 100644
--- a/var/spack/repos/builtin/packages/libxxf86vm/package.py
+++ b/var/spack/repos/builtin/packages/libxxf86vm/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Libxxf86vm(Package):
+class Libxxf86vm(AutotoolsPackage):
     """libXxf86vm - Extension library for the XFree86-VidMode X extension."""
 
     homepage = "http://cgit.freedesktop.org/xorg/lib/libXxf86vm"
@@ -41,9 +41,3 @@ class Libxxf86vm(Package):
     depends_on('xf86vidmodeproto@2.2.99.1:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/listres/package.py b/var/spack/repos/builtin/packages/listres/package.py
index c6b3d149f68c65df0a4d1031d4dbd634904f9c89..3727ddc0b496c93f8a3e43e594c5c5e2e9950454 100644
--- a/var/spack/repos/builtin/packages/listres/package.py
+++ b/var/spack/repos/builtin/packages/listres/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Listres(Package):
+class Listres(AutotoolsPackage):
     """The listres program generates a list of X resources for a widget
     in an X client written using a toolkit based on libXt."""
 
@@ -41,9 +41,3 @@ class Listres(Package):
     depends_on('xproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/lmod/package.py b/var/spack/repos/builtin/packages/lmod/package.py
index 9ac270bab5c97a2c79a6daeb362faff250ed3d6d..01df3c7f24b6a7640281459e72433c4fd74e95a6 100644
--- a/var/spack/repos/builtin/packages/lmod/package.py
+++ b/var/spack/repos/builtin/packages/lmod/package.py
@@ -26,7 +26,7 @@
 from glob import glob
 
 
-class Lmod(Package):
+class Lmod(AutotoolsPackage):
     """Lmod is a Lua based module system that easily handles the MODULEPATH
     Hierarchical problem. Environment Modules provide a convenient way to
     dynamically change the users' environment through modulefiles. This
@@ -66,7 +66,3 @@ def patch(self):
         if self.spec.version <= Version('6.4.3'):
             for tclscript in glob('src/*.tcl'):
                 filter_file(r'^#!.*tclsh', '#!@path_to_tclsh@', tclscript)
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-        make('install')
diff --git a/var/spack/repos/builtin/packages/lndir/package.py b/var/spack/repos/builtin/packages/lndir/package.py
index a7ce892502daf4318103f383d5c110ee5daeed21..ce3a199fe2a33271932a4ba13d649949a1361862 100644
--- a/var/spack/repos/builtin/packages/lndir/package.py
+++ b/var/spack/repos/builtin/packages/lndir/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Lndir(Package):
+class Lndir(AutotoolsPackage):
     """lndir - create a shadow directory of symbolic links to another
     directory tree."""
 
@@ -36,9 +36,3 @@ class Lndir(Package):
 
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/lwgrp/package.py b/var/spack/repos/builtin/packages/lwgrp/package.py
index 9322d69b9b0baf2f8bfd0d2b5f0c43584aea0069..169f7540be826802e4563c27a5a5d31161ca0b41 100644
--- a/var/spack/repos/builtin/packages/lwgrp/package.py
+++ b/var/spack/repos/builtin/packages/lwgrp/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Lwgrp(Package):
+class Lwgrp(AutotoolsPackage):
     """Thie light-weight group library provides process group
        representations using O(log N) space and time."""
 
@@ -35,8 +35,3 @@ class Lwgrp(Package):
     version('1.0.2', 'ab7ba3bdd8534a651da5076f47f27d8a')
 
     depends_on('mpi')
-
-    def install(self, spec, prefix):
-        configure("--prefix=" + prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/lwm2/package.py b/var/spack/repos/builtin/packages/lwm2/package.py
index 063204b84a455132e56742a86b6f50f947299201..03cb6342716ddeafbc3a8c8c1cdcdfcfdbeb5078 100644
--- a/var/spack/repos/builtin/packages/lwm2/package.py
+++ b/var/spack/repos/builtin/packages/lwm2/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Lwm2(Package):
+class Lwm2(AutotoolsPackage):
     """LWM2: Light Weight Measurement Module.  This is a PMPI module
        that can collect a number of time-sliced MPI and POSIX I/O
        measurements from a program.
@@ -36,8 +36,3 @@ class Lwm2(Package):
 
     depends_on("papi")
     depends_on("mpi")
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/makedepend/package.py b/var/spack/repos/builtin/packages/makedepend/package.py
index 5675793abc092fc120ac41dd110a07aa29f11d75..68be988d82f86ea078eb1e511ed02a15c055ff37 100644
--- a/var/spack/repos/builtin/packages/makedepend/package.py
+++ b/var/spack/repos/builtin/packages/makedepend/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Makedepend(Package):
+class Makedepend(AutotoolsPackage):
     """makedepend - create dependencies in makefiles."""
 
     homepage = "http://cgit.freedesktop.org/xorg/util/makedepend"
@@ -35,10 +35,3 @@ class Makedepend(Package):
 
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('check')
-        make('install')
diff --git a/var/spack/repos/builtin/packages/mesa/package.py b/var/spack/repos/builtin/packages/mesa/package.py
index f19bb466fd99a3044f195377777073cefe55ae26..094a7155d2009a85ba671f275f60bfa82aeb92aa 100644
--- a/var/spack/repos/builtin/packages/mesa/package.py
+++ b/var/spack/repos/builtin/packages/mesa/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Mesa(Package):
+class Mesa(AutotoolsPackage):
     """Mesa is an open-source implementation of the OpenGL
     specification - a system for rendering interactive 3D graphics."""
 
@@ -59,9 +59,3 @@ class Mesa(Package):
 
     # TODO: Add package for systemd, provides libudev
     # Using the system package manager to install systemd didn't work for me
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/mkfontdir/package.py b/var/spack/repos/builtin/packages/mkfontdir/package.py
index 15c85b24e46e354ce5ba2c9ee41bc25dad0c3147..1a43a028a86f6499e28c09fd3d64a710c2c097e2 100644
--- a/var/spack/repos/builtin/packages/mkfontdir/package.py
+++ b/var/spack/repos/builtin/packages/mkfontdir/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Mkfontdir(Package):
+class Mkfontdir(AutotoolsPackage):
     """mkfontdir creates the fonts.dir files needed by the legacy X server
     core font system.   The current implementation is a simple wrapper script
     around the mkfontscale program, which must be built and installed first."""
@@ -39,9 +39,3 @@ class Mkfontdir(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/mkfontscale/package.py b/var/spack/repos/builtin/packages/mkfontscale/package.py
index 4c907831b6874e75fcffbcc5b244ebd147c1c980..397ba03a629815276086100e717822bf74aa2c57 100644
--- a/var/spack/repos/builtin/packages/mkfontscale/package.py
+++ b/var/spack/repos/builtin/packages/mkfontscale/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Mkfontscale(Package):
+class Mkfontscale(AutotoolsPackage):
     """mkfontscale creates the fonts.scale and fonts.dir index files used by the
     legacy X11 font system."""
 
@@ -40,9 +40,3 @@ class Mkfontscale(Package):
     depends_on('xproto@7.0.25:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/mpc/package.py b/var/spack/repos/builtin/packages/mpc/package.py
index 2fe3900981158c19da82ac7c5d3d086b5f4675b3..40e7d95de9e2fe208b652b76017b88253c4bf2e2 100644
--- a/var/spack/repos/builtin/packages/mpc/package.py
+++ b/var/spack/repos/builtin/packages/mpc/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Mpc(Package):
+class Mpc(AutotoolsPackage):
     """Gnu Mpc is a C library for the arithmetic of complex numbers
        with arbitrarily high precision and correct rounding of the
        result."""
@@ -40,11 +40,6 @@ class Mpc(Package):
 
     def url_for_version(self, version):
         if version < Version("1.0.1"):
-            return "http://www.multiprecision.org/mpc/download/mpc-%s.tar.gz" % version  # NOQA
+            return "http://www.multiprecision.org/mpc/download/mpc-%s.tar.gz" % version
         else:
             return "ftp://ftp.gnu.org/gnu/mpc/mpc-%s.tar.gz" % version
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/mpfr/package.py b/var/spack/repos/builtin/packages/mpfr/package.py
index 4612d0384991863832bd0335fb8a43e82927daae..5dc33b2fb9825195cec2e736239b4c5043b6e034 100644
--- a/var/spack/repos/builtin/packages/mpfr/package.py
+++ b/var/spack/repos/builtin/packages/mpfr/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Mpfr(Package):
+class Mpfr(AutotoolsPackage):
     """The MPFR library is a C library for multiple-precision
        floating-point computations with correct rounding."""
     homepage = "http://www.mpfr.org"
@@ -36,8 +36,3 @@ class Mpfr(Package):
     version('3.1.2', 'ee2c3ac63bf0c2359bf08fc3ee094c19')
 
     depends_on('gmp')  # mpir is a drop-in replacement for this
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/mpip/package.py b/var/spack/repos/builtin/packages/mpip/package.py
index 78e1dca68ae471b52525ce537e43c887f479a6b3..235c66c882ec5683542d6e94e550ccebd695e8fc 100644
--- a/var/spack/repos/builtin/packages/mpip/package.py
+++ b/var/spack/repos/builtin/packages/mpip/package.py
@@ -26,7 +26,7 @@
 import os
 
 
-class Mpip(Package):
+class Mpip(AutotoolsPackage):
     """mpiP: Lightweight, Scalable MPI Profiling"""
     homepage = "http://mpip.sourceforge.net/"
     url      = "http://downloads.sourceforge.net/project/mpip/mpiP/mpiP-3.4.1/mpiP-3.4.1.tar.gz"
@@ -38,7 +38,5 @@ class Mpip(Package):
     depends_on('libunwind', when=os.uname()[4] == "x86_64", type="build")
     depends_on("mpi", type="build")
 
-    def install(self, spec, prefix):
-        configure("--prefix=" + prefix, "--without-f77")
-        make()
-        make("install")
+    def configure_args(self):
+        return ['--without-f77']
diff --git a/var/spack/repos/builtin/packages/mrnet/package.py b/var/spack/repos/builtin/packages/mrnet/package.py
index 9da9e29a2e9360cfa957584e1604e7696c3de502..b58d7a8c87e6ab3bcf17168412b83674e4d01b0e 100644
--- a/var/spack/repos/builtin/packages/mrnet/package.py
+++ b/var/spack/repos/builtin/packages/mrnet/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Mrnet(Package):
+class Mrnet(AutotoolsPackage):
     """The MRNet Multi-Cast Reduction Network."""
     homepage = "http://paradyn.org/mrnet"
     url      = "ftp://ftp.cs.wisc.edu/paradyn/mrnet/mrnet_5.0.1.tar.gz"
@@ -43,14 +43,13 @@ class Mrnet(Package):
 
     depends_on("boost")
 
-    def install(self, spec, prefix):
+    def configure_args(self):
+        spec = self.spec
+        config_args = ['--enable-shared']
+
         # Build the MRNet LW thread safe libraries when the
         # lwthreads variant is present
         if '+lwthreads' in spec:
-            configure("--prefix=%s" % prefix, "--enable-shared",
-                      "--enable-ltwt-threadsafe")
-        else:
-            configure("--prefix=%s" % prefix, "--enable-shared")
+            config_args.append('--enable-ltwt-threadsafe')
 
-        make()
-        make("install")
+        return config_args
diff --git a/var/spack/repos/builtin/packages/mxml/package.py b/var/spack/repos/builtin/packages/mxml/package.py
index 29e3b27d6ea74a995f3e27eaa5371a2aeb325e01..bae1984bde8c5c5d2b16c4188958f2f0432c48ec 100644
--- a/var/spack/repos/builtin/packages/mxml/package.py
+++ b/var/spack/repos/builtin/packages/mxml/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Mxml(Package):
+class Mxml(AutotoolsPackage):
     """Mini-XML is a small XML library that you can use to read and write XML
     and XML-like data files in your application without requiring large
     non-standard libraries.
@@ -44,7 +44,5 @@ class Mxml(Package):
     # (Can use whatever compiler you want to use)
     # Case statement to change CC and CXX flags
 
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix, "--disable-shared", 'CFLAGS=-static')
-        make()
-        make("install")
+    def configure_args(self):
+        return ['--disable-shared', 'CFLAGS=-static']
diff --git a/var/spack/repos/builtin/packages/nano/package.py b/var/spack/repos/builtin/packages/nano/package.py
index 3e87ec8ffe835ebb309fbe5753076918ec8b526b..d303b5e424305d4c28a52ca8ad857ea2d53cb55e 100644
--- a/var/spack/repos/builtin/packages/nano/package.py
+++ b/var/spack/repos/builtin/packages/nano/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Nano(Package):
+class Nano(AutotoolsPackage):
     """Tiny little text editor"""
 
     homepage = "http://www.nano-editor.org"
@@ -33,8 +33,3 @@ class Nano(Package):
 
     version('2.6.3', '1213c7f17916e65afefc95054c1f90f9')
     version('2.6.2', '58568a4b8a33841d774c25f285fc11c1')
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/nasm/package.py b/var/spack/repos/builtin/packages/nasm/package.py
index 9faccccaaea4dda5aff5e953858ebc60ef03c93b..979d002b4cf8337a7b31d0d1ce8c51c56d89018f 100644
--- a/var/spack/repos/builtin/packages/nasm/package.py
+++ b/var/spack/repos/builtin/packages/nasm/package.py
@@ -25,15 +25,10 @@
 from spack import *
 
 
-class Nasm(Package):
+class Nasm(AutotoolsPackage):
     """NASM (Netwide Assembler) is an 80x86 assembler designed for
        portability and modularity. It includes a disassembler as well."""
     homepage = "http://www.nasm.us"
     url      = "http://www.nasm.us/pub/nasm/releasebuilds/2.11.06/nasm-2.11.06.tar.xz"
 
     version('2.11.06', '2b958e9f5d200641e6fc9564977aecc5')
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/ncview/package.py b/var/spack/repos/builtin/packages/ncview/package.py
index 5c3cf300d2dde2392973938ec50b8b906350c0c8..da541c18b310061678423ae66a58733449c19379 100644
--- a/var/spack/repos/builtin/packages/ncview/package.py
+++ b/var/spack/repos/builtin/packages/ncview/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Ncview(Package):
+class Ncview(AutotoolsPackage):
     """Simple viewer for NetCDF files."""
     homepage = "http://meteora.ucsd.edu/~pierce/ncview_home_page.html"
     url      = "ftp://cirrus.ucsd.edu/pub/ncview/ncview-2.1.7.tar.gz"
@@ -36,9 +36,3 @@ class Ncview(Package):
     depends_on('udunits2')
     depends_on('libpng')
     depends_on('libxaw')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/netgauge/package.py b/var/spack/repos/builtin/packages/netgauge/package.py
index b57cdbe5f3720408d2d28021b643a2b56810ef80..e7e669410bab35d76e9d3030cc1839d89576cc1c 100644
--- a/var/spack/repos/builtin/packages/netgauge/package.py
+++ b/var/spack/repos/builtin/packages/netgauge/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Netgauge(Package):
+class Netgauge(AutotoolsPackage):
     """Netgauge is a high-precision network parameter measurement
     tool. It supports benchmarking of many different network protocols
     and communication patterns. The main focus lies on accuracy,
@@ -37,8 +37,3 @@ class Netgauge(Package):
     version('2.4.6', 'e0e040ec6452e93ca21ccc54deac1d7f')
 
     depends_on("mpi")
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/nettle/package.py b/var/spack/repos/builtin/packages/nettle/package.py
index 7e2b758bc0161e3303b940e99631028f1a2b1c28..6112dc6507e320e1b138d51874a4d310df968949 100644
--- a/var/spack/repos/builtin/packages/nettle/package.py
+++ b/var/spack/repos/builtin/packages/nettle/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Nettle(Package):
+class Nettle(AutotoolsPackage):
     """The Nettle package contains the low-level cryptographic library
     that is designed to fit easily in many contexts."""
 
@@ -37,11 +37,3 @@ class Nettle(Package):
 
     depends_on('gmp')
     depends_on('m4', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        if self.run_tests:
-            make('check')
-        make('install')
diff --git a/var/spack/repos/builtin/packages/npm/package.py b/var/spack/repos/builtin/packages/npm/package.py
index 7910a8af9babd552bd2fb196fc2bd66c49f07942..500674d1d8f15fb3a65b3f266ce93e1150491b23 100644
--- a/var/spack/repos/builtin/packages/npm/package.py
+++ b/var/spack/repos/builtin/packages/npm/package.py
@@ -26,7 +26,7 @@
 from spack import *
 
 
-class Npm(Package):
+class Npm(AutotoolsPackage):
     """npm: A package manager for javascript."""
 
     homepage = "https://github.com/npm/npm"
@@ -37,18 +37,10 @@ class Npm(Package):
     version('3.10.5', '46002413f4a71de9b0da5b506bf1d992')
 
     depends_on('node-js')
-    
+
     def setup_dependent_environment(self, spack_env, run_env, dependent_spec):
         npm_config_cache_dir = "%s/npm-cache" % dependent_spec.prefix
         if not os.path.isdir(npm_config_cache_dir):
             mkdir(npm_config_cache_dir)
         run_env.set('npm_config_cache', npm_config_cache_dir)
         spack_env.set('npm_config_cache', npm_config_cache_dir)
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        if self.run_tests:
-            make('test')
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/ocaml/package.py b/var/spack/repos/builtin/packages/ocaml/package.py
index 9488d3b7a62ff795172f17d7fc5e373fc916c83e..855e2d7b3bc88f152139c0f62e4a68ab7dd175d8 100644
--- a/var/spack/repos/builtin/packages/ocaml/package.py
+++ b/var/spack/repos/builtin/packages/ocaml/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Ocaml(Package):
+class Ocaml(AutotoolsPackage):
     """OCaml is an industrial strength programming language supporting
        functional, imperative and object-oriented styles"""
 
@@ -36,8 +36,4 @@ class Ocaml(Package):
 
     depends_on('ncurses')
 
-    def install(self, spec, prefix):
-        configure('-prefix', '{0}'.format(prefix))
-
-        make('world.opt')
-        make('install')
+    build_targets = ['world.opt']
diff --git a/var/spack/repos/builtin/packages/oclock/package.py b/var/spack/repos/builtin/packages/oclock/package.py
index 84da93c36ec8662569d081b0034f3d85baf8f7d3..ec656b23f12125f625e2b128961f3dea53a02837 100644
--- a/var/spack/repos/builtin/packages/oclock/package.py
+++ b/var/spack/repos/builtin/packages/oclock/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Oclock(Package):
+class Oclock(AutotoolsPackage):
     """oclock is a simple analog clock using the SHAPE extension to make
     a round (possibly transparent) window."""
 
@@ -42,9 +42,3 @@ class Oclock(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/pango/package.py b/var/spack/repos/builtin/packages/pango/package.py
index c45054be5811358814d0a1f81f45930559d84ffe..0f082527b9642febad9ab1cf93d0f3811ebff2e9 100644
--- a/var/spack/repos/builtin/packages/pango/package.py
+++ b/var/spack/repos/builtin/packages/pango/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Pango(Package):
+class Pango(AutotoolsPackage):
     """Pango is a library for laying out and rendering of text, with
        an emphasis on internationalization. It can be used anywhere
        that text layout is needed, though most of the work on Pango so
@@ -49,6 +49,4 @@ class Pango(Package):
     depends_on("glib")
 
     def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
         make("install", parallel=False)
diff --git a/var/spack/repos/builtin/packages/parallel/package.py b/var/spack/repos/builtin/packages/parallel/package.py
index 81c019565125eb95eec5f03ee5bb1d69764123ee..4297e8acb011f35375eb6d58aeed6173748bcd6a 100644
--- a/var/spack/repos/builtin/packages/parallel/package.py
+++ b/var/spack/repos/builtin/packages/parallel/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Parallel(Package):
+class Parallel(AutotoolsPackage):
     """GNU parallel is a shell tool for executing jobs in parallel using
     one or more computers. A job can be a single command or a small
     script that has to be run for each of the lines in the input.
@@ -36,9 +36,3 @@ class Parallel(Package):
 
     version('20160422', '24621f684130472694333709bd4454cb')
     version('20160322', '4e81e0d36902ab4c4e969ee6f35e6e57')
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/patchelf/package.py b/var/spack/repos/builtin/packages/patchelf/package.py
index c391f491ebb7e33cbe7965eb477e72e86c8f2a01..1d429361b69b1f82f688fee4c0dbe24e71a1cfa1 100644
--- a/var/spack/repos/builtin/packages/patchelf/package.py
+++ b/var/spack/repos/builtin/packages/patchelf/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Patchelf(Package):
+class Patchelf(AutotoolsPackage):
     """PatchELF is a small utility to modify the dynamic linker and RPATH of
        ELF executables."""
 
@@ -37,8 +37,3 @@ class Patchelf(Package):
 
     version('0.9', '3c265508526760f233620f35d79c79fc')
     version('0.8', '407b229e6a681ffb0e2cdd5915cb2d01')
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/pcre2/package.py b/var/spack/repos/builtin/packages/pcre2/package.py
index a2739e0584460738b22601dea4b857a558224d02..d2915dd60e097a2a2a120ba0ab8f8911ffd0fbc6 100644
--- a/var/spack/repos/builtin/packages/pcre2/package.py
+++ b/var/spack/repos/builtin/packages/pcre2/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Pcre2(Package):
+class Pcre2(AutotoolsPackage):
     """The PCRE2 package contains Perl Compatible Regular Expression
        libraries. These are useful for implementing regular expression
        pattern matching using the same syntax and semantics as Perl 5."""
@@ -33,8 +33,3 @@ class Pcre2(Package):
     url      = "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre2-10.20.tar.bz2"
 
     version('10.20', 'dcd027c57ecfdc8a6c3af9d0acf5e3f7')
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/pdt/package.py b/var/spack/repos/builtin/packages/pdt/package.py
index bed01aeefb8cf118ab999d6f02db5fd5fc91747f..081c32c861d922dc1667277959cd1bf662634de3 100644
--- a/var/spack/repos/builtin/packages/pdt/package.py
+++ b/var/spack/repos/builtin/packages/pdt/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Pdt(Package):
+class Pdt(AutotoolsPackage):
     """Program Database Toolkit (PDT) is a framework for analyzing source
        code written in several programming languages and for making rich
        program knowledge accessible to developers of static and dynamic
@@ -43,8 +43,3 @@ class Pdt(Package):
     version('3.20',   'c3edabe202926abe04552e33cd39672d')
     version('3.19',   '5c5e1e6607086aa13bf4b1b9befc5864')
     version('3.18.1', 'e401534f5c476c3e77f05b7f73b6c4f2')
-
-    def install(self, spec, prefix):
-        configure('-prefix=%s' % prefix)
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/presentproto/package.py b/var/spack/repos/builtin/packages/presentproto/package.py
index ca145abb6b1a9db1edb678e4929b8a7a5958273f..32560ade65ca9259b59ddb8945a3f514755ac2a1 100644
--- a/var/spack/repos/builtin/packages/presentproto/package.py
+++ b/var/spack/repos/builtin/packages/presentproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Presentproto(Package):
+class Presentproto(AutotoolsPackage):
     """Present protocol specification and Xlib/Xserver headers."""
 
     homepage = "https://cgit.freedesktop.org/xorg/proto/presentproto/"
@@ -35,8 +35,3 @@ class Presentproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/printproto/package.py b/var/spack/repos/builtin/packages/printproto/package.py
index 151924dd490b9982c71a6b60b66c1de7678b9fb5..0f905c3172f0c0e3342030f5c46a4e9cbadb1233 100644
--- a/var/spack/repos/builtin/packages/printproto/package.py
+++ b/var/spack/repos/builtin/packages/printproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Printproto(Package):
+class Printproto(AutotoolsPackage):
     """Xprint extension to the X11 protocol - a portable, network-transparent
     printing system."""
 
@@ -36,8 +36,3 @@ class Printproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/proj/package.py b/var/spack/repos/builtin/packages/proj/package.py
index 06ab6108b636dea55d53d05c7991ce4d0bf35047..3008baa690ee2b51600bc69ba6283379b73dce7c 100644
--- a/var/spack/repos/builtin/packages/proj/package.py
+++ b/var/spack/repos/builtin/packages/proj/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Proj(Package):
+class Proj(AutotoolsPackage):
     """Cartographic Projections"""
     homepage = "https://github.com/OSGeo/proj.4/wiki"
     url      = "http://download.osgeo.org/proj/proj-4.9.2.tar.gz"
@@ -35,11 +35,3 @@ class Proj(Package):
     version('4.8.0', 'd815838c92a29179298c126effbb1537')
     version('4.7.0', '927d34623b52e0209ba2bfcca18fe8cd')
     version('4.6.1', '7dbaab8431ad50c25669fd3fb28dc493')
-
-    # No dependencies
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/protobuf/package.py b/var/spack/repos/builtin/packages/protobuf/package.py
index bf0073b16a82bde555d1d0e89bf5601cb3a91ae3..6faa0376ada5384f3a634d7910ea9d9b32d18ea9 100644
--- a/var/spack/repos/builtin/packages/protobuf/package.py
+++ b/var/spack/repos/builtin/packages/protobuf/package.py
@@ -25,16 +25,10 @@
 from spack import *
 
 
-class Protobuf(Package):
+class Protobuf(AutotoolsPackage):
     """Google's data interchange format."""
 
     homepage = "https://developers.google.com/protocol-buffers"
     url      = "https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.bz2"
 
     version('2.5.0', 'a72001a9067a4c2c4e0e836d0f92ece4')
-
-    def install(self, spec, prefix):
-        configure("--prefix=" + prefix)
-        make()
-        make("check")
-        make("install")
diff --git a/var/spack/repos/builtin/packages/proxymngr/package.py b/var/spack/repos/builtin/packages/proxymngr/package.py
index 896f4a516b7c07d9893620f0f58f5bf6d4fffacf..896f2d00b747ac463a007032bdab3de70c536f74 100644
--- a/var/spack/repos/builtin/packages/proxymngr/package.py
+++ b/var/spack/repos/builtin/packages/proxymngr/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Proxymngr(Package):
+class Proxymngr(AutotoolsPackage):
     """The proxy manager (proxymngr) is responsible for resolving requests from
     xfindproxy (and other similar clients), starting new proxies when
     appropriate, and keeping track of all of the available proxy services.
@@ -44,9 +44,3 @@ class Proxymngr(Package):
     depends_on('xproxymanagementprotocol', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/py-xpyb/package.py b/var/spack/repos/builtin/packages/py-xpyb/package.py
index 49c6343c4528496cd9e40f04edfbecef818564bb..136da54dcf35cfbb1a4ee071a70c7d0a03757aa5 100644
--- a/var/spack/repos/builtin/packages/py-xpyb/package.py
+++ b/var/spack/repos/builtin/packages/py-xpyb/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class PyXpyb(Package):
+class PyXpyb(AutotoolsPackage):
     """xpyb provides a Python binding to the X Window System protocol
     via libxcb."""
 
@@ -39,9 +39,3 @@ class PyXpyb(Package):
     depends_on('libxcb@1.5:')
 
     depends_on('xcb-proto@1.7.1:', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/randrproto/package.py b/var/spack/repos/builtin/packages/randrproto/package.py
index ecff886a3ba58a5dcd9425a3894ea13c39bee195..ff336204486e950ed64d98da3181036d6120ed29 100644
--- a/var/spack/repos/builtin/packages/randrproto/package.py
+++ b/var/spack/repos/builtin/packages/randrproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Randrproto(Package):
+class Randrproto(AutotoolsPackage):
     """X Resize and Rotate Extension (RandR).
 
     This extension defines a protocol for clients to dynamically change X
@@ -39,8 +39,3 @@ class Randrproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/readline/package.py b/var/spack/repos/builtin/packages/readline/package.py
index abb6ba04ce4d282de54b8c95d5052916481ca307..ab9454b0fc03372c62553dd788afb690bbe1f820 100644
--- a/var/spack/repos/builtin/packages/readline/package.py
+++ b/var/spack/repos/builtin/packages/readline/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Readline(Package):
+class Readline(AutotoolsPackage):
     """The GNU Readline library provides a set of functions for use by
        applications that allow users to edit command lines as they
        are typed in. Both Emacs and vi editing modes are
@@ -40,7 +40,5 @@ class Readline(Package):
 
     depends_on("ncurses")
 
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
+    def build(self, spec, prefix):
         make("SHLIB_LIBS=-lncurses")
-        make("install")
diff --git a/var/spack/repos/builtin/packages/recordproto/package.py b/var/spack/repos/builtin/packages/recordproto/package.py
index 02018a76ff50f45143631fbb0132d7a8bcce4d6f..b38eeae0790dd8958fd536a50bee0ffd57f39c18 100644
--- a/var/spack/repos/builtin/packages/recordproto/package.py
+++ b/var/spack/repos/builtin/packages/recordproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Recordproto(Package):
+class Recordproto(AutotoolsPackage):
     """X Record Extension.
 
     This extension defines a protocol for the recording and playback of user
@@ -38,8 +38,3 @@ class Recordproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/rendercheck/package.py b/var/spack/repos/builtin/packages/rendercheck/package.py
index 07cc809e9ad38cebe6d448e30b87c5f222ce36d5..f53925fe287733952ac793b5c0660916e3226086 100644
--- a/var/spack/repos/builtin/packages/rendercheck/package.py
+++ b/var/spack/repos/builtin/packages/rendercheck/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Rendercheck(Package):
+class Rendercheck(AutotoolsPackage):
     """rendercheck is a program to test a Render extension implementation
     against separate calculations of expected output."""
 
@@ -40,9 +40,3 @@ class Rendercheck(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/renderproto/package.py b/var/spack/repos/builtin/packages/renderproto/package.py
index 10be4c941c4ab0f4681b03f1d989ac742ee836d8..81348d7347ec05cecb70408b32807350e0f067fc 100644
--- a/var/spack/repos/builtin/packages/renderproto/package.py
+++ b/var/spack/repos/builtin/packages/renderproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Renderproto(Package):
+class Renderproto(AutotoolsPackage):
     """X Rendering Extension.
 
     This extension defines the protcol for a digital image composition as
@@ -38,8 +38,3 @@ class Renderproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/resourceproto/package.py b/var/spack/repos/builtin/packages/resourceproto/package.py
index 4e0a495d83ff185fba2cdcab44bf80920ed37c61..11e143b5fc3752cdabeb6ce2c487910e3db71173 100644
--- a/var/spack/repos/builtin/packages/resourceproto/package.py
+++ b/var/spack/repos/builtin/packages/resourceproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Resourceproto(Package):
+class Resourceproto(AutotoolsPackage):
     """X Resource Extension.
 
     This extension defines a protocol that allows a client to query the
@@ -38,8 +38,3 @@ class Resourceproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/rgb/package.py b/var/spack/repos/builtin/packages/rgb/package.py
index ddc5419305537b225e1fb07bcd03b8603c9d1366..985b90449d5f9881f3f404fab2505eec0c1dd017 100644
--- a/var/spack/repos/builtin/packages/rgb/package.py
+++ b/var/spack/repos/builtin/packages/rgb/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Rgb(Package):
+class Rgb(AutotoolsPackage):
     """X color name database.
 
     This package includes both the list mapping X color names to RGB values
@@ -42,10 +42,3 @@ class Rgb(Package):
     depends_on('xorg-server')
 
     depends_on('xproto', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('check')
-        make('install')
diff --git a/var/spack/repos/builtin/packages/rstart/package.py b/var/spack/repos/builtin/packages/rstart/package.py
index 7b80e88ae7e1a5056321b2e49d33d533bd009991..198c9c8be521b836e384bea89235214cf7a37539 100644
--- a/var/spack/repos/builtin/packages/rstart/package.py
+++ b/var/spack/repos/builtin/packages/rstart/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Rstart(Package):
+class Rstart(AutotoolsPackage):
     """This package includes both the client and server sides implementing
     the protocol described in the "A Flexible Remote Execution Protocol
     Based on rsh" paper found in the specs/ subdirectory.
@@ -41,9 +41,3 @@ class Rstart(Package):
     depends_on('xproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/rsync/package.py b/var/spack/repos/builtin/packages/rsync/package.py
index 4e741b255f299205a904554ec7fdb33a23a32b3f..2c21262b39e94c6c7d4e4237904899625e30603b 100644
--- a/var/spack/repos/builtin/packages/rsync/package.py
+++ b/var/spack/repos/builtin/packages/rsync/package.py
@@ -25,16 +25,10 @@
 from spack import *
 
 
-class Rsync(Package):
+class Rsync(AutotoolsPackage):
     """An open source utility that provides fast incremental file transfer."""
     homepage = "https://rsync.samba.org"
     url      = "https://download.samba.org/pub/rsync/rsync-3.1.1.tar.gz"
 
     version('3.1.2', '0f758d7e000c0f7f7d3792610fad70cb')
     version('3.1.1', '43bd6676f0b404326eee2d63be3cdcfe')
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/screen/package.py b/var/spack/repos/builtin/packages/screen/package.py
index 7edfb44a4d9a2f73f9586ee9a96e1cadd7f9584a..542612f2075efcc618f80e1ab959884dfa1a59d4 100644
--- a/var/spack/repos/builtin/packages/screen/package.py
+++ b/var/spack/repos/builtin/packages/screen/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Screen(Package):
+class Screen(AutotoolsPackage):
     """Screen is a full-screen window manager that multiplexes a physical
     terminal between several processes, typically interactive shells.
     """
@@ -51,8 +51,3 @@ class Screen(Package):
     version('3.7.1', '27cdd29318446561ef7c966041cbd2c9')
 
     depends_on('ncurses')
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/scripts/package.py b/var/spack/repos/builtin/packages/scripts/package.py
index 7086cfd6fe1499e8b579cebb6ba344a802eb2733..4bdf63e70ad7e9eb184b4cd55401cea078c58ac2 100644
--- a/var/spack/repos/builtin/packages/scripts/package.py
+++ b/var/spack/repos/builtin/packages/scripts/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Scripts(Package):
+class Scripts(AutotoolsPackage):
     """Various X related scripts."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/scripts"
@@ -37,9 +37,3 @@ class Scripts(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/scrnsaverproto/package.py b/var/spack/repos/builtin/packages/scrnsaverproto/package.py
index 3675fd0effadc8bc38897165219bc7e79861d22b..c849d127135c73f63db1f97fe0a52db8064651fe 100644
--- a/var/spack/repos/builtin/packages/scrnsaverproto/package.py
+++ b/var/spack/repos/builtin/packages/scrnsaverproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Scrnsaverproto(Package):
+class Scrnsaverproto(AutotoolsPackage):
     """MIT Screen Saver Extension.
 
     This extension defines a protocol to control screensaver features
@@ -38,8 +38,3 @@ class Scrnsaverproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/sdl2-image/package.py b/var/spack/repos/builtin/packages/sdl2-image/package.py
index 5df207ac55b17c4fefde5dbb8ea3475ec05d8029..6e953a145144974b1a32cae744d19d4e5c0e3a70 100644
--- a/var/spack/repos/builtin/packages/sdl2-image/package.py
+++ b/var/spack/repos/builtin/packages/sdl2-image/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Sdl2Image(Package):
+class Sdl2Image(AutotoolsPackage):
     """SDL is designed to provide the bare bones of creating a graphical
     program. """
 
@@ -35,9 +35,3 @@ class Sdl2Image(Package):
     version('2.0.1', 'd94b94555ba022fa249a53a021dc3606')
 
     depends_on('sdl2')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/sed/package.py b/var/spack/repos/builtin/packages/sed/package.py
index f2a240e1b3d67ef6c0dbf55674a836f781dc9fcb..57e00f4e77b19f51de79d8174a643296cbacc284 100644
--- a/var/spack/repos/builtin/packages/sed/package.py
+++ b/var/spack/repos/builtin/packages/sed/package.py
@@ -25,15 +25,9 @@
 from spack import *
 
 
-class Sed(Package):
+class Sed(AutotoolsPackage):
     """GNU implementation of the famous stream editor."""
     homepage = "http://www.gnu.org/software/sed/"
     url      = "http://ftpmirror.gnu.org/sed/sed-4.2.2.tar.bz2"
 
     version('4.2.2', '7ffe1c7cdc3233e1e0c4b502df253974')
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/sessreg/package.py b/var/spack/repos/builtin/packages/sessreg/package.py
index 2ab505cc7ae10c249f0ac6262ad9c8294824e57d..d50e65f4b03963a975a1618e548e258449d853f6 100644
--- a/var/spack/repos/builtin/packages/sessreg/package.py
+++ b/var/spack/repos/builtin/packages/sessreg/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Sessreg(Package):
+class Sessreg(AutotoolsPackage):
     """Sessreg is a simple program for managing utmp/wtmp entries for X
     sessions. It was originally written for use with xdm, but may also be
     used with other display managers such as gdm or kdm."""
@@ -43,9 +43,3 @@ def patch(self):
         kwargs = {'string': True}
         filter_file('$(CPP) $(DEFS)', '$(CPP) -P $(DEFS)',
                     'man/Makefile.in', **kwargs)
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/setxkbmap/package.py b/var/spack/repos/builtin/packages/setxkbmap/package.py
index db365530c9442a468bf6c60f6f7cf4997c0cd778..2c0f4380e30eceadfad4146a24a1307fa56f1c80 100644
--- a/var/spack/repos/builtin/packages/setxkbmap/package.py
+++ b/var/spack/repos/builtin/packages/setxkbmap/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Setxkbmap(Package):
+class Setxkbmap(AutotoolsPackage):
     """setxkbmap is an X11 client to change the keymaps in the X server for a
     specified keyboard to use the layout determined by the options listed
     on the command line."""
@@ -40,9 +40,3 @@ class Setxkbmap(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/showfont/package.py b/var/spack/repos/builtin/packages/showfont/package.py
index 232988193bf60477b2cf6cb052aa45355eee9d27..2dd836031181dad62938f03371591ba1fa244e06 100644
--- a/var/spack/repos/builtin/packages/showfont/package.py
+++ b/var/spack/repos/builtin/packages/showfont/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Showfont(Package):
+class Showfont(AutotoolsPackage):
     """showfont displays data about a font from an X font server.
     The information shown includes font information, font properties,
     character metrics, and character bitmaps."""
@@ -39,9 +39,3 @@ class Showfont(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/smproxy/package.py b/var/spack/repos/builtin/packages/smproxy/package.py
index 5bdde800d48bc34306512caadea0fa80807afb9f..f7c7ebfe990b3c22e67c0e2ff6852fe9a6bb05cc 100644
--- a/var/spack/repos/builtin/packages/smproxy/package.py
+++ b/var/spack/repos/builtin/packages/smproxy/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Smproxy(Package):
+class Smproxy(AutotoolsPackage):
     """smproxy allows X applications that do not support X11R6 session
     management to participate in an X11R6 session."""
 
@@ -41,9 +41,3 @@ class Smproxy(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/snappy/package.py b/var/spack/repos/builtin/packages/snappy/package.py
index 1e94980c925d8099fcad1598833cf321322d92c1..c7b8118a24855948216ab84a86d6c1293c1511b0 100644
--- a/var/spack/repos/builtin/packages/snappy/package.py
+++ b/var/spack/repos/builtin/packages/snappy/package.py
@@ -25,15 +25,10 @@
 from spack import *
 
 
-class Snappy(Package):
+class Snappy(AutotoolsPackage):
     """A fast compressor/decompressor: https://code.google.com/p/snappy"""
 
     homepage = "https://code.google.com/p/snappy"
     url      = "https://github.com/google/snappy/releases/download/1.1.3/snappy-1.1.3.tar.gz"
 
     version('1.1.3', '7358c82f133dc77798e4c2062a749b73')
-
-    def install(self, spec, prefix):
-        configure("--prefix=" + prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/sowing/package.py b/var/spack/repos/builtin/packages/sowing/package.py
index f7f6297488a853db4a920001653a21856425dac6..5dc23579b8005743ba2069489d065f2768493471 100644
--- a/var/spack/repos/builtin/packages/sowing/package.py
+++ b/var/spack/repos/builtin/packages/sowing/package.py
@@ -26,7 +26,7 @@
 from spack import *
 
 
-class Sowing(Package):
+class Sowing(AutotoolsPackage):
     """Sowing generates Fortran interfaces and documentation for PETSc
        and MPICH.
     """
@@ -36,7 +36,5 @@ class Sowing(Package):
 
     version('1.1.23-p1', '65aaf3ae2a4c0f30d532fec291702e16')
 
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
+    def build(self, spec, prefix):
         make('ALL', parallel=False)
-        make("install")
diff --git a/var/spack/repos/builtin/packages/sparsehash/package.py b/var/spack/repos/builtin/packages/sparsehash/package.py
index e5abd42ae6e0d65f0d9af2433bc88eba395ceeae..6216987bce1824815489c61e84831ebdac70c6c3 100644
--- a/var/spack/repos/builtin/packages/sparsehash/package.py
+++ b/var/spack/repos/builtin/packages/sparsehash/package.py
@@ -25,15 +25,9 @@
 from spack import *
 
 
-class Sparsehash(Package):
+class Sparsehash(AutotoolsPackage):
     """Sparse and dense hash-tables for C++ by Google"""
     homepage = "https://github.com/sparsehash/sparsehash"
     url      = "https://github.com/sparsehash/sparsehash/archive/sparsehash-2.0.3.tar.gz"
 
     version('2.0.3', 'd8d5e2538c1c25577b3f066d7a55e99e')
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/spindle/package.py b/var/spack/repos/builtin/packages/spindle/package.py
index 213d41e97059f1f447e55b37b32c888cdd667276..c23fb56f034106292b032237f6bfd5cc8be89e64 100644
--- a/var/spack/repos/builtin/packages/spindle/package.py
+++ b/var/spack/repos/builtin/packages/spindle/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Spindle(Package):
+class Spindle(AutotoolsPackage):
     """Spindle improves the library-loading performance of dynamically
        linked HPC applications.  Without Spindle large MPI jobs can
        overload on a shared file system when loading dynamically
@@ -38,8 +38,3 @@ class Spindle(Package):
     version('0.8.1', 'f11793a6b9d8df2cd231fccb2857d912')
 
     depends_on("launchmon")
-
-    def install(self, spec, prefix):
-        configure("--prefix=" + prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/spot/package.py b/var/spack/repos/builtin/packages/spot/package.py
index 096aa24c0275d3921cfc2db5671354fa07fe724a..abb1776aaf4b9562c5dcf8b0aad1de27a868d011 100644
--- a/var/spack/repos/builtin/packages/spot/package.py
+++ b/var/spack/repos/builtin/packages/spot/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Spot(Package):
+class Spot(AutotoolsPackage):
     """Spot is a C++11 library for omega-automata manipulation and model
        checking."""
     homepage = "https://spot.lrde.epita.fr/index.html"
@@ -35,9 +35,3 @@ class Spot(Package):
 
     # depends_on("gcc@4.8:", type='build')
     depends_on("python@3.2:")
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/swig/package.py b/var/spack/repos/builtin/packages/swig/package.py
index b43246dcee2b579779075240dbdad8f8a85405aa..77f2c69772ed5e6080a1c2091d8cc919d128864e 100644
--- a/var/spack/repos/builtin/packages/swig/package.py
+++ b/var/spack/repos/builtin/packages/swig/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Swig(Package):
+class Swig(AutotoolsPackage):
     """SWIG is an interface compiler that connects programs written in
        C and C++ with scripting languages such as Perl, Python, Ruby,
        and Tcl. It works by taking the declarations found in C/C++
@@ -46,8 +46,3 @@ class Swig(Package):
     version('1.3.40', '2df766c9e03e02811b1ab4bba1c7b9cc')
 
     depends_on('pcre')
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-        make()
-        make('install')
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 c98e964efa6090f13f38f489a344fd48329ecb88..9721554663f594bf884cf8a38bd3f6b65cb345e9 100644
--- a/var/spack/repos/builtin/packages/the-silver-searcher/package.py
+++ b/var/spack/repos/builtin/packages/the-silver-searcher/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class TheSilverSearcher(Package):
+class TheSilverSearcher(AutotoolsPackage):
     """Fast recursive grep alternative"""
     homepage = "http://geoff.greer.fm/ag/"
     url      = "http://geoff.greer.fm/ag/releases/the_silver_searcher-0.32.0.tar.gz"
@@ -36,9 +36,3 @@ class TheSilverSearcher(Package):
     depends_on('pcre')
     depends_on('xz')
     depends_on('pkg-config', type='build')
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/transset/package.py b/var/spack/repos/builtin/packages/transset/package.py
index 0f607387417dc52e2826a6ecce156aa48b3e1aa1..27f3a2f8823df0a7637ca78d3bf8eebbec0a2ab9 100644
--- a/var/spack/repos/builtin/packages/transset/package.py
+++ b/var/spack/repos/builtin/packages/transset/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Transset(Package):
+class Transset(AutotoolsPackage):
     """transset is an utility for setting opacity property."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/transset"
@@ -38,9 +38,3 @@ class Transset(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/trapproto/package.py b/var/spack/repos/builtin/packages/trapproto/package.py
index eebab74410035b5c09398c39c4d656cb556dff48..879ac569dfb212563527070545162b9ee5d5792d 100644
--- a/var/spack/repos/builtin/packages/trapproto/package.py
+++ b/var/spack/repos/builtin/packages/trapproto/package.py
@@ -25,15 +25,10 @@
 from spack import *
 
 
-class Trapproto(Package):
+class Trapproto(AutotoolsPackage):
     """X.org TrapProto protocol headers."""
 
     homepage = "https://cgit.freedesktop.org/xorg/proto/trapproto"
     url      = "https://www.x.org/archive/individual/proto/trapproto-3.4.3.tar.gz"
 
     version('3.4.3', '1344759ae8d7d923e64f5eec078a679b')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/twm/package.py b/var/spack/repos/builtin/packages/twm/package.py
index 3e37f4903d3b701e75e7718021c2728f9365cf7d..a1a221b969e9b3f0ff0757bf37e502330d5b0111 100644
--- a/var/spack/repos/builtin/packages/twm/package.py
+++ b/var/spack/repos/builtin/packages/twm/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Twm(Package):
+class Twm(AutotoolsPackage):
     """twm is a window manager for the X Window System.  It provides
     titlebars, shaped windows, several forms of icon management,
     user-defined macro functions, click-to-type and pointer-driven
@@ -48,9 +48,3 @@ class Twm(Package):
     depends_on('flex', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/uberftp/package.py b/var/spack/repos/builtin/packages/uberftp/package.py
index b0c6c8a42f0ddff1de59ae0eb330f31c0f0e0923..f9d0174b78acbf8ff629880b85297fb097ce354e 100644
--- a/var/spack/repos/builtin/packages/uberftp/package.py
+++ b/var/spack/repos/builtin/packages/uberftp/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Uberftp(Package):
+class Uberftp(AutotoolsPackage):
     """UberFTP is an interactive (text-based) client for GridFTP"""
 
     homepage = "http://toolkit.globus.org/grid_software/data/uberftp.php"
@@ -36,9 +36,3 @@ class Uberftp(Package):
     version('2_6', '784210976f259f9d19c0798c19778d34')
 
     depends_on('globus-toolkit')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/uncrustify/package.py b/var/spack/repos/builtin/packages/uncrustify/package.py
index c3182d0dc8943e9cd12b714b61b22ce7a76a2852..7e4b3bd24d0e6fc811643c770dda917aab3d5c41 100644
--- a/var/spack/repos/builtin/packages/uncrustify/package.py
+++ b/var/spack/repos/builtin/packages/uncrustify/package.py
@@ -25,15 +25,10 @@
 from spack import *
 
 
-class Uncrustify(Package):
+class Uncrustify(AutotoolsPackage):
     """Source Code Beautifier for C, C++, C#, ObjectiveC, Java, and others."""
 
     homepage = "http://uncrustify.sourceforge.net/"
     url      = "http://downloads.sourceforge.net/project/uncrustify/uncrustify/uncrustify-0.61/uncrustify-0.61.tar.gz"
 
     version('0.61', 'b6140106e74c64e831d0b1c4b6cf7727')
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/unixodbc/package.py b/var/spack/repos/builtin/packages/unixodbc/package.py
index 15de127b7eac68601e64cd596eaa96dbd53743c4..cba34b29c3f6246423dc8a61725b024d92667e19 100644
--- a/var/spack/repos/builtin/packages/unixodbc/package.py
+++ b/var/spack/repos/builtin/packages/unixodbc/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Unixodbc(Package):
+class Unixodbc(AutotoolsPackage):
     """ODBC is an open specification for providing application developers with
     a predictable API with which to access Data Sources. Data Sources include
     SQL Servers and any Data Source with an ODBC Driver."""
@@ -34,9 +34,3 @@ class Unixodbc(Package):
     url      = "ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.4.tar.gz"
 
     version('2.3.4', 'bd25d261ca1808c947cb687e2034be81')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/util-macros/package.py b/var/spack/repos/builtin/packages/util-macros/package.py
index 486d4463b0dc355a0532d6a734587d5a1050fca0..181302a34a0ab3416c4beceee43ce3a7c65a9426 100644
--- a/var/spack/repos/builtin/packages/util-macros/package.py
+++ b/var/spack/repos/builtin/packages/util-macros/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class UtilMacros(Package):
+class UtilMacros(AutotoolsPackage):
     """This is a set of autoconf macros used by the configure.ac scripts in
     other Xorg modular packages, and is needed to generate new versions
     of their configure scripts with autoconf."""
@@ -34,8 +34,3 @@ class UtilMacros(Package):
     url = "https://www.x.org/archive/individual/util/util-macros-1.19.0.tar.bz2"
 
     version('1.19.0', '1cf984125e75f8204938d998a8b6c1e1')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/videoproto/package.py b/var/spack/repos/builtin/packages/videoproto/package.py
index 93b0e61ca430663b3a53857e4bc806736c182469..d1495fe33dae5b5c272634b30ad37faa615eb935 100644
--- a/var/spack/repos/builtin/packages/videoproto/package.py
+++ b/var/spack/repos/builtin/packages/videoproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Videoproto(Package):
+class Videoproto(AutotoolsPackage):
     """X Video Extension.
 
     This extension provides a protocol for a video output mechanism,
@@ -38,8 +38,3 @@ class Videoproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/viewres/package.py b/var/spack/repos/builtin/packages/viewres/package.py
index 3a3255507569a801efbd354e19b37f6483bca585..9e6daafc8b3f46931e286408e95fd95f570a4623 100644
--- a/var/spack/repos/builtin/packages/viewres/package.py
+++ b/var/spack/repos/builtin/packages/viewres/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Viewres(Package):
+class Viewres(AutotoolsPackage):
     """viewres displays a tree showing the widget class hierarchy of the
     Athena Widget Set (libXaw)."""
 
@@ -40,9 +40,3 @@ class Viewres(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/windowswmproto/package.py b/var/spack/repos/builtin/packages/windowswmproto/package.py
index f163d1afb0b3d2f771a01c382c6d3452f8cd164d..9341cbd22c74519a0596890ebf6c09f2840ebdaf 100644
--- a/var/spack/repos/builtin/packages/windowswmproto/package.py
+++ b/var/spack/repos/builtin/packages/windowswmproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Windowswmproto(Package):
+class Windowswmproto(AutotoolsPackage):
     """This module provides the definition of the WindowsWM extension to the
     X11 protocol, used for coordination between an X11 server and the
     Microsoft Windows native window manager.
@@ -37,8 +37,3 @@ class Windowswmproto(Package):
     url      = "https://www.x.org/archive/individual/proto/windowswmproto-1.0.4.tar.gz"
 
     version('1.0.4', '558db92a8e4e1b07e9c62eca3f04dd8d')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/x11perf/package.py b/var/spack/repos/builtin/packages/x11perf/package.py
index 91db1e8a59bdb10d9654befc603dd39c1e7655ac..89936e77f5421c5a02e996c3ff04e26aa63b55b3 100644
--- a/var/spack/repos/builtin/packages/x11perf/package.py
+++ b/var/spack/repos/builtin/packages/x11perf/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class X11perf(Package):
+class X11perf(AutotoolsPackage):
     """Simple X server performance benchmarker."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/x11perf"
@@ -41,9 +41,3 @@ class X11perf(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xauth/package.py b/var/spack/repos/builtin/packages/xauth/package.py
index 6d6a03c8996317767d7136b0b3c8709881c0a4fa..fa172b5dc02d13e449b69daa5d2a3d3ca25da55c 100644
--- a/var/spack/repos/builtin/packages/xauth/package.py
+++ b/var/spack/repos/builtin/packages/xauth/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xauth(Package):
+class Xauth(AutotoolsPackage):
     """The xauth program is used to edit and display the authorization
     information used in connecting to the X server."""
 
@@ -43,9 +43,4 @@ class Xauth(Package):
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
 
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        # make('check')  # TODO: add package for cmdtest build dependency
-        make('install')
+    # TODO: add package for cmdtest test dependency
diff --git a/var/spack/repos/builtin/packages/xbacklight/package.py b/var/spack/repos/builtin/packages/xbacklight/package.py
index f1a9ecc1242df9589b05944f72bbb16e65a99416..da9ab8f3bd12c0e7ccdba8723bc5eeab8ef2b009 100644
--- a/var/spack/repos/builtin/packages/xbacklight/package.py
+++ b/var/spack/repos/builtin/packages/xbacklight/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xbacklight(Package):
+class Xbacklight(AutotoolsPackage):
     """Xbacklight is used to adjust the backlight brightness where supported.
     It uses the RandR extension to find all outputs on the X server
     supporting backlight brightness control and changes them all in the
@@ -41,9 +41,3 @@ class Xbacklight(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xbiff/package.py b/var/spack/repos/builtin/packages/xbiff/package.py
index f5c53c5997de00a030e88cc15fef5758aa79b2b9..29bd9086d8b773533aaf81f4ad02fe26affc2f95 100644
--- a/var/spack/repos/builtin/packages/xbiff/package.py
+++ b/var/spack/repos/builtin/packages/xbiff/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xbiff(Package):
+class Xbiff(AutotoolsPackage):
     """xbiff provides graphical notification of new e-mail.
     It only handles mail stored in a filesystem accessible file,
     not via IMAP, POP or other remote access protocols."""
@@ -43,9 +43,3 @@ class Xbiff(Package):
     depends_on('xbitmaps', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xbitmaps/package.py b/var/spack/repos/builtin/packages/xbitmaps/package.py
index 1c6fb79d3add3ae32e202875f140d9cb403e03d5..6fcaf1240d40f0ad523ea1fa4116184198e13fbe 100644
--- a/var/spack/repos/builtin/packages/xbitmaps/package.py
+++ b/var/spack/repos/builtin/packages/xbitmaps/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xbitmaps(Package):
+class Xbitmaps(AutotoolsPackage):
     """The xbitmaps package contains bitmap images used by multiple
     applications built in Xorg."""
 
@@ -36,8 +36,3 @@ class Xbitmaps(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xcalc/package.py b/var/spack/repos/builtin/packages/xcalc/package.py
index a470d1c9d06d12445a37e84306b702e9efa16722..7b4717db65ab85e41ab324775a1445367aafcbf3 100644
--- a/var/spack/repos/builtin/packages/xcalc/package.py
+++ b/var/spack/repos/builtin/packages/xcalc/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xcalc(Package):
+class Xcalc(AutotoolsPackage):
     """xcalc is a scientific calculator X11 client that can emulate a TI-30
     or an HP-10C."""
 
@@ -41,9 +41,3 @@ class Xcalc(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xcb-demo/package.py b/var/spack/repos/builtin/packages/xcb-demo/package.py
index 62433e3b32eb8c25626e73ca2a509ec688a1b58c..6c3ccfa8aaa40616695dc05d1f4d4f595b6c3208 100644
--- a/var/spack/repos/builtin/packages/xcb-demo/package.py
+++ b/var/spack/repos/builtin/packages/xcb-demo/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class XcbDemo(Package):
+class XcbDemo(AutotoolsPackage):
     """xcb-demo: A collection of demo programs that use the XCB library."""
 
     homepage = "https://xcb.freedesktop.org/"
@@ -40,12 +40,5 @@ class XcbDemo(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
 
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        # FIXME: crashes with the following error message
-        # X11/XCB/xcb.h: No such file or directory
-
-        make()
-        make('check')
-        make('install')
+    # FIXME: crashes with the following error message
+    # X11/XCB/xcb.h: No such file or directory
diff --git a/var/spack/repos/builtin/packages/xcb-proto/package.py b/var/spack/repos/builtin/packages/xcb-proto/package.py
index d2ac54d34f4dbbd60ce89ced9d2f65c8e4955e46..be8a09ef62fa4b9c3e7e69dc0af18e29e20deebb 100644
--- a/var/spack/repos/builtin/packages/xcb-proto/package.py
+++ b/var/spack/repos/builtin/packages/xcb-proto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class XcbProto(Package):
+class XcbProto(AutotoolsPackage):
     """xcb-proto provides the XML-XCB protocol descriptions that libxcb uses to
     generate the majority of its code and API."""
 
@@ -37,8 +37,4 @@ class XcbProto(Package):
 
     extends('python')
 
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        # make('check')  # fails xmllint validation
-        make('install')
+    # NOTE: `make check` fails xmllint validation
diff --git a/var/spack/repos/builtin/packages/xcb-util-cursor/package.py b/var/spack/repos/builtin/packages/xcb-util-cursor/package.py
index b25fb181a612a7c96d5a4e3bbb0ebdcda8566e48..83ae52ae934e1017afc8128d28982a0a65bfe2a3 100644
--- a/var/spack/repos/builtin/packages/xcb-util-cursor/package.py
+++ b/var/spack/repos/builtin/packages/xcb-util-cursor/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class XcbUtilCursor(Package):
+class XcbUtilCursor(AutotoolsPackage):
     """The XCB util modules provides a number of libraries which sit on top
     of libxcb, the core X protocol library, and some of the extension
     libraries. These experimental libraries provide convenience functions
@@ -43,9 +43,3 @@ class XcbUtilCursor(Package):
     depends_on('xcb-util-image')
 
     depends_on('pkg-config@0.9.0:', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xcb-util-errors/package.py b/var/spack/repos/builtin/packages/xcb-util-errors/package.py
index c287a0ec6e7455ed935714f44d1c3bf0c2555a0c..f7c950841d506df2037f47c9fc4bf62ef0715bf9 100644
--- a/var/spack/repos/builtin/packages/xcb-util-errors/package.py
+++ b/var/spack/repos/builtin/packages/xcb-util-errors/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class XcbUtilErrors(Package):
+class XcbUtilErrors(AutotoolsPackage):
     """The XCB util modules provides a number of libraries which sit on top
     of libxcb, the core X protocol library, and some of the extension
     libraries. These experimental libraries provide convenience functions
@@ -42,10 +42,3 @@ class XcbUtilErrors(Package):
 
     depends_on('xcb-proto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('check')
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xcb-util-image/package.py b/var/spack/repos/builtin/packages/xcb-util-image/package.py
index 4413c7e11dcc70126cde2ab84e0674b250b7ee4a..58a5f82d1817b56554a19eb1b625b3bb5825a0f8 100644
--- a/var/spack/repos/builtin/packages/xcb-util-image/package.py
+++ b/var/spack/repos/builtin/packages/xcb-util-image/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class XcbUtilImage(Package):
+class XcbUtilImage(AutotoolsPackage):
     """The XCB util modules provides a number of libraries which sit on top
     of libxcb, the core X protocol library, and some of the extension
     libraries. These experimental libraries provide convenience functions
@@ -43,10 +43,3 @@ class XcbUtilImage(Package):
 
     depends_on('xproto@7.0.8:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('check')
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xcb-util-keysyms/package.py b/var/spack/repos/builtin/packages/xcb-util-keysyms/package.py
index 0de6391b1831e17d1f870ab41ba9d33a4ef52e8f..026ac2a129d767075fe03d4a7ccc98aa0980a04c 100644
--- a/var/spack/repos/builtin/packages/xcb-util-keysyms/package.py
+++ b/var/spack/repos/builtin/packages/xcb-util-keysyms/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class XcbUtilKeysyms(Package):
+class XcbUtilKeysyms(AutotoolsPackage):
     """The XCB util modules provides a number of libraries which sit on top
     of libxcb, the core X protocol library, and some of the extension
     libraries. These experimental libraries provide convenience functions
@@ -42,9 +42,3 @@ class XcbUtilKeysyms(Package):
 
     depends_on('xproto@7.0.8:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xcb-util-renderutil/package.py b/var/spack/repos/builtin/packages/xcb-util-renderutil/package.py
index d41c88206c9d22056874c8442ca6c20ab6a1028c..aa4db3311280661dc4188b2415c2c9ab466f924b 100644
--- a/var/spack/repos/builtin/packages/xcb-util-renderutil/package.py
+++ b/var/spack/repos/builtin/packages/xcb-util-renderutil/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class XcbUtilRenderutil(Package):
+class XcbUtilRenderutil(AutotoolsPackage):
     """The XCB util modules provides a number of libraries which sit on top
     of libxcb, the core X protocol library, and some of the extension
     libraries. These experimental libraries provide convenience functions
@@ -41,9 +41,3 @@ class XcbUtilRenderutil(Package):
     depends_on('libxcb@1.4:')
 
     depends_on('pkg-config@0.9.0:', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xcb-util-wm/package.py b/var/spack/repos/builtin/packages/xcb-util-wm/package.py
index ef3db06aec1ca492273f36ebe244edc8b496d8c8..c5dfe65423bfadd8f20901371337b8857de77ba6 100644
--- a/var/spack/repos/builtin/packages/xcb-util-wm/package.py
+++ b/var/spack/repos/builtin/packages/xcb-util-wm/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class XcbUtilWm(Package):
+class XcbUtilWm(AutotoolsPackage):
     """The XCB util modules provides a number of libraries which sit on top
     of libxcb, the core X protocol library, and some of the extension
     libraries. These experimental libraries provide convenience functions
@@ -41,9 +41,3 @@ class XcbUtilWm(Package):
     depends_on('libxcb@1.4:')
 
     depends_on('pkg-config@0.9.0:', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xcb-util/package.py b/var/spack/repos/builtin/packages/xcb-util/package.py
index 820592a31972c6f5c88c712821ec871e12002f85..6dcfbb6447347a05d07bcbc5d2dc664322993f91 100644
--- a/var/spack/repos/builtin/packages/xcb-util/package.py
+++ b/var/spack/repos/builtin/packages/xcb-util/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class XcbUtil(Package):
+class XcbUtil(AutotoolsPackage):
     """The XCB util modules provides a number of libraries which sit on top
     of libxcb, the core X protocol library, and some of the extension
     libraries. These experimental libraries provide convenience functions
@@ -41,9 +41,3 @@ class XcbUtil(Package):
     depends_on('libxcb@1.4:')
 
     depends_on('pkg-config@0.9.0:', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xclipboard/package.py b/var/spack/repos/builtin/packages/xclipboard/package.py
index d9af19da719b7f879871c6e10e6999879cb4cb54..309a09bd7622be891c2c084de22b0babeeb4c964 100644
--- a/var/spack/repos/builtin/packages/xclipboard/package.py
+++ b/var/spack/repos/builtin/packages/xclipboard/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xclipboard(Package):
+class Xclipboard(AutotoolsPackage):
     """xclipboard is used to collect and display text selections that are
     sent to the CLIPBOARD by other clients.  It is typically used to save
     CLIPBOARD selections for later use.  It stores each CLIPBOARD
@@ -45,9 +45,3 @@ class Xclipboard(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xclock/package.py b/var/spack/repos/builtin/packages/xclock/package.py
index 5bd38826db23b51296915bc911a50f3f8b43ed1f..0ec33e78de7c20ea5fc79b49402604a157504564 100644
--- a/var/spack/repos/builtin/packages/xclock/package.py
+++ b/var/spack/repos/builtin/packages/xclock/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xclock(Package):
+class Xclock(AutotoolsPackage):
     """xclock is the classic X Window System clock utility.  It displays
     the time in analog or digital form, continuously updated at a
     frequency which may be specified by the user."""
@@ -46,9 +46,3 @@ class Xclock(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xcmiscproto/package.py b/var/spack/repos/builtin/packages/xcmiscproto/package.py
index 2b15d1b3e7771d34a2bae691da4e24ca69dcd2f4..c31b19f04be781d4fb0dd6d61fb830fb5d8c5ad0 100644
--- a/var/spack/repos/builtin/packages/xcmiscproto/package.py
+++ b/var/spack/repos/builtin/packages/xcmiscproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xcmiscproto(Package):
+class Xcmiscproto(AutotoolsPackage):
     """XC-MISC Extension.
 
     This extension defines a protocol that provides Xlib two ways to query
@@ -38,8 +38,3 @@ class Xcmiscproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xcmsdb/package.py b/var/spack/repos/builtin/packages/xcmsdb/package.py
index 4d12e3a843ab2240a7c584aa9f27d50055ba7e16..74e1f6267f0687da4fb7162dc592926ac5af3780 100644
--- a/var/spack/repos/builtin/packages/xcmsdb/package.py
+++ b/var/spack/repos/builtin/packages/xcmsdb/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xcmsdb(Package):
+class Xcmsdb(AutotoolsPackage):
     """xcmsdb is used to load, query, or remove Device Color Characterization
     data stored in properties on the root window of the screen as
     specified in section 7, Device Color Characterization, of the
@@ -40,9 +40,3 @@ class Xcmsdb(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xcompmgr/package.py b/var/spack/repos/builtin/packages/xcompmgr/package.py
index fc5bbb4b9c695de326d7b51d4b329fd61f3e532f..1c0771e38dd8e4938b38fa8ec6e30f206edc8cf1 100644
--- a/var/spack/repos/builtin/packages/xcompmgr/package.py
+++ b/var/spack/repos/builtin/packages/xcompmgr/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xcompmgr(Package):
+class Xcompmgr(AutotoolsPackage):
     """xcompmgr is a sample compositing manager for X servers supporting the
     XFIXES, DAMAGE, RENDER, and COMPOSITE extensions.  It enables basic
     eye-candy effects."""
@@ -43,9 +43,3 @@ class Xcompmgr(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xconsole/package.py b/var/spack/repos/builtin/packages/xconsole/package.py
index f86fe753b6a4d3d4f688f1adbb0176d07fe1fce1..eabd5a48edafe34d6fdc932123ff3773ad113057 100644
--- a/var/spack/repos/builtin/packages/xconsole/package.py
+++ b/var/spack/repos/builtin/packages/xconsole/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xconsole(Package):
+class Xconsole(AutotoolsPackage):
     """xconsole displays in a X11 window the messages which are usually sent
     to /dev/console."""
 
@@ -42,9 +42,3 @@ class Xconsole(Package):
     depends_on('xproto@7.0.17:')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xcursorgen/package.py b/var/spack/repos/builtin/packages/xcursorgen/package.py
index 4e43844646cdbacc6df4f58f99dc46b19b51e3ad..8098723fc8e40ab7b8b284d06bd6abfbd73bddca 100644
--- a/var/spack/repos/builtin/packages/xcursorgen/package.py
+++ b/var/spack/repos/builtin/packages/xcursorgen/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xcursorgen(Package):
+class Xcursorgen(AutotoolsPackage):
     """xcursorgen prepares X11 cursor sets for use with libXcursor."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xcursorgen"
@@ -39,9 +39,3 @@ class Xcursorgen(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xdbedizzy/package.py b/var/spack/repos/builtin/packages/xdbedizzy/package.py
index 7a8f97401f5f2e15b5a4b5666419da997f8eab53..61ad98dc6177aab287e6e60b004ffb88fb55aff3 100644
--- a/var/spack/repos/builtin/packages/xdbedizzy/package.py
+++ b/var/spack/repos/builtin/packages/xdbedizzy/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xdbedizzy(Package):
+class Xdbedizzy(AutotoolsPackage):
     """xdbedizzy is a demo of the X11 Double Buffer Extension (DBE)
     creating a double buffered spinning scene."""
 
@@ -39,9 +39,3 @@ class Xdbedizzy(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xditview/package.py b/var/spack/repos/builtin/packages/xditview/package.py
index 3fececd12e36de5b93a2286dd98f1331b008111e..4f5384b81c9b97bc8da87b2724c0b0f621cc8245 100644
--- a/var/spack/repos/builtin/packages/xditview/package.py
+++ b/var/spack/repos/builtin/packages/xditview/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xditview(Package):
+class Xditview(AutotoolsPackage):
     """xditview displays ditroff output on an X display."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xditview"
@@ -40,9 +40,3 @@ class Xditview(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xdm/package.py b/var/spack/repos/builtin/packages/xdm/package.py
index d42ced9a57916a841494a127d65fda21b7ab066a..384077e55682937def497b85276ad4c552c3c28b 100644
--- a/var/spack/repos/builtin/packages/xdm/package.py
+++ b/var/spack/repos/builtin/packages/xdm/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xdm(Package):
+class Xdm(AutotoolsPackage):
     """X Display Manager / XDMCP server."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xdm"
@@ -46,9 +46,3 @@ class Xdm(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xdpyinfo/package.py b/var/spack/repos/builtin/packages/xdpyinfo/package.py
index c69af3b357b7739950b15c1b1243205e41fc74d8..f3838999eb6368c019f42cadaa7c6c39cbfa5e44 100644
--- a/var/spack/repos/builtin/packages/xdpyinfo/package.py
+++ b/var/spack/repos/builtin/packages/xdpyinfo/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xdpyinfo(Package):
+class Xdpyinfo(AutotoolsPackage):
     """xdpyinfo is a utility for displaying information about an X server.
 
     It is used to examine the capabilities of a server, the predefined
@@ -46,9 +46,3 @@ class Xdpyinfo(Package):
     depends_on('xproto@7.0.22:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xdriinfo/package.py b/var/spack/repos/builtin/packages/xdriinfo/package.py
index 7548175f6f909f33a58adc557e6c66266cd3b103..9545f7707d9d6ec621dd0a7515a86ef317861e6a 100644
--- a/var/spack/repos/builtin/packages/xdriinfo/package.py
+++ b/var/spack/repos/builtin/packages/xdriinfo/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xdriinfo(Package):
+class Xdriinfo(AutotoolsPackage):
     """xdriinfo - query configuration information of X11 DRI drivers."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xdriinfo"
@@ -44,9 +44,3 @@ class Xdriinfo(Package):
     depends_on('glproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xedit/package.py b/var/spack/repos/builtin/packages/xedit/package.py
index da5f28809f5ef5b78d7baf53419095f1035dffe1..73aca40a3b43cc7c791936a582aeb1cac7231d56 100644
--- a/var/spack/repos/builtin/packages/xedit/package.py
+++ b/var/spack/repos/builtin/packages/xedit/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xedit(Package):
+class Xedit(AutotoolsPackage):
     """Xedit is a simple text editor for X."""
 
     homepage = "https://cgit.freedesktop.org/xorg/app/xedit"
@@ -40,9 +40,3 @@ class Xedit(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xev/package.py b/var/spack/repos/builtin/packages/xev/package.py
index 5727d4e428717b735cec7516fe2d5f8f53b1cf2c..79ff7b08a72bf8305b849fd2c2098f44090d8f6a 100644
--- a/var/spack/repos/builtin/packages/xev/package.py
+++ b/var/spack/repos/builtin/packages/xev/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xev(Package):
+class Xev(AutotoolsPackage):
     """xev creates a window and then asks the X server to send it X11 events
     whenever anything happens to the window (such as it being moved,
     resized, typed in, clicked in, etc.).  You can also attach it to an
@@ -45,9 +45,3 @@ class Xev(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xextproto/package.py b/var/spack/repos/builtin/packages/xextproto/package.py
index 9c1c123527d3823a6501ef0fef8025eec5cc3d8f..012a023e72048de8f322206bf60fa15e06c8a266 100644
--- a/var/spack/repos/builtin/packages/xextproto/package.py
+++ b/var/spack/repos/builtin/packages/xextproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xextproto(Package):
+class Xextproto(AutotoolsPackage):
     """X Protocol Extensions."""
 
     homepage = "http://cgit.freedesktop.org/xorg/proto/xextproto"
@@ -37,8 +37,3 @@ class Xextproto(Package):
     depends_on('util-macros', type='build')
 
     parallel = False
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xeyes/package.py b/var/spack/repos/builtin/packages/xeyes/package.py
index cfea92fda37461d63f3a989ca13bc447a47b9b18..599b08544b1ac4ceb35fa4ad9843629f63988df1 100644
--- a/var/spack/repos/builtin/packages/xeyes/package.py
+++ b/var/spack/repos/builtin/packages/xeyes/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xeyes(Package):
+class Xeyes(AutotoolsPackage):
     """xeyes - a follow the mouse X demo, using the X SHAPE extension"""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xeyes"
@@ -41,9 +41,3 @@ class Xeyes(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xf86bigfontproto/package.py b/var/spack/repos/builtin/packages/xf86bigfontproto/package.py
index 6c1dc8f37d9b665951199e3c1378a3b0c6346052..5a2e10a7ba648a80ac1fddb116cbf77f7fd3f137 100644
--- a/var/spack/repos/builtin/packages/xf86bigfontproto/package.py
+++ b/var/spack/repos/builtin/packages/xf86bigfontproto/package.py
@@ -25,15 +25,10 @@
 from spack import *
 
 
-class Xf86bigfontproto(Package):
+class Xf86bigfontproto(AutotoolsPackage):
     """X.org XF86BigFontProto protocol headers."""
 
     homepage = "https://cgit.freedesktop.org/xorg/proto/xf86bigfontproto"
     url      = "https://www.x.org/archive/individual/proto/xf86bigfontproto-1.2.0.tar.gz"
 
     version('1.2.0', '91b0733ff4cbe55808d96073258aa3d1')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xf86dga/package.py b/var/spack/repos/builtin/packages/xf86dga/package.py
index 8add6fbca7e8ef965c20b898f5dd93223074b282..1bd2feaaa386f4bb508fa3e96121adc9dfca9e56 100644
--- a/var/spack/repos/builtin/packages/xf86dga/package.py
+++ b/var/spack/repos/builtin/packages/xf86dga/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xf86dga(Package):
+class Xf86dga(AutotoolsPackage):
     """dga is a simple test client for the XFree86-DGA extension."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xf86dga"
@@ -38,9 +38,3 @@ class Xf86dga(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xf86dgaproto/package.py b/var/spack/repos/builtin/packages/xf86dgaproto/package.py
index 05b64c9534c7931134c5819028efc3fb34988a9b..3c92582a3a38221a5228a645e52674ed1cf2b645 100644
--- a/var/spack/repos/builtin/packages/xf86dgaproto/package.py
+++ b/var/spack/repos/builtin/packages/xf86dgaproto/package.py
@@ -25,15 +25,10 @@
 from spack import *
 
 
-class Xf86dgaproto(Package):
+class Xf86dgaproto(AutotoolsPackage):
     """X.org XF86DGAProto protocol headers."""
 
     homepage = "https://cgit.freedesktop.org/xorg/proto/xf86dgaproto"
     url      = "https://www.x.org/archive/individual/proto/xf86dgaproto-2.1.tar.gz"
 
     version('2.1', '1fe79dc07857ad3e1fb8b8f2bdd70d1b')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xf86driproto/package.py b/var/spack/repos/builtin/packages/xf86driproto/package.py
index 655d1bc60ba1a4f3ab4d64379f6c18b81e645fea..8378eb9e5e9a3da4ea1eb83c36823a98c3354e79 100644
--- a/var/spack/repos/builtin/packages/xf86driproto/package.py
+++ b/var/spack/repos/builtin/packages/xf86driproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xf86driproto(Package):
+class Xf86driproto(AutotoolsPackage):
     """XFree86 Direct Rendering Infrastructure Extension.
 
     This extension defines a protocol to allow user applications to access
@@ -39,8 +39,3 @@ class Xf86driproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xf86miscproto/package.py b/var/spack/repos/builtin/packages/xf86miscproto/package.py
index 4b7e27907710d423f2e9bd4aa1635adca80d884e..4368eed32655afe42cb2649e6fb132e5252c19c3 100644
--- a/var/spack/repos/builtin/packages/xf86miscproto/package.py
+++ b/var/spack/repos/builtin/packages/xf86miscproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xf86miscproto(Package):
+class Xf86miscproto(AutotoolsPackage):
     """This package includes the protocol definitions of the "XFree86-Misc"
     extension to the X11 protocol.  The "XFree86-Misc" extension is
     supported by the XFree86 X server and versions of the Xorg X server
@@ -35,8 +35,3 @@ class Xf86miscproto(Package):
     url      = "https://www.x.org/archive/individual/proto/xf86miscproto-0.9.3.tar.gz"
 
     version('0.9.3', 'c6432f04f84929c94fa05b3a466c489d')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xf86rushproto/package.py b/var/spack/repos/builtin/packages/xf86rushproto/package.py
index bdd192970b6b79774435f9b8bc451e9ae463c961..05b9afa40a1d30e109db9bbb0f01b2f39961ec27 100644
--- a/var/spack/repos/builtin/packages/xf86rushproto/package.py
+++ b/var/spack/repos/builtin/packages/xf86rushproto/package.py
@@ -25,15 +25,10 @@
 from spack import *
 
 
-class Xf86rushproto(Package):
+class Xf86rushproto(AutotoolsPackage):
     """X.org XF86RushProto protocol headers."""
 
     homepage = "https://cgit.freedesktop.org/xorg/proto/xf86rushproto"
     url      = "https://www.x.org/archive/individual/proto/xf86rushproto-1.1.2.tar.gz"
 
     version('1.1.2', '6a6389473332ace01146cccfef228576')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xf86vidmodeproto/package.py b/var/spack/repos/builtin/packages/xf86vidmodeproto/package.py
index ece389f9e60cb043c9c71f22981660b5fcf188ae..aaf1db44729bf6dc2b3e8632dc15131897e65123 100644
--- a/var/spack/repos/builtin/packages/xf86vidmodeproto/package.py
+++ b/var/spack/repos/builtin/packages/xf86vidmodeproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xf86vidmodeproto(Package):
+class Xf86vidmodeproto(AutotoolsPackage):
     """XFree86 Video Mode Extension.
 
     This extension defines a protocol for dynamically configuring modelines
@@ -38,8 +38,3 @@ class Xf86vidmodeproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xfd/package.py b/var/spack/repos/builtin/packages/xfd/package.py
index 669cd83bf5901fe1ae04c922a54516463846ae6b..b7d1282b2789828d92c18341219f5a3b1de58053 100644
--- a/var/spack/repos/builtin/packages/xfd/package.py
+++ b/var/spack/repos/builtin/packages/xfd/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xfd(Package):
+class Xfd(AutotoolsPackage):
     """xfd - display all the characters in a font using either the
     X11 core protocol or libXft2."""
 
@@ -44,9 +44,3 @@ class Xfd(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xfindproxy/package.py b/var/spack/repos/builtin/packages/xfindproxy/package.py
index e4b83433c4eb26ea11726356e064a460cff80218..af767be8a1a033de1ca0b1115a61af914f3334d2 100644
--- a/var/spack/repos/builtin/packages/xfindproxy/package.py
+++ b/var/spack/repos/builtin/packages/xfindproxy/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xfindproxy(Package):
+class Xfindproxy(AutotoolsPackage):
     """xfindproxy is used to locate available X11 proxy services.
 
     It utilizes the Proxy Management Protocol to communicate with a proxy
@@ -45,9 +45,3 @@ class Xfindproxy(Package):
     depends_on('xproxymanagementprotocol', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xfontsel/package.py b/var/spack/repos/builtin/packages/xfontsel/package.py
index 772ff8d5705181129d56284b20adfcd655c6f246..ca14f1460c1f73d605a91bb671d903c06e33bef9 100644
--- a/var/spack/repos/builtin/packages/xfontsel/package.py
+++ b/var/spack/repos/builtin/packages/xfontsel/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xfontsel(Package):
+class Xfontsel(AutotoolsPackage):
     """xfontsel application provides a simple way to display the X11 core
     protocol fonts known to your X server, examine samples of each, and
     retrieve the X Logical Font Description ("XLFD") full name for a font."""
@@ -42,9 +42,3 @@ class Xfontsel(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xfs/package.py b/var/spack/repos/builtin/packages/xfs/package.py
index 72429dee90e50a06c767316aa25d2fce5afa234e..e5a71e4a278a64f2857bacdb2479fa1534336628 100644
--- a/var/spack/repos/builtin/packages/xfs/package.py
+++ b/var/spack/repos/builtin/packages/xfs/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xfs(Package):
+class Xfs(AutotoolsPackage):
     """X Font Server."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xfs"
@@ -40,9 +40,3 @@ class Xfs(Package):
     depends_on('xtrans', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xfsinfo/package.py b/var/spack/repos/builtin/packages/xfsinfo/package.py
index b31ad1c1e05fa7a585b8c26f153c7601c59640b9..9913537995e0043de24db6369806c52c666f8c41 100644
--- a/var/spack/repos/builtin/packages/xfsinfo/package.py
+++ b/var/spack/repos/builtin/packages/xfsinfo/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xfsinfo(Package):
+class Xfsinfo(AutotoolsPackage):
     """xfsinfo is a utility for displaying information about an X font
     server.  It is used to examine the capabilities of a server, the
     predefined values for various parameters used in communicating between
@@ -42,9 +42,3 @@ class Xfsinfo(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xfwp/package.py b/var/spack/repos/builtin/packages/xfwp/package.py
index 5f073a880686e2239af0b60aaf101892fd4baa77..c199b50f6cf6cbd26d38abea9f5f207f51f7fb0c 100644
--- a/var/spack/repos/builtin/packages/xfwp/package.py
+++ b/var/spack/repos/builtin/packages/xfwp/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xfwp(Package):
+class Xfwp(AutotoolsPackage):
     """xfwp proxies X11 protocol connections, such as through a firewall."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xfwp"
@@ -40,11 +40,5 @@ class Xfwp(Package):
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
 
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        # FIXME: fails with the error message:
-        # io.c:1039:7: error: implicit declaration of function 'swab'
-
-        make()
-        make('install')
+    # FIXME: fails with the error message:
+    # io.c:1039:7: error: implicit declaration of function 'swab'
diff --git a/var/spack/repos/builtin/packages/xgamma/package.py b/var/spack/repos/builtin/packages/xgamma/package.py
index b8abec293a17557f6cb7f800071a19cb19515188..845f2a54e362087bf5d89670fc6594568edb821b 100644
--- a/var/spack/repos/builtin/packages/xgamma/package.py
+++ b/var/spack/repos/builtin/packages/xgamma/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xgamma(Package):
+class Xgamma(AutotoolsPackage):
     """xgamma allows X users to query and alter the gamma correction of a
     monitor via the X video mode extension (XFree86-VidModeExtension)."""
 
@@ -40,9 +40,3 @@ class Xgamma(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xgc/package.py b/var/spack/repos/builtin/packages/xgc/package.py
index 608e6e0360d71b19cc53018c29a121dd979866b7..23ba36809e5feaaa319e681610c51554f5caadbc 100644
--- a/var/spack/repos/builtin/packages/xgc/package.py
+++ b/var/spack/repos/builtin/packages/xgc/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xgc(Package):
+class Xgc(AutotoolsPackage):
     """xgc is an X11 graphics demo that shows various features of the X11
     core protocol graphics primitives."""
 
@@ -41,9 +41,3 @@ class Xgc(Package):
     depends_on('bison', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xhost/package.py b/var/spack/repos/builtin/packages/xhost/package.py
index f01c481ee7ee98f8519fccb9e10222f947a1bd2b..3928593611d1e57c0fafc1be3634d1b9e48a1811 100644
--- a/var/spack/repos/builtin/packages/xhost/package.py
+++ b/var/spack/repos/builtin/packages/xhost/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xhost(Package):
+class Xhost(AutotoolsPackage):
     """xhost is used to manage the list of host names or user names
     allowed to make connections to the X server."""
 
@@ -41,9 +41,3 @@ class Xhost(Package):
     depends_on('xproto@7.0.22:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xineramaproto/package.py b/var/spack/repos/builtin/packages/xineramaproto/package.py
index baededbb253b5806e79890cce06d2fcdf36ea2d2..0a3374b1b6cccad0ce8918f9f714d6f3604c08d6 100644
--- a/var/spack/repos/builtin/packages/xineramaproto/package.py
+++ b/var/spack/repos/builtin/packages/xineramaproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xineramaproto(Package):
+class Xineramaproto(AutotoolsPackage):
     """X Xinerama Extension.
 
     This is an X extension that allows multiple physical screens controlled
@@ -38,8 +38,3 @@ class Xineramaproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xinit/package.py b/var/spack/repos/builtin/packages/xinit/package.py
index 9f3bc092297795060c02afa21245ce51622cc159..8bf7227cc8f90bcdb3aaab2f36a3d48107996304 100644
--- a/var/spack/repos/builtin/packages/xinit/package.py
+++ b/var/spack/repos/builtin/packages/xinit/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xinit(Package):
+class Xinit(AutotoolsPackage):
     """The xinit program is used to start the X Window System server and a
     first client program on systems that are not using a display manager
     such as xdm."""
@@ -40,9 +40,3 @@ class Xinit(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xinput/package.py b/var/spack/repos/builtin/packages/xinput/package.py
index 3c4fb35503d4b99ce60f06b794e045aedb08b1a9..b512d864958e7aad3c59877d477ab2b40b8a7948 100644
--- a/var/spack/repos/builtin/packages/xinput/package.py
+++ b/var/spack/repos/builtin/packages/xinput/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xinput(Package):
+class Xinput(AutotoolsPackage):
     """xinput is a utility to configure and test XInput devices."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xinput"
@@ -42,9 +42,3 @@ class Xinput(Package):
     depends_on('inputproto@2.1.99.1:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xkbcomp/package.py b/var/spack/repos/builtin/packages/xkbcomp/package.py
index e6e8875fa7a34d42c7c251118722537a2a40a228..315c49a22d2418c5eeeb32055dfb9c59d131e629 100644
--- a/var/spack/repos/builtin/packages/xkbcomp/package.py
+++ b/var/spack/repos/builtin/packages/xkbcomp/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xkbcomp(Package):
+class Xkbcomp(AutotoolsPackage):
     """The X Keyboard (XKB) Extension essentially replaces the core protocol
     definition of a keyboard. The extension makes it possible to specify
     clearly and explicitly most aspects of keyboard behaviour on a per-key
@@ -45,9 +45,3 @@ class Xkbcomp(Package):
     depends_on('bison', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xkbdata/package.py b/var/spack/repos/builtin/packages/xkbdata/package.py
index fc84631e36929bf96794a34bad7702c80c5e96c0..c67e047d71cc6c8b1732a8e7b21f3eb24520cf3c 100644
--- a/var/spack/repos/builtin/packages/xkbdata/package.py
+++ b/var/spack/repos/builtin/packages/xkbdata/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xkbdata(Package):
+class Xkbdata(AutotoolsPackage):
     """The XKB data files for the various keyboard models, layouts,
     and locales."""
 
@@ -35,9 +35,3 @@ class Xkbdata(Package):
     version('1.0.1', 'a7e0fbc9cc84c621243c777694388064')
 
     depends_on('xkbcomp', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xkbevd/package.py b/var/spack/repos/builtin/packages/xkbevd/package.py
index 462d989db2ebf36377d5004b8599e9c0f31fda4f..8793a3a38bd362bc7480772141ea0a4fb94cf943 100644
--- a/var/spack/repos/builtin/packages/xkbevd/package.py
+++ b/var/spack/repos/builtin/packages/xkbevd/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xkbevd(Package):
+class Xkbevd(AutotoolsPackage):
     """XKB event daemon demo."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xkbevd"
@@ -39,9 +39,3 @@ class Xkbevd(Package):
     depends_on('bison', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xkbprint/package.py b/var/spack/repos/builtin/packages/xkbprint/package.py
index dc92ac412648b3498469f7ae306565175b1951ba..100d4e44361df3df8b25f3bc575aa9669d526229 100644
--- a/var/spack/repos/builtin/packages/xkbprint/package.py
+++ b/var/spack/repos/builtin/packages/xkbprint/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xkbprint(Package):
+class Xkbprint(AutotoolsPackage):
     """xkbprint generates a printable or encapsulated PostScript description
     of an XKB keyboard description."""
 
@@ -40,9 +40,3 @@ class Xkbprint(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xkbutils/package.py b/var/spack/repos/builtin/packages/xkbutils/package.py
index a4c6c9757807dc836d7748e4edbab29589bfc768..eef24a01455d62024e420b1deac4230f54252537 100644
--- a/var/spack/repos/builtin/packages/xkbutils/package.py
+++ b/var/spack/repos/builtin/packages/xkbutils/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xkbutils(Package):
+class Xkbutils(AutotoolsPackage):
     """xkbutils is a collection of small utilities utilizing the XKeyboard
     (XKB) extension to the X11 protocol."""
 
@@ -42,9 +42,3 @@ class Xkbutils(Package):
     depends_on('inputproto', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xkeyboard-config/package.py b/var/spack/repos/builtin/packages/xkeyboard-config/package.py
index 3ad7ea197c87e39ad79548c6b39e5cb1c2609ec6..d7ae34e1e63990d67f1cd3f552cd161dd82af984 100644
--- a/var/spack/repos/builtin/packages/xkeyboard-config/package.py
+++ b/var/spack/repos/builtin/packages/xkeyboard-config/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class XkeyboardConfig(Package):
+class XkeyboardConfig(AutotoolsPackage):
     """This project provides a consistent, well-structured, frequently
     released, open source database of keyboard configuration data. The
     project is targeted to XKB-based systems."""
@@ -49,9 +49,3 @@ class XkeyboardConfig(Package):
     # gmsgfmt
     # perl@5.8.1:
     # perl XML::Parser
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xkill/package.py b/var/spack/repos/builtin/packages/xkill/package.py
index 061d756eec59afd7a117137241c39018f6851c4d..e73fa3b9a29b839b86f11e3527a9248fafdc384a 100644
--- a/var/spack/repos/builtin/packages/xkill/package.py
+++ b/var/spack/repos/builtin/packages/xkill/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xkill(Package):
+class Xkill(AutotoolsPackage):
     """xkill is a utility for forcing the X server to close connections to
     clients.  This program is very dangerous, but is useful for aborting
     programs that have displayed undesired windows on a user's screen."""
@@ -41,9 +41,3 @@ class Xkill(Package):
     depends_on('xproto@7.0.22:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xload/package.py b/var/spack/repos/builtin/packages/xload/package.py
index 2fc91043b5010b9a64a7cd0cd4f59ea0ded83326..412c0aa0c43e2f862fa342f8acc754e4e9a7dcc9 100644
--- a/var/spack/repos/builtin/packages/xload/package.py
+++ b/var/spack/repos/builtin/packages/xload/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xload(Package):
+class Xload(AutotoolsPackage):
     """xload displays a periodically updating histogram of the
     system load average."""
 
@@ -42,9 +42,3 @@ class Xload(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xlogo/package.py b/var/spack/repos/builtin/packages/xlogo/package.py
index 77f5bd3639caf684c6b431e838e2d5061b2b2b8c..8e1250cc69cd8cd084c02f077dfbe4d772c1fd7d 100644
--- a/var/spack/repos/builtin/packages/xlogo/package.py
+++ b/var/spack/repos/builtin/packages/xlogo/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xlogo(Package):
+class Xlogo(AutotoolsPackage):
     """The xlogo program simply displays the X Window System logo."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xlogo"
@@ -45,9 +45,3 @@ class Xlogo(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xlsatoms/package.py b/var/spack/repos/builtin/packages/xlsatoms/package.py
index 8722b57c8c1efe85a69247c712392643a372fff8..5f0dc8adc7cd1e90e9001aff5565a8f7d59979c4 100644
--- a/var/spack/repos/builtin/packages/xlsatoms/package.py
+++ b/var/spack/repos/builtin/packages/xlsatoms/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xlsatoms(Package):
+class Xlsatoms(AutotoolsPackage):
     """xlsatoms lists the interned atoms defined on an X11 server."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xlsatoms"
@@ -38,9 +38,3 @@ class Xlsatoms(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xlsclients/package.py b/var/spack/repos/builtin/packages/xlsclients/package.py
index 3714de27069b6eecaaae11d9e604514313314f7d..fb232a1d0f5ceb352b20566bd1b3bbd4ffe0337c 100644
--- a/var/spack/repos/builtin/packages/xlsclients/package.py
+++ b/var/spack/repos/builtin/packages/xlsclients/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xlsclients(Package):
+class Xlsclients(AutotoolsPackage):
     """xlsclients is a utility for listing information about the client
     applications running on a X11 server."""
 
@@ -39,9 +39,3 @@ class Xlsclients(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xlsfonts/package.py b/var/spack/repos/builtin/packages/xlsfonts/package.py
index 011ca5aa0e78f1c51c4cc9aaeef90a39f00bd679..61696a5010f89b89f98ab6cf78fd00c2c31698b1 100644
--- a/var/spack/repos/builtin/packages/xlsfonts/package.py
+++ b/var/spack/repos/builtin/packages/xlsfonts/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xlsfonts(Package):
+class Xlsfonts(AutotoolsPackage):
     """xlsfonts lists fonts available from an X server via the X11
     core protocol."""
 
@@ -39,9 +39,3 @@ class Xlsfonts(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xmag/package.py b/var/spack/repos/builtin/packages/xmag/package.py
index 27843299c8647ab8e1f567211a69c17eaf9f4023..65eb9e636be4f8f04bb137d7943764480f7f5c4b 100644
--- a/var/spack/repos/builtin/packages/xmag/package.py
+++ b/var/spack/repos/builtin/packages/xmag/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xmag(Package):
+class Xmag(AutotoolsPackage):
     """xmag displays a magnified snapshot of a portion of an X11 screen."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xmag"
@@ -40,9 +40,3 @@ class Xmag(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xman/package.py b/var/spack/repos/builtin/packages/xman/package.py
index 629a457edc0a9a3004de2fa784bca1922fae8e72..0a3bf893eee9638e5b6e0aa4b9c36e4ba5df5bda 100644
--- a/var/spack/repos/builtin/packages/xman/package.py
+++ b/var/spack/repos/builtin/packages/xman/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xman(Package):
+class Xman(AutotoolsPackage):
     """xman is a graphical manual page browser using the Athena Widgets (Xaw)
     toolkit."""
 
@@ -40,9 +40,3 @@ class Xman(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xmessage/package.py b/var/spack/repos/builtin/packages/xmessage/package.py
index 9b2ee5102ef5dd71aed759842703b4acf16dc3dc..7481713c1b047c3380ca0374dcd6dc127119de8f 100644
--- a/var/spack/repos/builtin/packages/xmessage/package.py
+++ b/var/spack/repos/builtin/packages/xmessage/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xmessage(Package):
+class Xmessage(AutotoolsPackage):
     """xmessage displays a message or query in a window.  The user can click
     on an "okay" button to dismiss it or can select one of several buttons
     to answer a question.  xmessage can also exit after a specified time."""
@@ -40,9 +40,3 @@ class Xmessage(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xmh/package.py b/var/spack/repos/builtin/packages/xmh/package.py
index cdde63e1494567ba9bb70fc6bc9b1217c647d14a..1c7bc8a3469e85ba60dbbff3ffc25986dd5a28b2 100644
--- a/var/spack/repos/builtin/packages/xmh/package.py
+++ b/var/spack/repos/builtin/packages/xmh/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xmh(Package):
+class Xmh(AutotoolsPackage):
     """The xmh program provides a graphical user interface to the
     MH Message Handling System.  To actually do things with your
     mail, it makes calls to the MH package."""
@@ -43,9 +43,3 @@ class Xmh(Package):
     depends_on('xbitmaps@1.1.0:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xmlto/package.py b/var/spack/repos/builtin/packages/xmlto/package.py
index 0dbc81de32cd6549f365d7ea2504eadd6282d157..2ed392b9b86e3eae3c0651b866e8d67f2783099c 100644
--- a/var/spack/repos/builtin/packages/xmlto/package.py
+++ b/var/spack/repos/builtin/packages/xmlto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xmlto(Package):
+class Xmlto(AutotoolsPackage):
     """Utility xmlto is a simple shell script for converting XML files to various
     formats. It serves as easy to use command line frontend to make fine output
     without remembering many long options and searching for the syntax of the
@@ -38,9 +38,3 @@ class Xmlto(Package):
 
     # FIXME: missing a lot of dependencies
     depends_on('libxslt')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xmodmap/package.py b/var/spack/repos/builtin/packages/xmodmap/package.py
index abe40dbb43793e998de8061656696377a3396ab9..323a16cbe8bdcdb159fc89d11ac34dab00387f27 100644
--- a/var/spack/repos/builtin/packages/xmodmap/package.py
+++ b/var/spack/repos/builtin/packages/xmodmap/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xmodmap(Package):
+class Xmodmap(AutotoolsPackage):
     """The xmodmap program is used to edit and display the keyboard modifier
     map and keymap table that are used by client applications to convert
     event keycodes into keysyms.  It is usually run from the user's
@@ -42,9 +42,3 @@ class Xmodmap(Package):
     depends_on('xproto@7.0.25:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xmore/package.py b/var/spack/repos/builtin/packages/xmore/package.py
index 8f8ccd713830ff0d32c7941ad89c75775ec3040f..bb1f0ada276b834d661d9650295b4c38f0958eb7 100644
--- a/var/spack/repos/builtin/packages/xmore/package.py
+++ b/var/spack/repos/builtin/packages/xmore/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xmore(Package):
+class Xmore(AutotoolsPackage):
     """xmore - plain text display program for the X Window System."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xmore"
@@ -38,9 +38,3 @@ class Xmore(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xorg-cf-files/package.py b/var/spack/repos/builtin/packages/xorg-cf-files/package.py
index c7b22d904fb71568392da829467eb91edd8114c6..a203911d0eb80480e12bfe4e87d51ffdcea9adec 100644
--- a/var/spack/repos/builtin/packages/xorg-cf-files/package.py
+++ b/var/spack/repos/builtin/packages/xorg-cf-files/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class XorgCfFiles(Package):
+class XorgCfFiles(AutotoolsPackage):
     """The xorg-cf-files package contains the data files for the imake utility,
     defining the known settings for a wide variety of platforms (many of which
     have not been verified or tested in over a decade), and for many of the
@@ -37,8 +37,3 @@ class XorgCfFiles(Package):
     version('1.0.6', 'c0ce98377c70d95fb48e1bd856109bf8')
 
     depends_on('pkg-config@0.9.0:', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xorg-docs/package.py b/var/spack/repos/builtin/packages/xorg-docs/package.py
index 5c320bba7b9979c5f01bc32cb2dd8d39d40f8094..7bee98859da7d5fc0c75a211b483df77bc84690f 100644
--- a/var/spack/repos/builtin/packages/xorg-docs/package.py
+++ b/var/spack/repos/builtin/packages/xorg-docs/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class XorgDocs(Package):
+class XorgDocs(AutotoolsPackage):
     """This package provides miscellaneous documentation for the X Window
     System that doesn't better fit into other packages.
 
@@ -40,9 +40,3 @@ class XorgDocs(Package):
     depends_on('util-macros', type='build')
     depends_on('xorg-sgml-doctools@1.8:', type='build')
     depends_on('xmlto', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xorg-gtest/package.py b/var/spack/repos/builtin/packages/xorg-gtest/package.py
index 6978d610d32c28cbd0f0f9e0c92c764821c23c3f..ede26149e1fd50fdd7480f4616049f6d4a9e17c4 100644
--- a/var/spack/repos/builtin/packages/xorg-gtest/package.py
+++ b/var/spack/repos/builtin/packages/xorg-gtest/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class XorgGtest(Package):
+class XorgGtest(AutotoolsPackage):
     """Provides a Google Test environment for starting and stopping
     a X server for testing purposes."""
 
@@ -43,9 +43,3 @@ class XorgGtest(Package):
 
     # TODO: may be missing evemu package?
     # TODO: what is the difference between xorg-gtest and googletest packages?
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xorg-server/package.py b/var/spack/repos/builtin/packages/xorg-server/package.py
index 9d9b49f9c26c44b56a286281e5f39a18aca1f4ad..fcc4918a02c36e2e4fef0a517a1acb93718bd54a 100644
--- a/var/spack/repos/builtin/packages/xorg-server/package.py
+++ b/var/spack/repos/builtin/packages/xorg-server/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class XorgServer(Package):
+class XorgServer(AutotoolsPackage):
     """X.Org Server is the free and open source implementation of the display
     server for the X Window System stewarded by the X.Org Foundation."""
 
@@ -100,9 +100,3 @@ class XorgServer(Package):
     # LIBUDEV="libudev >= 143"
     # LIBSELINUX="libselinux >= 2.0.86"
     # LIBDBUS="dbus-1 >= 1.0"
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py b/var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py
index c2e5797efa965e618b9174b73acff9fae4f6a565..c9a5d4fd80fb608600490d7bf882c9e778320564 100644
--- a/var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py
+++ b/var/spack/repos/builtin/packages/xorg-sgml-doctools/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class XorgSgmlDoctools(Package):
+class XorgSgmlDoctools(AutotoolsPackage):
     """This package provides a common set of SGML entities and XML/CSS style
     sheets used in building/formatting the documentation provided in other
     X.Org packages."""
@@ -37,9 +37,3 @@ class XorgSgmlDoctools(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xphelloworld/package.py b/var/spack/repos/builtin/packages/xphelloworld/package.py
index 6d445d69bed9f1332f442bd9e6491ffd764821f0..ce593e746bfbd04566b91812f9f7851332bab1ef 100644
--- a/var/spack/repos/builtin/packages/xphelloworld/package.py
+++ b/var/spack/repos/builtin/packages/xphelloworld/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xphelloworld(Package):
+class Xphelloworld(AutotoolsPackage):
     """Xprint sample applications."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xphelloworld"
@@ -46,9 +46,3 @@ class Xphelloworld(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xplsprinters/package.py b/var/spack/repos/builtin/packages/xplsprinters/package.py
index 55de272a337483bca8dc62d4d0e71b5f10513b94..b8fdb084721419d5f1d5297b33f57ce7ef069f54 100644
--- a/var/spack/repos/builtin/packages/xplsprinters/package.py
+++ b/var/spack/repos/builtin/packages/xplsprinters/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xplsprinters(Package):
+class Xplsprinters(AutotoolsPackage):
     """List Xprint printers."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xplsprinters"
@@ -39,9 +39,3 @@ class Xplsprinters(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xpr/package.py b/var/spack/repos/builtin/packages/xpr/package.py
index 669693e084210c39b21cbb4b427922229fc30777..6e933e0994e50a66caa346648a7f0fc64fe258ef 100644
--- a/var/spack/repos/builtin/packages/xpr/package.py
+++ b/var/spack/repos/builtin/packages/xpr/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xpr(Package):
+class Xpr(AutotoolsPackage):
     """xpr takes as input a window dump file produced by xwd
     and formats it for output on various types of printers."""
 
@@ -40,9 +40,3 @@ class Xpr(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xprehashprinterlist/package.py b/var/spack/repos/builtin/packages/xprehashprinterlist/package.py
index 4578c3c1918f329a817a2b7c9a2aad829a8667c4..3f7de96c123d47b73000636be9c84b8a6ba3e727 100644
--- a/var/spack/repos/builtin/packages/xprehashprinterlist/package.py
+++ b/var/spack/repos/builtin/packages/xprehashprinterlist/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xprehashprinterlist(Package):
+class Xprehashprinterlist(AutotoolsPackage):
     """Rehash list of Xprint printers."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xprehashprinterlist"
@@ -38,9 +38,3 @@ class Xprehashprinterlist(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xprop/package.py b/var/spack/repos/builtin/packages/xprop/package.py
index 0e1a591bcbf197ae861f81dc0a85860f544d65e2..ece50c92052877b0f5029fe7187061ad008e6549 100644
--- a/var/spack/repos/builtin/packages/xprop/package.py
+++ b/var/spack/repos/builtin/packages/xprop/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xprop(Package):
+class Xprop(AutotoolsPackage):
     """xprop is a command line tool to display and/or set window and font
     properties of an X server."""
 
@@ -39,9 +39,3 @@ class Xprop(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xproto/package.py b/var/spack/repos/builtin/packages/xproto/package.py
index 67074a69939c05dd0198b98407cb796c6c7f0031..9e1b6d44742c497780d5a782c049ff65eff519e3 100644
--- a/var/spack/repos/builtin/packages/xproto/package.py
+++ b/var/spack/repos/builtin/packages/xproto/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xproto(Package):
+class Xproto(AutotoolsPackage):
     """X Window System Core Protocol.
 
     This package provides the headers and specification documents defining
@@ -42,8 +42,3 @@ class Xproto(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py b/var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py
index e5bfcb8cbcbde9243ad84a79813b4805ff72e157..cec6a13f5f8292e4f0ed21495db234e1e630234b 100644
--- a/var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py
+++ b/var/spack/repos/builtin/packages/xproxymanagementprotocol/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xproxymanagementprotocol(Package):
+class Xproxymanagementprotocol(AutotoolsPackage):
     """The Proxy Management Protocol is an ICE based protocol that provides a
     way for application servers to easily locate proxy services available to
     them."""
@@ -34,8 +34,3 @@ class Xproxymanagementprotocol(Package):
     url      = "https://www.x.org/archive/individual/proto/xproxymanagementprotocol-1.0.3.tar.gz"
 
     version('1.0.3', 'c4ab05a6174b4e9b6ae5b7cfbb6d718e')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xrandr/package.py b/var/spack/repos/builtin/packages/xrandr/package.py
index 35e21c60477dcf63d5b4a9d05f5354d13b8d6516..6fdc4da4febd57da2a479e5373dc91b6b38464c8 100644
--- a/var/spack/repos/builtin/packages/xrandr/package.py
+++ b/var/spack/repos/builtin/packages/xrandr/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xrandr(Package):
+class Xrandr(AutotoolsPackage):
     """xrandr - primitive command line interface to X11 Resize, Rotate, and
     Reflect (RandR) extension."""
 
@@ -41,9 +41,3 @@ class Xrandr(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xrdb/package.py b/var/spack/repos/builtin/packages/xrdb/package.py
index 93847a19a0bf8c799c5c981227d21f226f2fc5b8..c0374e7056d46f5700258d62f8b8935589b4839b 100644
--- a/var/spack/repos/builtin/packages/xrdb/package.py
+++ b/var/spack/repos/builtin/packages/xrdb/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xrdb(Package):
+class Xrdb(AutotoolsPackage):
     """xrdb - X server resource database utility."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xrdb"
@@ -39,9 +39,3 @@ class Xrdb(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xrefresh/package.py b/var/spack/repos/builtin/packages/xrefresh/package.py
index f99810beea80653e1912e4e5c255de3432fc411d..3a2c47b08655a2b8eacbb8267fcb5a19eb7653be 100644
--- a/var/spack/repos/builtin/packages/xrefresh/package.py
+++ b/var/spack/repos/builtin/packages/xrefresh/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xrefresh(Package):
+class Xrefresh(AutotoolsPackage):
     """xrefresh - refresh all or part of an X screen."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xrefresh"
@@ -38,9 +38,3 @@ class Xrefresh(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xrx/package.py b/var/spack/repos/builtin/packages/xrx/package.py
index 4457c2f16469ee1161689dd6e6cbbc633878abdc..eae7b76768f1457211bd603d369f3eca4cabdd9c 100644
--- a/var/spack/repos/builtin/packages/xrx/package.py
+++ b/var/spack/repos/builtin/packages/xrx/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xrx(Package):
+class Xrx(AutotoolsPackage):
     """The remote execution (RX) service specifies a MIME format for invoking
     applications remotely, for example via a World Wide Web browser.  This
     RX format specifies a syntax for listing network services required by
@@ -49,9 +49,3 @@ class Xrx(Package):
     depends_on('xproxymanagementprotocol', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xscope/package.py b/var/spack/repos/builtin/packages/xscope/package.py
index cf33c9767ea14c7516b68031511df6618a46e6f2..04f00a5f5d2b3c315a263640d33b15a0a7e3e880 100644
--- a/var/spack/repos/builtin/packages/xscope/package.py
+++ b/var/spack/repos/builtin/packages/xscope/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xscope(Package):
+class Xscope(AutotoolsPackage):
     """XSCOPE -- a program to monitor X11/Client conversations."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xscope"
@@ -37,9 +37,3 @@ class Xscope(Package):
     depends_on('xtrans', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xset/package.py b/var/spack/repos/builtin/packages/xset/package.py
index 462bea8cfe892c903922243611aad274e4f2afb7..5ca84431fd628c62ebcb3e1a3bfb2e79c8067bda 100644
--- a/var/spack/repos/builtin/packages/xset/package.py
+++ b/var/spack/repos/builtin/packages/xset/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xset(Package):
+class Xset(AutotoolsPackage):
     """User preference utility for X."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xset"
@@ -39,9 +39,3 @@ class Xset(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xsetmode/package.py b/var/spack/repos/builtin/packages/xsetmode/package.py
index f05fd0f123b87c32b9d3e7c5111ac2f0fedec006..8d39de26a456177686e0f73f6c8add3586312d49 100644
--- a/var/spack/repos/builtin/packages/xsetmode/package.py
+++ b/var/spack/repos/builtin/packages/xsetmode/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xsetmode(Package):
+class Xsetmode(AutotoolsPackage):
     """Set the mode for an X Input device."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xsetmode"
@@ -38,9 +38,3 @@ class Xsetmode(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xsetpointer/package.py b/var/spack/repos/builtin/packages/xsetpointer/package.py
index e9bf2fc9fe2f07bd9f8804cd92f8d545790b1b3b..194ef186ae28c0529a55327ec6f5a9bc63088f68 100644
--- a/var/spack/repos/builtin/packages/xsetpointer/package.py
+++ b/var/spack/repos/builtin/packages/xsetpointer/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xsetpointer(Package):
+class Xsetpointer(AutotoolsPackage):
     """Set an X Input device as the main pointer."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xsetpointer"
@@ -39,9 +39,3 @@ class Xsetpointer(Package):
     depends_on('inputproto@1.4:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xsetroot/package.py b/var/spack/repos/builtin/packages/xsetroot/package.py
index 3e62d41e9b2216f7c83e5421592218d5d7062f66..8be0625ff1a4f81b2df48a84e2e52cab19d94b6e 100644
--- a/var/spack/repos/builtin/packages/xsetroot/package.py
+++ b/var/spack/repos/builtin/packages/xsetroot/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xsetroot(Package):
+class Xsetroot(AutotoolsPackage):
     """xsetroot - root window parameter setting utility for X."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xsetroot"
@@ -41,9 +41,3 @@ class Xsetroot(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xsm/package.py b/var/spack/repos/builtin/packages/xsm/package.py
index 9d9c8963657376ed45e05f7955a3b61f783d7671..4d91dae142217a42bd0d035012f620ccdd34ee1e 100644
--- a/var/spack/repos/builtin/packages/xsm/package.py
+++ b/var/spack/repos/builtin/packages/xsm/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xsm(Package):
+class Xsm(AutotoolsPackage):
     """X Session Manager."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xsm"
@@ -41,9 +41,3 @@ class Xsm(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xstdcmap/package.py b/var/spack/repos/builtin/packages/xstdcmap/package.py
index bb19bdff1ae5a2f308b7515542971508ca53ce93..8c3a081ae76fab834d58fc9326c3e49dbc178b51 100644
--- a/var/spack/repos/builtin/packages/xstdcmap/package.py
+++ b/var/spack/repos/builtin/packages/xstdcmap/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xstdcmap(Package):
+class Xstdcmap(AutotoolsPackage):
     """The xstdcmap utility can be used to selectively define standard colormap
     properties.  It is intended to be run from a user's X startup script to
     create standard colormap definitions in order to facilitate sharing of
@@ -42,9 +42,3 @@ class Xstdcmap(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xtrans/package.py b/var/spack/repos/builtin/packages/xtrans/package.py
index ed46059d9d5f5c06638bf3bf57bfada6bcce5532..62f74b8cec0b26824534ccf801ea539fe9d2c067 100644
--- a/var/spack/repos/builtin/packages/xtrans/package.py
+++ b/var/spack/repos/builtin/packages/xtrans/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xtrans(Package):
+class Xtrans(AutotoolsPackage):
     """xtrans is a library of code that is shared among various X packages to
     handle network protocol transport in a modular fashion, allowing a
     single place to add new transport types.  It is used by the X server,
@@ -38,8 +38,3 @@ class Xtrans(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xtrap/package.py b/var/spack/repos/builtin/packages/xtrap/package.py
index 405ec2f8485cefefe11e2055e2be90a7c2a85551..4a899b5111b310af1149983fa5633be87cf1ceda 100644
--- a/var/spack/repos/builtin/packages/xtrap/package.py
+++ b/var/spack/repos/builtin/packages/xtrap/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xtrap(Package):
+class Xtrap(AutotoolsPackage):
     """XTrap sample clients."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xtrap"
@@ -38,9 +38,3 @@ class Xtrap(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xts/package.py b/var/spack/repos/builtin/packages/xts/package.py
index c3993cf3913d961e40a131132471b7a4de1ae8b8..9dd3e4a05ceaab585acba579efc36385e4b2e59e 100644
--- a/var/spack/repos/builtin/packages/xts/package.py
+++ b/var/spack/repos/builtin/packages/xts/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xts(Package):
+class Xts(AutotoolsPackage):
     """This is a revamped version of X Test Suite (XTS) which removes some of
     the ugliness of building and running the tests."""
 
@@ -50,11 +50,5 @@ class Xts(Package):
     depends_on('xset', type='build')
     depends_on('xdpyinfo', type='build')
 
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        # FIXME: Crashes during compilation
-        # error: redeclaration of enumerator 'XawChainTop'
-
-        make()
-        make('install')
+    # FIXME: Crashes during compilation
+    # error: redeclaration of enumerator 'XawChainTop'
diff --git a/var/spack/repos/builtin/packages/xvidtune/package.py b/var/spack/repos/builtin/packages/xvidtune/package.py
index ac5352df5f584656f108dea81f3924ca3f78d4ea..42dbc23aa009673ecbfebb23a88f9806e6fba3f0 100644
--- a/var/spack/repos/builtin/packages/xvidtune/package.py
+++ b/var/spack/repos/builtin/packages/xvidtune/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xvidtune(Package):
+class Xvidtune(AutotoolsPackage):
     """xvidtune is a client interface to the X server video mode
     extension (XFree86-VidModeExtension)."""
 
@@ -42,9 +42,3 @@ class Xvidtune(Package):
 
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xvinfo/package.py b/var/spack/repos/builtin/packages/xvinfo/package.py
index 359f1f23deab158710d0849040ed95886da9cc3a..f7a275f452f09ca49c83732354030ae696527516 100644
--- a/var/spack/repos/builtin/packages/xvinfo/package.py
+++ b/var/spack/repos/builtin/packages/xvinfo/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xvinfo(Package):
+class Xvinfo(AutotoolsPackage):
     """xvinfo prints out the capabilities of any video adaptors associated
     with the display that are accessible through the X-Video extension."""
 
@@ -40,9 +40,3 @@ class Xvinfo(Package):
     depends_on('xproto@7.0.25:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xwd/package.py b/var/spack/repos/builtin/packages/xwd/package.py
index d1f9ee1dfbf5ba5b8a8019bb4c04867eaf899633..9016e17915cf842226f22c0aba1baf2d8b858d37 100644
--- a/var/spack/repos/builtin/packages/xwd/package.py
+++ b/var/spack/repos/builtin/packages/xwd/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xwd(Package):
+class Xwd(AutotoolsPackage):
     """xwd - dump an image of an X window."""
 
     homepage = "http://cgit.freedesktop.org/xorg/app/xwd"
@@ -39,9 +39,3 @@ class Xwd(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xwininfo/package.py b/var/spack/repos/builtin/packages/xwininfo/package.py
index bba97ca6710659e99fba91cba347b61dfc35072d..61aa86bf461a0b4d4163affc0affe939b6e71bfa 100644
--- a/var/spack/repos/builtin/packages/xwininfo/package.py
+++ b/var/spack/repos/builtin/packages/xwininfo/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xwininfo(Package):
+class Xwininfo(AutotoolsPackage):
     """xwininfo prints information about windows on an X server. Various
     information is displayed depending on which options are selected."""
 
@@ -40,9 +40,3 @@ class Xwininfo(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xwud/package.py b/var/spack/repos/builtin/packages/xwud/package.py
index a30d55b7c68f6c99e15fc3ea5664831349945eec..9294156e161c56b40dd10a2e7076a10b632fef74 100644
--- a/var/spack/repos/builtin/packages/xwud/package.py
+++ b/var/spack/repos/builtin/packages/xwud/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xwud(Package):
+class Xwud(AutotoolsPackage):
     """xwud allows X users to display in a window an image saved in a
     specially formatted dump file, such as produced by xwd."""
 
@@ -39,9 +39,3 @@ class Xwud(Package):
     depends_on('xproto@7.0.17:', type='build')
     depends_on('pkg-config@0.9.0:', type='build')
     depends_on('util-macros', type='build')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        make('install')
diff --git a/var/spack/repos/builtin/packages/xz/package.py b/var/spack/repos/builtin/packages/xz/package.py
index 8b0609f50e11c64f285b5db19fdc2cf975b11fc1..c86c8c64b285d2f694e1db8c131b92ce4a2de379 100644
--- a/var/spack/repos/builtin/packages/xz/package.py
+++ b/var/spack/repos/builtin/packages/xz/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Xz(Package):
+class Xz(AutotoolsPackage):
     """XZ Utils is free general-purpose data compression software with
        high compression ratio. XZ Utils were written for POSIX-like
        systems, but also work on some not-so-POSIX systems. XZ Utils are
@@ -35,11 +35,3 @@ class Xz(Package):
 
     version('5.2.0', '867cc8611760240ebf3440bd6e170bb9')
     version('5.2.2', 'f90c9a0c8b259aee2234c4e0d7fd70af')
-
-    def install(self, spec, prefix):
-        configure('--prefix={0}'.format(prefix))
-
-        make()
-        if self.run_tests:
-            make('check')
-        make('install')
diff --git a/var/spack/repos/builtin/packages/yasm/package.py b/var/spack/repos/builtin/packages/yasm/package.py
index f14bdbcee7198ae411651e425424920a2343c851..e42ea6a5a77407ae2d2af4c78d9be769f28ca9b1 100644
--- a/var/spack/repos/builtin/packages/yasm/package.py
+++ b/var/spack/repos/builtin/packages/yasm/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Yasm(Package):
+class Yasm(AutotoolsPackage):
     """Yasm is a complete rewrite of the NASM-2.11.06 assembler. It
        supports the x86 and AMD64 instruction sets, accepts NASM and
        GAS assembler syntaxes and outputs binary, ELF32 and ELF64
@@ -34,8 +34,3 @@ class Yasm(Package):
     url      = "http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz"
 
     version('1.3.0', 'fc9e586751ff789b34b1f21d572d96af')
-
-    def install(self, spec, prefix):
-        configure("--prefix=%s" % prefix)
-        make()
-        make("install")
diff --git a/var/spack/repos/builtin/packages/zeromq/package.py b/var/spack/repos/builtin/packages/zeromq/package.py
index cafd3c21252b0d915d06f2c213cc7308354e4b33..51fff7222d42ed34a9bbfa9fac1fa77ea4f59d15 100644
--- a/var/spack/repos/builtin/packages/zeromq/package.py
+++ b/var/spack/repos/builtin/packages/zeromq/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Zeromq(Package):
+class Zeromq(AutotoolsPackage):
     """ The ZMQ networking/concurrency library and core API """
     homepage = "http://zguide.zeromq.org/"
     url      = "http://download.zeromq.org/zeromq-4.1.2.tar.gz"
@@ -40,8 +40,5 @@ class Zeromq(Package):
     depends_on("libsodium")
     depends_on("libsodium@:1.0.3", when='@:4.1.2')
 
-    def install(self, spec, prefix):
-        configure("--with-libsodium", "--prefix=%s" % prefix)
-
-        make()
-        make("install")
+    def configure_args(self):
+        return ['--with-libsodium']
diff --git a/var/spack/repos/builtin/packages/zsh/package.py b/var/spack/repos/builtin/packages/zsh/package.py
index a70d307be93b10c513088790ed6e4b96d492f24f..7b9c485966d4cd44e5767354e415b36ff2247547 100644
--- a/var/spack/repos/builtin/packages/zsh/package.py
+++ b/var/spack/repos/builtin/packages/zsh/package.py
@@ -25,7 +25,7 @@
 from spack import *
 
 
-class Zsh(Package):
+class Zsh(AutotoolsPackage):
     """Zsh is a shell designed for interactive use, although it is also a
     powerful scripting language. Many of the useful features of bash, ksh, and
     tcsh were incorporated into zsh; many original features were added.
@@ -37,9 +37,3 @@ class Zsh(Package):
     version('5.1.1', checksum='8ba28a9ef82e40c3a271602f18343b2f')
 
     depends_on("pcre")
-
-    def install(self, spec, prefix):
-        configure('--prefix=%s' % prefix)
-
-        make()
-        make("install")