119 lines
5.7 KiB
Python
119 lines
5.7 KiB
Python
# Copyright 2013-2024 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 inspect
|
|
|
|
from spack.package import *
|
|
|
|
|
|
class PerlBioperl(PerlPackage):
|
|
"""BioPerl is the product of a community effort to produce Perl code which
|
|
is useful in biology. Examples include Sequence objects, Alignment objects
|
|
and database searching objects. These objects not only do what they are
|
|
advertised to do in the documentation, but they also interact - Alignment
|
|
objects are made from the Sequence objects, Sequence objects have access to
|
|
Annotation and SeqFeature objects and databases, Blast objects can be
|
|
converted to Alignment objects, and so on. This means that the objects
|
|
provide a coordinated and extensible framework to do computational biology.
|
|
|
|
BioPerl development focuses on Perl classes, or code that is used to create
|
|
objects representing biological entities. There are scripts provided in the
|
|
scripts/ and examples/ directories but scripts are not the main focus of
|
|
the BioPerl developers. Of course, as the objects do most of the hard work
|
|
for you, all you have to do is combine a number of objects together
|
|
sensibly to make useful scripts.
|
|
|
|
The intent of the BioPerl development effort is to make reusable tools that
|
|
aid people in creating their own sites or job-specific applications.
|
|
|
|
The BioPerl website at https://bioperl.org/ also attempts to maintain links
|
|
and archives of standalone bio-related Perl tools that are not affiliated
|
|
or related to the core BioPerl effort. Check the site for useful code ideas
|
|
and contribute your own if possible."""
|
|
|
|
homepage = "https://metacpan.org/pod/BioPerl"
|
|
url = "https://cpan.metacpan.org/authors/id/C/CD/CDRAUG/BioPerl-1.7.6.tar.gz"
|
|
|
|
license("Artistic-1.0")
|
|
|
|
version(
|
|
"1.7.6",
|
|
sha256="df2a3efc991b9b5d7cc9d038a1452c6dac910c9ad2a0e47e408dd692c111688d",
|
|
preferred=True,
|
|
)
|
|
version(
|
|
"1.007002",
|
|
sha256="17aa3aaab2f381bbcaffdc370002eaf28f2c341b538068d6586b2276a76464a1",
|
|
url="https://cpan.metacpan.org/authors/id/C/CJ/CJFIELDS/BioPerl-1.007002.tar.gz",
|
|
)
|
|
|
|
# According to cpandeps.grinnz.com Module-Build is both a build and run
|
|
# time dependency for BioPerl
|
|
depends_on("perl-module-build", type=("build", "run"))
|
|
depends_on("perl-uri", type=("build", "run"))
|
|
depends_on("perl-io-string", type=("build", "run"))
|
|
depends_on("perl-data-stag", type=("build", "run"))
|
|
depends_on("perl-test-most", type=("build", "run"))
|
|
depends_on("perl-error", when="@1.7.6:", type=("build", "run"))
|
|
depends_on("perl-graph", when="@1.7.6:", type=("build", "run"))
|
|
depends_on("perl-http-message", when="@1.7.6:", type=("build", "run"))
|
|
depends_on("perl-io-stringy", when="@1.7.6:", type=("build", "run"))
|
|
depends_on("perl-ipc-run", when="@1.7.6:", type=("build", "run"))
|
|
depends_on("perl-list-moreutils", when="@1.7.6:", type=("build", "run"))
|
|
depends_on("perl-set-scalar", when="@1.7.6:", type=("build", "run"))
|
|
depends_on("perl-test-requiresinternet", when="@1.7.6:", type=("build", "run"))
|
|
depends_on("perl-xml-dom", when="@1.7.6:", type=("build", "run"))
|
|
depends_on("perl-xml-dom-xpath", when="@1.7.6:", type=("build", "run"))
|
|
depends_on("perl-xml-libxml", when="@1.7.6:", type=("build", "run"))
|
|
depends_on("perl-xml-sax", when="@1.7.6:", type=("build", "run"))
|
|
depends_on("perl-xml-sax-base", when="@1.7.6:", type=("build", "run"))
|
|
depends_on("perl-xml-sax-writer", when="@1.7.6:", type=("build", "run"))
|
|
depends_on("perl-xml-twig", when="@1.7.6:", type=("build", "run"))
|
|
depends_on("perl-xml-writer", when="@1.7.6:", type=("build", "run"))
|
|
depends_on("perl-yaml", when="@1.7.6:", type=("build", "run"))
|
|
depends_on("perl-libwww-perl", when="@1.7.6:", type=("build", "run"))
|
|
depends_on("perl-libxml-perl", when="@1.7.6:", type=("build", "run"))
|
|
|
|
@when("@1.007002")
|
|
def configure(self, spec, prefix):
|
|
# Overriding default configure method in order to cater to interactive
|
|
# Build.pl
|
|
self.build_method = "Build.PL"
|
|
self.build_executable = Executable(join_path(self.stage.source_path, "Build"))
|
|
|
|
# Config questions consist of:
|
|
# Do you want to run the Bio::DB::GFF or Bio::DB::SeqFeature::Store
|
|
# live database tests? y/n [n]
|
|
#
|
|
# Install [a]ll BioPerl scripts, [n]one, or choose groups
|
|
# [i]nteractively? [a]
|
|
#
|
|
# Do you want to run tests that require connection to servers across
|
|
# the internet (likely to cause some failures)? y/n [n]
|
|
#
|
|
# Eventually, someone can add capability for the other options, but
|
|
# the current answers are the most practical for a spack install.
|
|
|
|
config_answers = ["n\n", "a\n", "n\n"]
|
|
config_answers_filename = "spack-config.in"
|
|
|
|
with open(config_answers_filename, "w") as f:
|
|
f.writelines(config_answers)
|
|
|
|
with open(config_answers_filename, "r") as f:
|
|
inspect.getmodule(self).perl("Build.PL", "--install_base=%s" % self.prefix, input=f)
|
|
|
|
# Need to also override the build and install methods to make sure that the
|
|
# Build script is run through perl and not use the shebang, as it might be
|
|
# too long. This is needed because this does not pick up the
|
|
# `@run_after(configure)` step defined in `PerlPackage`.
|
|
@when("@1.007002")
|
|
def build(self, spec, prefix):
|
|
inspect.getmodule(self).perl("Build")
|
|
|
|
@when("@1.007002")
|
|
def install(self, spec, prefix):
|
|
inspect.getmodule(self).perl("Build", "install")
|