New package: maker and dependencies (#12904)

This commit is contained in:
Glenn Johnson 2019-09-27 16:59:58 -05:00 committed by Peter Scheibel
parent 08a6577861
commit fc99eddb12
42 changed files with 997 additions and 6 deletions

View File

@ -0,0 +1,20 @@
--- a/lib/Process/MpiChunk.pm 2014-12-01 16:40:29.000000000 -0600
+++ b/lib/Process/MpiChunk.pm 2019-09-23 13:23:19.779213006 -0500
@@ -744,7 +744,7 @@
my $safe_seq_id = $VARS->{safe_seq_id};
my $q_seq_length = $VARS->{q_seq_length};
- my $TMP = GI::get_global_temp;
+ my $TMP = GI::get_global_temp::;
if($CTL_OPT{go_gffdb} && GI::is_NFS_mount($dbfile) && !GI::is_NFS_mount($TMP)){
$dbfile = GI::localize_file($dbfile);
}
@@ -3167,7 +3167,7 @@
my $LOG = $VARS->{LOG};
my %CTL_OPT = %{$VARS->{CTL_OPT}};
- my $TMP = GI::get_global_temp;
+ my $TMP = GI::get_global_temp::;
if($CTL_OPT{go_gffdb} && GI::is_NFS_mount($dbfile) && !GI::is_NFS_mount($TMP)){
$dbfile = GI::localize_file($dbfile);
}

View File

@ -0,0 +1,10 @@
--- a/src/Build.PL 2019-09-18 21:00:16.900047731 -0500
+++ b/src/Build.PL 2019-09-18 21:10:41.058957500 -0500
@@ -91,7 +91,6 @@
'Carp' => '1.24',
#'Other::Module' => '>= 1.2, != 1.5, < 2.0',
},
- install_base => "$FindBin::RealBin/../",
install_base_relpaths => {
arch => [qw(perl/lib)],
lib => [qw(perl/lib)],

View File

@ -0,0 +1,38 @@
diff -ruN a/src/Build.PL b/src/Build.PL
--- a/src/Build.PL 2014-12-01 16:37:10.000000000 -0600
+++ b/src/Build.PL 2019-09-15 18:30:56.940787669 -0500
@@ -129,9 +129,10 @@
}
#ask for MPI
-my $go = $build->y_n("\nMAKER supports distributed parallelization via MPI.\n".
- "Would you like to configure MAKER for MPI (This\n".
- "requires that you have an MPI client installed)?", 'N');
+#my $go = $build->y_n("\nMAKER supports distributed parallelization via MPI.\n".
+# "Would you like to configure MAKER for MPI (This\n".
+# "requires that you have an MPI client installed)?", 'N');
+my $go = 0;
$build->feature(mpi_support => $go);
$build->config_mpi() if($go);
diff -ruN a/src/inc/lib/MAKER/Build.pm b/src/inc/lib/MAKER/Build.pm
--- a/src/inc/lib/MAKER/Build.pm 2014-12-01 16:37:10.000000000 -0600
+++ b/src/inc/lib/MAKER/Build.pm 2019-09-15 18:30:25.439863837 -0500
@@ -108,7 +108,7 @@
$mpicc = $self->config('cc') if(! $mpicc && $self->config('cc') =~ /(^|[\/])mpicc$/);
($mpicc) = File::Which::where('mpicc') if(!$mpicc || ! -f $mpicc);
- $mpicc = $self->prompt("\nPlease specify the path to 'mpicc' on your system:", $mpicc);
+ #$mpicc = $self->prompt("\nPlease specify the path to 'mpicc' on your system:", $mpicc);
while(!$mpicc || $mpicc !~ /(^|[\/])mpicc$/ || ! -f $mpicc){
$mpicc = $self->prompt("\nCannot find 'mpicc'.\n".
@@ -139,7 +139,7 @@
my ($MPIDIR) = grep {-f "$_/mpi.h"} @includes;
- $MPIDIR = $self->prompt("\nPlease specify the path to the directory containing 'mpi.h':", $MPIDIR);
+ #$MPIDIR = $self->prompt("\nPlease specify the path to the directory containing 'mpi.h':", $MPIDIR);
while(!$MPIDIR || ! -f "$MPIDIR/mpi.h"){
$MPIDIR = $self->prompt("\nCannot find 'mpi.h'\n.".

View File

@ -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'))

View File

@ -0,0 +1,17 @@
# 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 *
class PerlAcmeDamn(PerlPackage):
"""Acme::Damn provides a single routine, damn(), which takes a blessed
reference (a Perl object), and unblesses it, to return the original
reference."""
homepage = "https://metacpan.org/pod/Acme::Damn"
url = "https://cpan.metacpan.org/authors/id/I/IB/IBB/Acme-Damn-0.08.tar.gz"
version('0.08', sha256='310d2d03ff912dcd42e4d946174099f41fe3a2dd57a497d6bd65baf1759b7e0e')

View File

@ -0,0 +1,23 @@
# 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 *
class PerlAlienBuild(PerlPackage):
"""This module provides tools for building external (non-CPAN) dependencies
for CPAN. It is mainly designed to be used at install time of a CPAN
client, and work closely with Alien::Base which is used at runtime."""
homepage = "https://metacpan.org/pod/Alien::Build"
url = "https://cpan.metacpan.org/authors/id/P/PL/PLICEASE/Alien-Build-1.86.tar.gz"
version('1.86', sha256='f856a46aea72fe77daea5b1788b4ea0dc215f5704f5a35fa063171be8523e4e9')
depends_on('perl-capture-tiny', type=('build', 'run'))
depends_on('perl-ffi-checklib', type=('build', 'run'))
depends_on('perl-file-which', type=('build', 'run'))
depends_on('perl-file-chdir', type=('build', 'run'))
depends_on('perl-path-tiny', type=('build', 'run'))

View File

@ -0,0 +1,18 @@
# 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 *
class PerlAlienLibxml2(PerlPackage):
"""This module provides libxml2 for other modules to use."""
homepage = "https://metacpan.org/pod/Alien::Libxml2"
url = "https://cpan.metacpan.org/authors/id/P/PL/PLICEASE/Alien-Libxml2-0.09.tar.gz"
version('0.10_01', sha256='2f45b308b33503292f48bf46a75fe1e653d6b209ba5caf0628d8cc103f8d61ac')
depends_on('libxml2')
depends_on('perl-alien-build', type=('build', 'run'))

View File

@ -8,19 +8,65 @@
class PerlBioPerl(PerlPackage): class PerlBioPerl(PerlPackage):
"""Functional access to BioPerl for people who don't know objects""" """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.
homepage = "http://search.cpan.org/~cjfields/BioPerl-1.007002/Bio/Perl.pm" BioPerl development focuses on Perl classes, or code that is used to create
url = "http://search.cpan.org/CPAN/authors/id/C/CJ/CJFIELDS/BioPerl-1.007002.tar.gz" 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.
version('1.007002', 'a912c92b56d009198f1786b4cf560d5c') The intent of the BioPerl development effort is to make reusable tools that
aid people in creating their own sites or job-specific applications.
depends_on('perl-module-build', type='build') The BioPerl website at http://bioperl.org also attempts to maintain links
depends_on('perl-uri-escape', type=('build', 'run')) 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"
version('1.7.6', sha256='df2a3efc991b9b5d7cc9d038a1452c6dac910c9ad2a0e47e408dd692c111688d')
version('1.7.2', 'a912c92b56d009198f1786b4cf560d5c',
url="http://search.cpan.org/CPAN/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-io-string', type=('build', 'run'))
depends_on('perl-data-stag', type=('build', 'run')) depends_on('perl-data-stag', type=('build', 'run'))
depends_on('perl-test-most', 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.7.2')
def configure(self, spec, prefix): def configure(self, spec, prefix):
# Overriding default configure method in order to cater to interactive # Overriding default configure method in order to cater to interactive
# Build.pl # Build.pl
@ -50,3 +96,15 @@ def configure(self, spec, prefix):
with open(config_answers_filename, 'r') as f: with open(config_answers_filename, 'r') as f:
inspect.getmodule(self).perl('Build.PL', '--install_base=%s' % inspect.getmodule(self).perl('Build.PL', '--install_base=%s' %
self.prefix, input=f) 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.7.2')
def build(self, spec, prefix):
inspect.getmodule(self).perl('Build')
@when('@1.7.2')
def install(self, spec, prefix):
inspect.getmodule(self).perl('Build', 'install')

View File

@ -0,0 +1,19 @@
# 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 *
class PerlDbdPg(PerlPackage):
"""DBD::Pg is a Perl module that works with the DBI module to provide
access to PostgreSQL databases."""
homepage = "https://metacpan.org/pod/DBD::Pg"
url = "https://cpan.metacpan.org/authors/id/T/TU/TURNSTEP/DBD-Pg-3.10.0.tar.gz"
version('3.10.0', sha256='e103268a63e2828e3d43659bdba5f743446cbbe047a766f843112eedae105f80')
depends_on('postgresql')
depends_on('perl-dbi', type=('build', 'run'))

View File

@ -0,0 +1,15 @@
# 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 *
class PerlDevelSymdump(PerlPackage):
"""Devel::Symdump - dump symbol names or the symbol table"""
homepage = "https://metacpan.org/pod/Devel::Symdump"
url = "https://cpan.metacpan.org/authors/id/A/AN/ANDK/Devel-Symdump-2.18.tar.gz"
version('2.0604', sha256='1f9eaa557733f775ccaa852e846566274c017e6fee380aeb8d08e425cfa86d3e')

View File

@ -0,0 +1,20 @@
# 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 *
class PerlError(PerlPackage):
"""The Error package provides two interfaces. Firstly Error provides a
procedural interface to exception handling. Secondly Error is a base class
for errors/exceptions that can either be thrown, for subsequent catch, or
can simply be recorded."""
homepage = "https://metacpan.org/pod/Error"
url = "https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Error-0.17028.tar.gz"
version('0.17028', sha256='3ad85c5e58b31c8903006298424a51bba39f1840e324f5ae612eabc8b935e960')
depends_on('perl-module-build', type='build')

View File

@ -0,0 +1,20 @@
# 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 *
class PerlFfiChecklib(PerlPackage):
"""This module checks whether a particular dynamic library is available for
FFI to use. It is modeled heavily on Devel::CheckLib, but will find dynamic
libraries even when development packages are not installed. It also
provides a find_lib function that will return the full path to the found
dynamic library, which can be feed directly into FFI::Platypus or another
FFI system."""
homepage = "https://metacpan.org/pod/FFI::CheckLib"
url = "https://cpan.metacpan.org/authors/id/P/PL/PLICEASE/FFI-CheckLib-0.25.tar.gz"
version('0.25', sha256='eb36b9a7cff1764a65b1b77e01e92c26207c558a3f986d0d17d2b110fa366ba4')

View File

@ -0,0 +1,23 @@
# 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 *
class PerlFileChdir(PerlPackage):
"""Perl's chdir() has the unfortunate problem of being very, very, very
global. If any part of your program calls chdir() or if any library you use
calls chdir(), it changes the current working directory for the *whole*
program.
This sucks.
File::chdir gives you an alternative, $CWD and @CWD. These two variables
combine all the power of chdir(), File::Spec and Cwd."""
homepage = "https://metacpan.org/pod/File::chdir"
url = "https://cpan.metacpan.org/authors/id/D/DA/DAGOLDEN/File-chdir-0.1010.tar.gz"
version('0.1011', sha256='31ebf912df48d5d681def74b9880d78b1f3aca4351a0ed1fe3570b8e03af6c79')

View File

@ -0,0 +1,21 @@
# 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 *
class PerlForks(PerlPackage):
"""The "forks" pragma allows a developer to use threads without having to
have a threaded perl, or to even run 5.8.0 or higher."""
homepage = "https://metacpan.org/pod/forks"
url = "https://cpan.metacpan.org/authors/id/R/RY/RYBSKEJ/forks-0.36.tar.gz"
version('0.36', sha256='61be24e44f4c6fea230e8354678beb5b7adcfefd909a47db8f0a251b0ab65993')
depends_on('perl-acme-damn', type=('build', 'run'))
depends_on('perl-devel-symdump', type=('build', 'run'))
depends_on('perl-list-moreutils', type=('build', 'run'))
depends_on('perl-sys-sigaction', type=('build', 'run'))

View File

@ -0,0 +1,30 @@
# 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 *
class PerlIoAll(PerlPackage):
"""IO::All combines all of the best Perl IO modules into a single nifty
object oriented interface to greatly simplify your everyday Perl IO idioms.
It exports a single function called io, which returns a new IO::All object.
And that object can do it all!
The IO::All object is a proxy for IO::File, IO::Dir, IO::Socket, Tie::File,
File::Spec, File::Path, File::MimeInfo and File::ReadBackwards; as well as
all the DBM and MLDBM modules. You can use most of the methods found in
these classes and in IO::Handle (which they inherit from). IO::All adds
dozens of other helpful idiomatic methods including file stat and
manipulation functions.
IO::All is pluggable, and modules like IO::All::LWP and IO::All::Mailto add
even more functionality. Optionally, every IO::All object can be tied to
itself. This means that you can use most perl IO builtins on it: readline,
<>, getc, print, printf, syswrite, sysread, close."""
homepage = "https://metacpan.org/pod/distribution/IO-All/lib/IO/All.pod"
url = "https://cpan.metacpan.org/authors/id/F/FR/FREW/IO-All-0.87.tar.gz"
version('0.87', sha256='54e21d250c0229127e30b77a3461e10077854ec244f26fb670f1b445ed4c4d5b')

View File

@ -0,0 +1,35 @@
# 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 *
class PerlIoPrompt(PerlPackage):
"""By default, this module exports a single function prompt. It prompts the
user to enter some input, and returns an object that represents the user
input.
You may specify various flags to the function to affect its behaviour; most
notably, it defaults to automatically chomp the input, unless the -line
flag is specified.
Two other functions are exported at request: hand_print, which simulates
hand-typing to the console; and get_input, which is the lower-level
function that actually prompts the user for a suitable input.
Note that this is an interim re-release. A full release with better
documentation will follow in the near future. Meanwhile, please consult the
examples directory from this module's CPAN distribution to better
understand how to make use of this module."""
homepage = "https://metacpan.org/pod/IO::Prompt"
url = "https://cpan.metacpan.org/authors/id/D/DC/DCONWAY/IO-Prompt-0.997004.tar.gz"
version('0.997004', sha256='f17bb305ee6ac8b5b203e6d826eb940c4f3f6d6f4bfe719c3b3a225f46f58615')
depends_on('perl-module-build', type='build')
depends_on('perl-term-readkey', type=('build', 'run'))
depends_on('perl-want', type=('build', 'run'))

View File

@ -0,0 +1,26 @@
# 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 *
class PerlIoStringy(PerlPackage):
"""This toolkit primarily provides modules for performing both traditional
and object-oriented i/o) on things other than normal filehandles; in
particular, IO::Scalar, IO::ScalarArray, and IO::Lines.
In the more-traditional IO::Handle front, we have IO::AtomicFile which may
be used to painlessly create files which are updated atomically.
And in the "this-may-prove-useful" corner, we have IO::Wrap, whose exported
wraphandle() function will clothe anything that's not a blessed object in
an IO::Handle-like wrapper... so you can just use OO syntax and stop
worrying about whether your function's caller handed you a string, a
globref, or a FileHandle."""
homepage = "https://metacpan.org/pod/IO::Stringy"
url = "https://cpan.metacpan.org/authors/id/D/DS/DSKOLL/IO-stringy-2.111.tar.gz"
version('2.111', sha256='8c67fd6608c3c4e74f7324f1404a856c331dbf48d9deda6aaa8296ea41bf199d')

View File

@ -0,0 +1,17 @@
# 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 *
class PerlIoTty(PerlPackage):
"""IO::Tty is used internally by IO::Pty to create a pseudo-tty. You
wouldn't want to use it directly except to import constants, use IO::Pty.
For a list of importable constants, see IO::Tty::Constant."""
homepage = "https://metacpan.org/pod/IO::Tty"
url = "https://cpan.metacpan.org/authors/id/T/TO/TODDR/IO-Tty-1.12.tar.gz"
version('1.13_01', sha256='89798eba7c31d9c169ef2f38ff49490aa769b1d9a68033de365595cfaf9cc258')

View File

@ -0,0 +1,21 @@
# 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 *
class PerlIpcRun(PerlPackage):
"""IPC::Run allows you to run and interact with child processes using
files, pipes, and pseudo-ttys. Both system()-style and scripted usages are
supported and may be mixed. Likewise, functional and OO API styles are both
supported and may be mixed."""
homepage = "https://metacpan.org/pod/IPC::Run"
url = "https://cpan.metacpan.org/authors/id/T/TO/TODDR/IPC-Run-20180523.0.tar.gz"
version('20180523.0', sha256='3850d7edf8a4671391c6e99bb770698e1c45da55b323b31c76310913349b6c2f')
depends_on('perl-io-tty', type=('build', 'run'))
depends_on('perl-readonly', type='build')

View File

@ -0,0 +1,17 @@
# 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 *
class PerlLibxmlPerl(PerlPackage):
"""libxml-perl is a collection of smaller Perl modules, scripts, and
documents for working with XML in Perl. libxml-perl software works in
combination with XML::Parser, PerlSAX, XML::DOM, XML::Grove and others."""
homepage = "https://metacpan.org/release/libxml-perl"
url = "https://cpan.metacpan.org/authors/id/K/KM/KMACLEOD/libxml-perl-0.08.tar.gz"
version('0.08', sha256='4571059b7b5d48b7ce52b01389e95d798bf5cf2020523c153ff27b498153c9cb')

View File

@ -0,0 +1,18 @@
# 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 *
class PerlListMoreutilsXs(PerlPackage):
"""List::MoreUtils::XS is a backend for List::MoreUtils. Even if it's
possible (because of user wishes) to have it practically independent from
List::MoreUtils, it technically depend on List::MoreUtils. Since it's only
a backend, the API is not public and can change without any warning."""
homepage = "https://metacpan.org/pod/List::MoreUtils::XS"
url = "https://cpan.metacpan.org/authors/id/R/RE/REHSACK/List-MoreUtils-XS-0.428.tar.gz"
version('0.428', sha256='9d9fe621429dfe7cf2eb1299c192699ddebf060953e5ebdc1b4e293c6d6dd62d')

View File

@ -0,0 +1,17 @@
# 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 *
class PerlMailtools(PerlPackage):
"""Perl module for handling mail"""
homepage = "https://metacpan.org/release/MailTools"
url = "https://cpan.metacpan.org/authors/id/M/MA/MARKOV/MailTools-2.21.tar.gz"
version('2.21', sha256='4ad9bd6826b6f03a2727332466b1b7d29890c8d99a32b4b3b0a8d926ee1a44cb')
depends_on('perl-timedate', type=('build', 'run'))

View File

@ -0,0 +1,19 @@
# 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 *
class PerlPathTiny(PerlPackage):
"""This module provides a small, fast utility for working with file paths.
It is friendlier to use than File::Spec and provides easy access to
functions from several other core file handling modules. It aims to be
smaller and faster than many alternatives on CPAN, while helping people do
many common things in consistent and less error-prone ways."""
homepage = "https://metacpan.org/pod/Path::Tiny"
url = "https://cpan.metacpan.org/authors/id/D/DA/DAGOLDEN/Path-Tiny-0.108.tar.gz"
version('0.108', sha256='3c49482be2b3eb7ddd7e73a5b90cff648393f5d5de334ff126ce7a3632723ff5')

View File

@ -0,0 +1,35 @@
# 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 *
class PerlPerlUnsafeSignals(PerlPackage):
"""Quoting perl581delta:
In Perl 5.8.0 the so-called "safe signals" were introduced. This means
that Perl no longer handles signals immediately but instead "between
opcodes", when it is safe to do so. The earlier immediate handling
easily could corrupt the internal state of Perl, resulting in
mysterious crashes.
It's possible since perl 5.8.1 to globally disable this feature by
using the PERL_SIGNALS environment variables (as specified in
"PERL_SIGNALS" in perlrun); but there's no way to disable it locally,
for a short period of time. That's however something you might want to
do, if, for example, your Perl program calls a C routine that will
potentially run for a long time and for which you want to set a
timeout.
This module therefore allows you to define UNSAFE_SIGNALS blocks in
which signals will be handled "unsafely".
Note that, no matter how short you make the unsafe block, it will still
be unsafe. Use with caution."""
homepage = "https://metacpan.org/pod/Perl::Unsafe::Signals"
url = "https://cpan.metacpan.org/authors/id/R/RG/RGARCIA/Perl-Unsafe-Signals-0.03.tar.gz"
version('0.03', sha256='d311ae7d73e8d0c2346dfacb82aa952322e70cd928b09d502d739e60e35f829d')

View File

@ -0,0 +1,15 @@
# 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 *
class PerlSetScalar(PerlPackage):
"""Set::Scalar - basic set operations"""
homepage = "https://metacpan.org/pod/Set::Scalar"
url = "https://cpan.metacpan.org/authors/id/D/DA/DAVIDO/Set-Scalar-1.29.tar.gz"
version('1.29', sha256='a3dc1526f3dde72d3c64ea00007b86ce608cdcd93567cf6e6e42dc10fdc4511d')

View File

@ -0,0 +1,28 @@
# 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 *
class PerlSysSigaction(PerlPackage):
"""Prior to version 5.8.0 perl implemented 'unsafe' signal handling. The
reason it is consider unsafe, is that there is a risk that a signal will
arrive, and be handled while perl is changing internal data structures.
This can result in all kinds of subtle and not so subtle problems. For this
reason it has always been recommended that one do as little as possible in
a signal handler, and only variables that already exist be manipulated.
Perl 5.8.0 and later versions implements 'safe' signal handling on
platforms which support the POSIX sigaction() function. This is
accomplished by having perl note that a signal has arrived, but deferring
the execution of the signal handler until such time as it is safe to do so.
Unfortunately these changes can break some existing scripts, if they
depended on a system routine being interrupted by the signal's arrival. The
perl 5.8.0 implementation was modified further in version 5.8.2"""
homepage = "https://metacpan.org/pod/Sys::SigAction"
url = "https://cpan.metacpan.org/authors/id/L/LB/LBAXTER/Sys-SigAction-0.23.tar.gz"
version('0.23', sha256='c4ef6c9345534031fcbbe2adc347fc7194d47afc945e7a44fac7e9563095d353')

View File

@ -18,4 +18,5 @@ class PerlTermReadkey(PerlPackage):
homepage = "http://search.cpan.org/perldoc/Term::ReadKey" homepage = "http://search.cpan.org/perldoc/Term::ReadKey"
url = "http://www.cpan.org/authors/id/J/JS/JSTOWE/TermReadKey-2.37.tar.gz" url = "http://www.cpan.org/authors/id/J/JS/JSTOWE/TermReadKey-2.37.tar.gz"
version('2.38', sha256='5a645878dc570ac33661581fbb090ff24ebce17d43ea53fd22e105a856a47290')
version('2.37', 'e8ea15c16333ac4f8d146d702e83cc0c') version('2.37', 'e8ea15c16333ac4f8d146d702e83cc0c')

View File

@ -0,0 +1,17 @@
# 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 *
class PerlTimedate(PerlPackage):
"""The parser contained here will only parse absolute dates, if you want a
date parser that can parse relative dates then take a look at the Time
modules by David Muir on CPAN."""
homepage = "https://metacpan.org/release/TimeDate"
url = "https://cpan.metacpan.org/authors/id/G/GB/GBARR/TimeDate-2.30.tar.gz"
version('2.30', sha256='75bd254871cb5853a6aa0403ac0be270cdd75c9d1b6639f18ecba63c15298e86')

View File

@ -0,0 +1,19 @@
# 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 *
class PerlXmlDomXpath(PerlPackage):
"""XML::DOM::XPath allows you to use XML::XPath methods to query a DOM.
This is often much easier than relying only on getElementsByTagName."""
homepage = "https://metacpan.org/pod/XML::DOM::XPath"
url = "https://cpan.metacpan.org/authors/id/M/MI/MIROD/XML-DOM-XPath-0.14.tar.gz"
version('0.14', sha256='0173a74a515211997a3117a47e7b9ea43594a04b865b69da5a71c0886fa829ea')
depends_on('perl-xml-dom', type=('build', 'run'))
depends_on('perl-xml-xpathengine', type=('build', 'run'))

View File

@ -0,0 +1,22 @@
# 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 *
class PerlXmlDom(PerlPackage):
"""This module extends the XML::Parser module by Clark Cooper. The
XML::Parser module is built on top of XML::Parser::Expat, which is a lower
level interface to James Clark's expat library."""
homepage = "https://metacpan.org/pod/XML::DOM"
url = "https://cpan.metacpan.org/authors/id/T/TJ/TJMATHER/XML-DOM-1.46.tar.gz"
version('1.46', sha256='8ba24b0b459b01d6c5e5b0408829c7d5dfe47ff79b3548c813759048099b175e')
depends_on('perl-xml-parser', type=('build', 'run'))
depends_on('perl-xml-regexp', type=('build', 'run'))
depends_on('perl-libwww-perl', type=('build', 'run'))
depends_on('perl-libxml-perl', type=('build', 'run'))

View File

@ -0,0 +1,19 @@
# 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 *
class PerlXmlFilterBuffertext(PerlPackage):
"""This is a very simple filter. One common cause of grief (and programmer
error) is that XML parsers aren't required to provide character events in
one chunk. They can, but are not forced to, and most don't. This filter
does the trivial but oft-repeated task of putting all characters into a
single event."""
homepage = "https://metacpan.org/pod/XML::Filter::BufferText"
url = "https://cpan.metacpan.org/authors/id/R/RB/RBERJON/XML-Filter-BufferText-1.01.tar.gz"
version('1.01', sha256='8fd2126d3beec554df852919f4739e689202cbba6a17506e9b66ea165841a75c')

View File

@ -0,0 +1,26 @@
# 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 *
class PerlXmlLibxml(PerlPackage):
"""This module is an interface to libxml2, providing XML and HTML parsers
with DOM, SAX and XMLReader interfaces, a large subset of DOM Layer 3
interface and a XML::XPath-like interface to XPath API of libxml2. The
module is split into several packages which are not described in this
section; unless stated otherwise, you only need to use XML::LibXML; in your
programs."""
homepage = "https://metacpan.org/pod/XML::LibXML"
url = "https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/XML-LibXML-2.0201.tar.gz"
version('2.0201', sha256='e008700732502b3f1f0890696ec6e2dc70abf526cd710efd9ab7675cae199bc2')
depends_on('libxml2')
depends_on('perl-xml-namespacesupport', type=('build', 'run'))
depends_on('perl-xml-sax', type=('build', 'run'))
depends_on('perl-xml-sax-base', type=('build', 'run'))
depends_on('perl-alien-libxml2', type='build')

View File

@ -0,0 +1,17 @@
# 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 *
class PerlXmlNamespacesupport(PerlPackage):
"""This module offers a simple to process namespaced XML names (unames)
from within any application that may need them. It also helps maintain a
prefix to namespace URI map, and provides a number of basic checks."""
homepage = "https://metacpan.org/pod/XML::NamespaceSupport"
url = "https://cpan.metacpan.org/authors/id/P/PE/PERIGRIN/XML-NamespaceSupport-1.12.tar.gz"
version('1.12_9', sha256='2e84a057f0a8c845a612d212742cb94fca4fc8a433150b5721bd448f77d1e4a9')

View File

@ -0,0 +1,18 @@
# 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 *
class PerlXmlQuote(PerlPackage):
"""This module provides functions to quote/dequote strings in "xml"-way.
All functions are written in XS and are very fast; they correctly process
utf8, tied, overloaded variables and all the rest of perl "magic"."""
homepage = "https://metacpan.org/pod/XML::Quote"
url = "https://cpan.metacpan.org/authors/id/G/GD/GDSL/XML-Quote-1.02.tar.gz"
version('1.02', sha256='4705b86a8dcc002bffc6ff154ec5c55f0bfb6e99a3f744d1e77ae6541c6af228')

View File

@ -0,0 +1,18 @@
# 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 *
class PerlXmlRegexp(PerlPackage):
"""This package contains regular expressions for the following XML tokens:
BaseChar, Ideographic, Letter, Digit, Extender, CombiningChar,
NameChar, EntityRef, CharRef, Reference, Name, NmToken, and
AttValue."""
homepage = "https://metacpan.org/pod/XML::RegExp"
url = "https://cpan.metacpan.org/authors/id/T/TJ/TJMATHER/XML-RegExp-0.04.tar.gz"
version('0.04', sha256='df1990096036085c8e2d45904fe180f82bfed40f1a7e05243f334ea10090fc54')

View File

@ -0,0 +1,19 @@
# 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 *
class PerlXmlSaxBase(PerlPackage):
"""This module has a very simple task - to be a base class for PerlSAX
drivers and filters. It's default behaviour is to pass the input directly
to the output unchanged. It can be useful to use this module as a base
class so you don't have to, for example, implement the characters()
callback."""
homepage = "https://metacpan.org/pod/XML::SAX::Base"
url = "https://cpan.metacpan.org/authors/id/G/GR/GRANTM/XML-SAX-Base-1.09.tar.gz"
version('1.09', sha256='66cb355ba4ef47c10ca738bd35999723644386ac853abbeb5132841f5e8a2ad0')

View File

@ -0,0 +1,22 @@
# 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 *
class PerlXmlSaxWriter(PerlPackage):
"""A new XML Writer was needed to match the SAX2 effort because quite
naturally no existing writer understood SAX2. My first intention had been
to start patching XML::Handler::YAWriter as it had previously been my
favourite writer in the SAX1 world."""
homepage = "https://metacpan.org/pod/XML::SAX::Writer"
url = "https://cpan.metacpan.org/authors/id/P/PE/PERIGRIN/XML-SAX-Writer-0.57.tar.gz"
version('0.57', sha256='3d61d07ef43b0126f5b4de4f415a256fa859fa88dc4fdabaad70b7be7c682cf0')
depends_on('perl-xml-filter-buffertext', type=('build', 'run'))
depends_on('perl-xml-namespacesupport', type=('build', 'run'))
depends_on('perl-xml-sax-base', type=('build', 'run'))

View File

@ -0,0 +1,20 @@
# 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 *
class PerlXmlSax(PerlPackage):
"""XML::SAX is a SAX parser access API for Perl. It includes classes and
APIs required for implementing SAX drivers, along with a factory class for
returning any SAX parser installed on the user's system."""
homepage = "https://metacpan.org/pod/XML::SAX"
url = "https://cpan.metacpan.org/authors/id/G/GR/GRANTM/XML-SAX-1.02.tar.gz"
version('1.02', sha256='4506c387043aa6a77b455f00f57409f3720aa7e553495ab2535263b4ed1ea12a')
depends_on('perl-xml-namespacesupport', type=('build', 'run'))
depends_on('perl-xml-sax-base', type=('build', 'run'))

View File

@ -0,0 +1,27 @@
--- a/Makefile.PL 2016-06-21 05:50:27.000000000 -0500
+++ b/Makefile.PL 2019-09-16 10:51:28.436352022 -0500
@@ -15,23 +15,7 @@
my $opt= $ARGV[0] ? $ARGV[0] : '';
-if( $opt eq "-n")
- { @programs=(); }
-elsif( $opt eq "-y")
- { @programs= map { $_->[0] } @prompts; }
-elsif( $opt eq "-d")
- { @programs= map { $_->[0] if( $_->[1] eq 'y') } @prompts; }
-elsif( $ENV{AUTOMATED_TESTING} || $ENV{NONINTERACTIVE_TESTING})
- { @programs=(); }
-else
- { print "run 'perl Makefile.PL -y' to install all tools,\n",
- " 'perl Makefile.PL -n' to skip installation\n";
- foreach my $prompt (@prompts)
- { my ($program, $default, $description) = @$prompt;
- if( prompt("Do you want to install '$program' ($description)?", $default) =~ /^y/i)
- { push(@programs, $program); }
- }
- }
+@programs= map { $_->[0] } @prompts;
MyWriteMakefile(
META_MERGE => {

View File

@ -0,0 +1,32 @@
# 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 *
class PerlXmlTwig(PerlPackage):
"""This module provides a way to process XML documents. It is build on top
of XML::Parser.
The module offers a tree interface to the document, while allowing you to
output the parts of it that have been completely processed.
It allows minimal resource (CPU and memory) usage by building the tree only
for the parts of the documents that need actual processing, through the use
of the twig_roots and twig_print_outside_roots options. The finish and
finish_print methods also help to increase performances.
XML::Twig tries to make simple things easy so it tries its best to takes
care of a lot of the (usually) annoying (but sometimes necessary) features
that come with XML and XML::Parser."""
homepage = "https://metacpan.org/pod/XML::Twig"
url = "https://cpan.metacpan.org/authors/id/M/MI/MIROD/XML-Twig-3.52.tar.gz"
version('3.52', sha256='fef75826c24f2b877d0a0d2645212fc4fb9756ed4d2711614ac15c497e8680ad')
depends_on('perl-xml-parser', type=('build', 'run'))
patch('non_interactive.patch')

View File

@ -0,0 +1,27 @@
# 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 *
class PerlXmlWriter(PerlPackage):
"""XML::Writer is a helper module for Perl programs that write an XML
document. The module handles all escaping for attribute values and
character data and constructs different types of markup, such as tags,
comments, and processing instructions.
By default, the module performs several well-formedness checks to catch
errors during output. This behaviour can be extremely useful during
development and debugging, but it can be turned off for production-grade
code.
The module can operate either in regular mode in or Namespace processing
mode. In Namespace mode, the module will generate Namespace Declarations
itself, and will perform additional checks on the output."""
homepage = "https://metacpan.org/pod/XML::Writer"
url = "https://cpan.metacpan.org/authors/id/J/JO/JOSEPHW/XML-Writer-0.625.tar.gz"
version('0.625', sha256='e080522c6ce050397af482665f3965a93c5d16f5e81d93f6e2fe98084ed15fbe')

View File

@ -0,0 +1,16 @@
# 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 *
class PerlXmlXpathengine(PerlPackage):
"""This module provides an XPath engine, that can be re-used by other
module/classes that implement trees."""
homepage = "https://metacpan.org/pod/XML::XPathEngine"
url = "https://cpan.metacpan.org/authors/id/M/MI/MIROD/XML-XPathEngine-0.14.tar.gz"
version('0.14', sha256='d2fe7bcbbd0beba1444f4a733401e7b8aa5282fad4266d42735dd74582b2e264')