# Copyright 2013-2022 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) import glob import os from spack.package import * class Trinotate(Package): """Trinotate is a comprehensive annotation suite designed for automatic functional annotation of transcriptomes, particularly de novo assembled transcriptomes, from model or non-model organisms""" homepage = "https://trinotate.github.io/" url = "https://github.com/Trinotate/Trinotate/archive/Trinotate-v3.1.1.tar.gz" version('3.2.2', sha256='1c41258a544cccb332f77b73f7397b457d5f3d7ce0038505369aeecc1e0650c2') version('3.1.1', sha256='f8af0fa5dbeaaf5a085132cd4ac4f4206b05cc4630f0a17a672c586691f03843') depends_on('trinity', type='run') depends_on('transdecoder', type='run') depends_on('sqlite', type='run') depends_on('ncbi-rmblastn', type='run') depends_on('hmmer', type='run') depends_on('perl', type='run') depends_on('lighttpd', type='run') depends_on('perl-dbi', type='run') depends_on('perl-cgi', type='run') depends_on('perl-dbd-sqlite', type='run') def patch(self): with working_dir(join_path(self.stage.source_path, 'admin/util')): perlscripts = glob.glob('*.pl') filter_file('#!/usr/bin/perl', '#!/usr/bin/env perl', *perlscripts) # trinotate web generates a config on run but puts it in a bad place # this causes issues with permissions; we hack the source to keep it # in the calling user's homedir filter_file('"$FindBin::RealBin/TrinotateWeb.conf/lighttpd.conf.port', '$ENV{"HOME"} . "/.trinotate_lighttpd.conf.port', 'run_TrinotateWebserver.pl', string=True) def install(self, spec, prefix): # most of the perl modules have local deps, install the whole tree mkdirp(prefix.lib) install_tree('.', join_path(prefix.lib, 'trinotate')) mkdirp(prefix.bin) os.symlink(join_path(prefix.lib, 'trinotate/Trinotate'), join_path(prefix.bin, 'Trinotate')) os.symlink(join_path(prefix.lib, 'trinotate/run_TrinotateWebserver.pl'), join_path(prefix.bin, 'run_TrinotateWebserver.pl'))