diff --git a/var/spack/repos/builtin/packages/blast-plus/blast-make-fix2.5.0.diff b/var/spack/repos/builtin/packages/blast-plus/blast-make-fix2.5.0.diff
new file mode 100644
index 0000000000000000000000000000000000000000..5611a0e83be97bee36f1bd29884a35e7b4606414
--- /dev/null
+++ b/var/spack/repos/builtin/packages/blast-plus/blast-make-fix2.5.0.diff
@@ -0,0 +1,22 @@
+--- ncbi-blast-2.5.0+-src/c++/src/build-system/Makefile.in.top	2014-11-12 17:41:55.000000000 +0100
++++ MakeFile	2016-12-19 18:00:58.000000000 +0100
+@@ -1,4 +1,4 @@
+-# $Id: Makefile.in.top 451817 2014-11-12 16:41:55Z ucko $
++# $Id$
+ # Top-level meta-makefile that simplifies building even further.
+
+ # include @builddir@/Makefile.mk
+@@ -49,9 +49,10 @@
+ 	    for x in *.a; do \
+ 	        $(LN_S) "$$x" "`$(BASENAME) \"$$x\" .a`-static.a"; \
+ 	    done
+-	cd $(includedir0) && find * -name CVS -prune -o -print |\
+-            cpio -pd $(pincludedir)
+-	$(INSTALL) -m 644 $(incdir)/* $(pincludedir)
++	#for d in $(includedir0) $(incdir); do \
++	#    cd $$d && find * -name .svn prune -o -print | \
++	#         cpio -pd $(pincludedir) ; \
++	#done
+ ## set up appropriate build and status directories somewhere under $(libdir)?
+
+ install-gbench:
diff --git a/var/spack/repos/builtin/packages/blast-plus/package.py b/var/spack/repos/builtin/packages/blast-plus/package.py
new file mode 100644
index 0000000000000000000000000000000000000000..02db14f478242fb2f8c93268d04ccda5528662b7
--- /dev/null
+++ b/var/spack/repos/builtin/packages/blast-plus/package.py
@@ -0,0 +1,207 @@
+##############################################################################
+# Copyright (c) 2013-2016, Lawrence Livermore National Security, LLC.
+# Produced at the Lawrence Livermore National Laboratory.
+#
+# This file is part of Spack.
+# Created by Todd Gamblin, tgamblin@llnl.gov, All rights reserved.
+# LLNL-CODE-647188
+#
+# For details, see https://github.com/llnl/spack
+# Please also see the LICENSE file for our notice and the LGPL.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License (as
+# published by the Free Software Foundation) version 2.1, February 1999.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the IMPLIED WARRANTY OF
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the terms and
+# conditions of the GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+##############################################################################
+#
+# This is a based largely on the Homebrew science formula:
+# https://github.com/Homebrew/homebrew-science/blob/master/blast.rb
+#
+# There s one tricky bit to be resolved:
+#
+# - HDF5 builds explode, blast's configure script tries to run a program that
+#   uses a variable called 'HOST' but some other bit defines a macro called
+#   HOST that's defined to a string.  Hilarity ensues.
+#
+#
+from spack import *
+
+
+class BlastPlus(AutotoolsPackage):
+    """Basic Local Alignment Search Tool."""
+
+
+    homepage = "http://blast.ncbi.nlm.nih.gov/"
+    url      = "https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/2.6.0/ncbi-blast-2.6.0+-src.tar.gz"
+
+    def url_for_version(self, version):
+        url = "https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/{0}/ncbi-blast-{0}+-src.tar.gz"
+        return url.format(version)
+
+    version('2.6.0',  'c8ce8055b10c4d774d995f88c7cc6225')
+    version('2.2.30', 'f8e9a5eb368173142fe6867208b73715')
+
+    # homebrew sez: Fixed upstream in future version > 2.6
+    # But this bug sez that it will be fixed in 2.6
+    #    https://github.com/Homebrew/homebrew-science/pull/4740
+    # The 2.6.0 src still matches the "before" bit of the patch
+    # so it's probably still "needed".
+    # On the other hand, the `find` command is broken and there
+    # aren't any .svn dirs in the tree, so I've updated their patch
+    # to just comment out the block.
+    patch('blast-make-fix2.5.0.diff', when="@2.5.0:2.6.0")
+
+    # See https://github.com/Homebrew/homebrew-science/issues/2337#issuecomment-170011511
+    @when('@:2.2.31')
+    def patch(self):
+        filter_file("2.95* | 2.96* | 3.* | 4.* )",
+                    "2.95* | 2.96* | 3.* | 4.* | 5.* )",
+                    "c++/src/build-system/configure",
+                    string=True)
+
+    # No...
+    # depends_on :mysql => :optional
+
+    variant('static', default=False,
+            description='Build with static linkage')
+    variant('jpeg', default=True,
+            description='Build with jpeg support')
+    variant('png', default=True,
+            description='Build with png support')
+    variant('freetype', default=True,
+            description='Build with freetype support')
+    # variant('hdf5', default=True,
+    #        description='Build with hdf5 support')
+    variant('gnutls', default=True,
+            description='Build with gnutls support')
+    variant('openssl', default=True,
+            description='Build with openssl support')
+    variant('zlib', default=True,
+            description='Build with zlib support')
+    variant('bzip2', default=True,
+            description='Build with bzip2 support')
+    variant('lzo', default=True,
+            description='Build with lzo support')
+    variant('pcre', default=True,
+            description='Build with pcre support')
+
+    depends_on('jpeg', when='+jpeg')
+    depends_on('libpng', when='+png')
+    depends_on('freetype', when='+freetype')
+    # depends_on('hdf5', when='+hdf5')
+    depends_on('gnutls', when='+gnutls')
+    depends_on('openssl', when='+openssl')
+    depends_on('zlib', when='+zlib')
+    depends_on('bzip2', when='+bzip2')
+    depends_on('lzo', when='+lzo')
+    depends_on('pcre', when='+pcre')
+
+    depends_on('python')
+
+    configure_directory = 'c++'
+
+    def configure_args(self):
+        spec   = self.spec
+
+        config_args = [
+            '--with-bin-release',
+            '--without-debug',
+            '--with-mt',
+            '--with-64',
+            '--without-boost',
+        ]
+
+        if '+static' in spec:
+            config_args.append('--with-static')
+            # FIXME
+            # args << "--with-static-exe" unless OS.linux?
+            # args << "--with-dll" if build.with? "dll"
+        else:
+            config_args.extend([
+                '--with-dll',
+                '--without-static',
+                '--without-static-exe'
+            ])
+
+        if '+jpeg' in spec:
+            config_args.append(
+                '--with-jpeg={0}'.format(self.spec['jpeg'].prefix)
+            )
+        else:
+            config_args.append('--without-jpeg')
+
+        if '+png' in spec:
+            config_args.append(
+                '--with-png={0}'.format(self.spec['libpng'].prefix)
+            )
+        else:
+            config_args.append('--without-png')
+
+        if '+freetype' in spec:
+            config_args.append(
+                '--with-freetype={0}'.format(self.spec['freetype'].prefix)
+            )
+        else:
+            config_args.append('--without-freetype')
+
+        config_args.append('--without-hdf5')
+        # if '+hdf5' in spec:
+        #     # FIXME
+        #     config_args.append(
+        #         '--with-hdf5={0}'.format(self.spec['hdf5'].prefix)
+        #     )
+        # else:
+        #     config_args.append('--without-hdf5')
+
+        if '+zlib' in spec:
+            config_args.append(
+                '--with-z={0}'.format(self.spec['zlib'].prefix)
+            )
+        else:
+            config_args.append('--without-z')
+
+        if '+bzip2' in spec:
+            config_args.append(
+                '--with-bz2={0}'.format(self.spec['bzip2'].prefix)
+            )
+        else:
+            config_args.append('--without-bz2')
+
+        if '+lzo' in spec:
+            config_args.append(
+                '--with-lzo={0}'.format(self.spec['lzo'].prefix)
+            )
+        else:
+            config_args.append('--without-lzo')
+
+        if '+gnutls' in spec:
+            config_args.append(
+                '--with-gnutls={0}'.format(self.spec['gnutls'].prefix)
+            )
+        else:
+            config_args.append('--without-gnutls')
+
+        if '+openssl' in spec:
+            config_args.append(
+                '--with-openssl={0}'.format(self.spec['openssl'].prefix)
+            )
+        else:
+            config_args.append('--without-openssl')
+
+        if '+pcre' in spec:
+            config_args.append(
+                '--with-pcre={0}'.format(self.spec['pcre'].prefix)
+            )
+        else:
+            config_args.append('--without-pcre')
+
+        return config_args