diff options
author | George Hartzell <hartzell@alerce.com> | 2018-08-11 09:38:31 -0700 |
---|---|---|
committer | Adam J. Stewart <ajstewart426@gmail.com> | 2018-08-11 11:38:31 -0500 |
commit | 0b9434b4ba7e4f9fa933521d50a1e57a117e46e8 (patch) | |
tree | 8f8950982b888815118c7ee533d1e9be93595eee | |
parent | 2a4b7a4dc4a5747211729123ea40b20b797ea303 (diff) | |
download | spack-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.py | 77 |
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') |