Feature/add package for fastqc (#1573)
* Add package for fastqc This tool is a java mess. Their Way To Do It is to just copy the entire tree into it's final resting place, make the perl script at the top level executable and take it from there. Yuck. This package assumes that `set_executable` actually sets all the user bits. If that change doesn't go in, then something equivalent needs to be done. * Use chmod to make fastqc executable I haven't gotten any feedback on changing set-executable, so switch to using chmod (from the cuda package). * Flake8 cleanup * Install files neatly, don't just copy top level of dir Rather than blindly copying everything in the distribution, carefully put the necessary bits into reasonable places. Neatness counts, etc... This requires patching the `fastqc` perl script, so this commit adds a patch file. * Additional pep8 cleanup * Let dependency handle adding jdk to PATH * Flake8 cleanup * Ensure that java is on PATH I thought that the run dependency on the jdk would put java on my PATH, but it does not appear to work. For now, do it by hand.
This commit is contained in:
parent
68e9a2ed8d
commit
6e1b3f621d
2 changed files with 90 additions and 0 deletions
30
var/spack/repos/builtin/packages/fastqc/fastqc.patch
Normal file
30
var/spack/repos/builtin/packages/fastqc/fastqc.patch
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
--- fastqc.orig 2015-11-20 09:25:00.000000000 +0000
|
||||||
|
+++ fastqc 2016-10-24 19:06:16.734000000 +0000
|
||||||
|
@@ -38,12 +38,21 @@
|
||||||
|
$delimiter = ';';
|
||||||
|
}
|
||||||
|
|
||||||
|
-if ($ENV{CLASSPATH}) {
|
||||||
|
- $ENV{CLASSPATH} .= "$delimiter$RealBin$delimiter$RealBin/sam-1.103.jar$delimiter$RealBin/jbzip2-0.9.jar$delimiter$RealBin/cisd-jhdf5.jar";
|
||||||
|
-}
|
||||||
|
-else {
|
||||||
|
- $ENV{CLASSPATH} = "$RealBin$delimiter$RealBin/sam-1.103.jar$delimiter$RealBin/jbzip2-0.9.jar$delimiter$RealBin/cisd-jhdf5.jar";
|
||||||
|
-}
|
||||||
|
+# The lib dir is $RealBin/../lib
|
||||||
|
+# start with list of jars we need and prefix them with the lib dir
|
||||||
|
+# then stick CLASSPATH onto the front (empty or otherwise...)
|
||||||
|
+# then filter out anything that's empty (perhaps CLASSPATH...)
|
||||||
|
+# then join all the remainings bits with the delimiter.
|
||||||
|
+use File::Basename;
|
||||||
|
+use File::Spec::Functions;
|
||||||
|
+my $_lib = catfile(dirname($RealBin), 'lib');
|
||||||
|
+$ENV{CLASSPATH} =
|
||||||
|
+ join($delimiter,
|
||||||
|
+ grep {$_}
|
||||||
|
+ ($ENV{CLASSPATH},
|
||||||
|
+ $_lib,
|
||||||
|
+ map {"$_lib/$_"}
|
||||||
|
+ qw(sam-1.103.jar jbzip2-0.9.jar cisd-jhdf5.jar)));
|
||||||
|
|
||||||
|
my @java_args;
|
||||||
|
my @files;
|
60
var/spack/repos/builtin/packages/fastqc/package.py
Normal file
60
var/spack/repos/builtin/packages/fastqc/package.py
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
##############################################################################
|
||||||
|
# Copyright (c) 2013-2016, 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/llnl/spack
|
||||||
|
# Please also see the LICENSE file 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 *
|
||||||
|
from distutils.dir_util import copy_tree, mkpath
|
||||||
|
from distutils.file_util import copy_file
|
||||||
|
|
||||||
|
|
||||||
|
class Fastqc(Package):
|
||||||
|
"""A quality control tool for high throughput sequence data."""
|
||||||
|
|
||||||
|
homepage = "http://www.bioinformatics.babraham.ac.uk/projects/fastqc/"
|
||||||
|
url = "http://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v0.11.5.zip"
|
||||||
|
|
||||||
|
version('0.11.5', '3524f101c0ab0bae77c7595983170a76')
|
||||||
|
|
||||||
|
depends_on('jdk', type='run')
|
||||||
|
depends_on('perl') # for fastqc "script", any perl will do
|
||||||
|
|
||||||
|
patch('fastqc.patch', level=0)
|
||||||
|
|
||||||
|
def install(self, spec, prefix):
|
||||||
|
mkpath(self.prefix.bin)
|
||||||
|
mkpath(self.prefix.lib)
|
||||||
|
copy_file('fastqc', self.prefix.bin)
|
||||||
|
for j in ['cisd-jhdf5.jar', 'jbzip2-0.9.jar', 'sam-1.103.jar']:
|
||||||
|
copy_file(j, self.prefix.lib)
|
||||||
|
for d in ['Configuration', 'net', 'org', 'Templates', 'uk']:
|
||||||
|
copy_tree(d, join_path(self.prefix.lib, d))
|
||||||
|
chmod = which('chmod')
|
||||||
|
chmod('+x', join_path(self.prefix.bin, 'fastqc'))
|
||||||
|
|
||||||
|
# In theory the 'run' dependency on 'jdk' above should take
|
||||||
|
# care of this for me. In practice, it does not.
|
||||||
|
def setup_environment(self, spack_env, env):
|
||||||
|
"""Add <prefix> to the path; the package has a script at the
|
||||||
|
top level.
|
||||||
|
"""
|
||||||
|
env.prepend_path('PATH', join_path(self.spec['jdk'].prefix, 'bin'))
|
Loading…
Reference in a new issue