summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/maker/package.py
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/maker/package.py')
-rw-r--r--var/spack/repos/builtin/packages/maker/package.py91
1 files changed, 91 insertions, 0 deletions
diff --git a/var/spack/repos/builtin/packages/maker/package.py b/var/spack/repos/builtin/packages/maker/package.py
new file mode 100644
index 0000000000..41363ec0a1
--- /dev/null
+++ b/var/spack/repos/builtin/packages/maker/package.py
@@ -0,0 +1,91 @@
+# Copyright 2013-2019 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)
+
+from spack import *
+import os
+
+
+class Maker(Package):
+ """MAKER is a portable and easily configurable genome annotation pipeline.
+ It's purpose is to allow smaller eukaryotic and prokaryotic genomeprojects
+ to independently annotate their genomes and to create genome databases.
+ MAKER identifies repeats, aligns ESTs and proteins to a genome, produces
+ ab-initio gene predictions and automatically synthesizes these data into
+ gene annotations having evidence-based quality values. MAKER is also easily
+ trainable: outputs of preliminary runs can be used to automatically retrain
+ its gene prediction algorithm, producing higher quality gene-models on
+ subsequent runs. MAKER's inputs are minimal and its ouputs can be directly
+ loaded into a GMOD database. They can also be viewed in the Apollo genome
+ browser; this feature of MAKER provides an easy means to annotate, view and
+ edit individual contigs and BACs without the overhead of a database. MAKER
+ should prove especially useful for emerging model organism projects with
+ minimal bioinformatics expertise and computer resources.
+
+ Note: MAKER requires registration. Fill out the form at
+ http://yandell.topaz.genetics.utah.edu/cgi-bin/maker_license.cgi to get a
+ download link. Spack will search your current directory for the download
+ file. Alternatively, add this file to a mirror so that Spack can find it.
+ For instructions on how to set up a mirror, see
+ http://spack.readthedocs.io/en/latest/mirrors.html"""
+
+ homepage = "http://www.yandell-lab.org/software/maker.html"
+
+ version('2.31.10', sha256='d3979af9710d61754a3b53f6682d0e2052c6c3f36be6f2df2286d2587406f07d')
+
+ def url_for_version(self, version):
+ return "file://{0}/maker-{1}.tgz".format(os.getcwd(), version)
+
+ variant('mpi', default=True, description='Build with MPI support')
+
+ patch('install.patch')
+ patch('mpi.patch')
+ patch('MpiChunk.patch')
+
+ depends_on('perl', type=('build', 'run'))
+ depends_on('perl-module-build', type='build')
+ depends_on('perl-dbi', type=('build', 'run'))
+ depends_on('perl-dbd-pg', type=('build', 'run'))
+ depends_on('perl-dbd-sqlite', type=('build', 'run'))
+ depends_on('perl-forks', type=('build', 'run'))
+ depends_on('perl-file-which', type=('build', 'run'))
+ depends_on('perl-perl-unsafe-signals', type=('build', 'run'))
+ depends_on('perl-bit-vector', type=('build', 'run'))
+ depends_on('perl-inline-c', type=('build', 'run'))
+ depends_on('perl-io-all', type=('build', 'run'))
+ depends_on('perl-io-prompt', type=('build', 'run'))
+ depends_on('perl-bio-perl', type=('build', 'run'))
+ depends_on('blast-plus')
+ depends_on('snap-korf')
+ depends_on('repeatmasker')
+ depends_on('exonerate')
+ depends_on('augustus')
+ depends_on('interproscan@:4.8')
+ depends_on('mpi', when='+mpi')
+
+ def install(self, spec, prefix):
+ if '+mpi' in spec:
+ with working_dir('src'):
+ pattern = r'my \$go = 0;'
+ repl = 'my $go = 1;'
+ filter_file(pattern, repl, 'Build.PL', backup=False)
+
+ perl = which('perl')
+ rm = which('rm')
+ with working_dir('src'):
+ perl('Build.PL', '--install_base', prefix)
+ perl('Build', 'install')
+
+ install_tree('lib', join_path(prefix, 'perl', 'lib'))
+
+ # Remove scripts that do not work. The 'mpi_evaluator' and
+ # 'mpi_iprscan' scripts depend on a custom perl module that is not
+ # shipped with maker. The 'maker2chado' script depends on setting up a
+ # CHADO database which is out of scope here.
+ for package in ('maker2chado', 'maker2jbrowse', 'maker2wap',
+ 'mpi_evaluator', 'mpi_iprscan'):
+ rm('-f', join_path(prefix.bin, package))
+
+ # Remove old IO::Prompt perl module
+ rm('-r', '-f', join_path(prefix, 'perl', 'lib', 'IO'))