summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hartzell <hartzell@alerce.com>2018-08-11 09:38:31 -0700
committerAdam J. Stewart <ajstewart426@gmail.com>2018-08-11 11:38:31 -0500
commit0b9434b4ba7e4f9fa933521d50a1e57a117e46e8 (patch)
tree8f8950982b888815118c7ee533d1e9be93595eee
parent2a4b7a4dc4a5747211729123ea40b20b797ea303 (diff)
downloadspack-0b9434b4ba7e4f9fa933521d50a1e57a117e46e8.tar.gz
spack-0b9434b4ba7e4f9fa933521d50a1e57a117e46e8.tar.bz2
spack-0b9434b4ba7e4f9fa933521d50a1e57a117e46e8.tar.xz
spack-0b9434b4ba7e4f9fa933521d50a1e57a117e46e8.zip
Add package for fasta (#8953)
* Add package for fasta Add a package for the fasta sequence alignment tools. The build system is novel (fasta is "venerable", so...). The source tree includes nearly 50 variant Makefiles, the installer is expected to pick one that's appropriate and then edit the "XDIR" variable to specify the installation path. I can only test 64 bit darwin and linux, so that's all I've included. I'm also assuming that every 64bit x86 system we'll see supports the SSE2 extensions. Other situations can be dealt with when someone has a test case. * Switch to MakefilePackage and clean up a bit - Clean up the description - Switch to MakefilePackage - generalize the path to the chosen Makefile - implement separate `edit`, `build`, and `install` phases. * Fix call to format() * Fix broken if logic
-rw-r--r--var/spack/repos/builtin/packages/fasta/package.py77
1 files changed, 77 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/fasta/package.py b/var/spack/repos/builtin/packages/fasta/package.py
new file mode 100644
index 0000000000..55e30ece73
--- /dev/null
+++ b/var/spack/repos/builtin/packages/fasta/package.py
@@ -0,0 +1,77 @@
+##############################################################################
+# Copyright (c) 2013-2018, 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/spack/spack
+# Please also see the NOTICE and LICENSE files 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
+##############################################################################
+from spack import *
+
+
+class Fasta(MakefilePackage):
+ """The FASTA programs find regions of local or global similarity
+ between Protein or DNA sequences, either by searching Protein or
+ DNA databases, or by identifying local duplications within a
+ sequence. Other programs provide information on the statistical
+ significance of an alignment. Like BLAST, FASTA can be used to
+ infer functional and evolutionary relationships between sequences
+ as well as help identify members of gene families.
+ """
+
+ homepage = "https://fasta.bioch.virginia.edu/fasta_www2/fasta_list2.shtml"
+ url = "https://github.com/wrpearson/fasta36/archive/fasta-v36.3.8g.tar.gz"
+
+ version('36.3.8g', sha256='fa5318b6f8d6a3cfdef0d29de530eb005bfd3ca05835faa6ad63663f8dce7b2e')
+
+ depends_on('zlib')
+
+ # The src tree includes a plethora of variant Makefiles and the
+ # builder is expected to choose one that's appropriate. This'll
+ # do for a first cut. I can't test anything else....
+ @property
+ def makefile_name(self):
+ if self.spec.satisfies('platform=darwin'):
+ name = 'Makefile.os_x86_64'
+ elif (self.spec.satisfies('platform=linux') and
+ self.spec.satisfies('target=x86_64')):
+ name = 'Makefile.linux64_sse2'
+ else:
+ tty.die('''Unsupported platform/target, must be
+Darwin (assumes 64-bit)
+Linux x86_64
+''')
+ return name
+
+ @property
+ def makefile_path(self):
+ return join_path(self.stage.source_path, 'make', self.makefile_name)
+
+ def edit(self, spec, prefix):
+ makefile = FileFilter(self.makefile_path)
+ makefile.filter('XDIR = .*', 'XDIR = {0}'.format(prefix.bin))
+
+ def build(self, spec, prefix):
+ with working_dir('src'):
+ make('-f', self.makefile_path)
+
+ def install(self, spec, prefix):
+ with working_dir('src'):
+ mkdir(prefix.bin)
+ make('-f', self.makefile_path, 'install')