213 lines
7.2 KiB
Python
213 lines
7.2 KiB
Python
# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
|
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
|
#
|
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
|
|
|
#
|
|
# 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.12.0/ncbi-blast-2.12.0+-src.tar.gz"
|
|
|
|
maintainers = ['weijianwen']
|
|
|
|
version('2.12.0', sha256='fda3c9c9d488cad6c1880a98a236d842bcf3610e3e702af61f7a48cf0a714b88')
|
|
version('2.11.0', sha256='d88e1858ae7ce553545a795a2120e657a799a6d334f2a07ef0330cc3e74e1954')
|
|
version('2.9.0', sha256='a390cc2d7a09422759fc178db84de9def822cbe485916bbb2ec0d215dacdc257')
|
|
version('2.8.1', sha256='e03dd1a30e37cb8a859d3788a452c5d70ee1f9102d1ee0f93b2fbd145925118f')
|
|
version('2.7.1', sha256='10a78d3007413a6d4c983d2acbf03ef84b622b82bd9a59c6bd9fbdde9d0298ca')
|
|
version('2.6.0', sha256='0510e1d607d0fb4389eca50d434d5a0be787423b6850b3a4f315abc2ef19c996')
|
|
version('2.2.30', sha256='26f72d51c81b9497f33b7274109565c36692572faef4d72377f79b7e59910e40')
|
|
|
|
# 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')
|
|
variant('perl', default=True,
|
|
description='Build with perl support')
|
|
variant('python', default=True,
|
|
description='Build with python 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', when='+python')
|
|
depends_on('perl', when='+perl')
|
|
|
|
depends_on('lmdb', when='@2.7.1:')
|
|
|
|
configure_directory = 'c++'
|
|
|
|
def configure_args(self):
|
|
spec = self.spec
|
|
|
|
config_args = [
|
|
'--with-bin-release',
|
|
'--without-debug',
|
|
'--with-mt',
|
|
'--without-boost',
|
|
]
|
|
|
|
if spec.target.family != 'aarch64':
|
|
config_args.append('--with-64')
|
|
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')
|
|
|
|
if '+python' in spec:
|
|
config_args.append(
|
|
'--with-python={0}'.format(self.spec['python'].home)
|
|
)
|
|
else:
|
|
config_args.append('--without-python')
|
|
|
|
if '+perl' in spec:
|
|
config_args.append(
|
|
'--with-perl={0}'.format(self.spec['perl'].prefix)
|
|
)
|
|
else:
|
|
config_args.append('--without-python')
|
|
|
|
return config_args
|