Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add EGA-Cryptor #51108

Merged
merged 23 commits into from
Nov 21, 2024
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
57f9b3f
Add EGA-Cryptor (https://ega-archive.org/submission/data/file-prepara…
obaeza16 Oct 2, 2024
7abc911
Merge branch 'master' into ega-crypto
obaeza16 Oct 2, 2024
357a7e3
Change based on comments by coderabbitai
obaeza16 Oct 2, 2024
0697b42
Merge branch 'master' into ega-crypto
obaeza16 Oct 3, 2024
fc88c82
Changes proposed by coderabbit, try to fix nobuild in azure
obaeza16 Oct 3, 2024
70e2c62
Changes proposed by coderabbit
obaeza16 Oct 3, 2024
07a173b
Merge branch 'master' into ega-crypto
obaeza16 Oct 15, 2024
80d1766
Add LICENSE file, some small changes proposed by coderabbit
obaeza16 Oct 15, 2024
0601ea6
Changes to build.sh, removed package build num
obaeza16 Oct 15, 2024
f588054
Recipe builds correctly
obaeza16 Nov 19, 2024
d3585c5
Merge branch 'master' into ega-crypto
obaeza16 Nov 19, 2024
adf3102
Add test for version control
obaeza16 Nov 19, 2024
e5d25de
Fix lint
obaeza16 Nov 19, 2024
c4f2173
Coderabbit suggestions
obaeza16 Nov 19, 2024
22cf098
Minor changes proposed by coderabbit
obaeza16 Nov 19, 2024
e6598cb
Merge branch 'master' into ega-crypto
obaeza16 Nov 19, 2024
956f7ac
Minor changes
obaeza16 Nov 19, 2024
218f5db
Merge branch 'master' into ega-crypto
obaeza16 Nov 19, 2024
48800d8
Silence tests and typo fixing
obaeza16 Nov 20, 2024
67f14ff
Merge branch 'master' into ega-crypto
obaeza16 Nov 20, 2024
99551c4
Merge branch 'ega-crypto' of github.com:obaeza16/bioconda-recipes int…
obaeza16 Nov 20, 2024
f0ba810
Merge branch 'master' into ega-crypto
obaeza16 Nov 20, 2024
aea47d9
Merge branch 'master' into ega-crypto
obaeza16 Nov 21, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions recipes/ega-cryptor/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/bin/bash
set -e -x
set -eu -o pipefail

outdir=$PREFIX/share/$PKG_NAME-$PKG_VERSION-$PKG_BUILDNUM
mkdir -p $outdir
ln -s $PREFIX/share/$PKG_NAME-$PKG_VERSION-$PKG_BUILDNUM $PREFIX/share/$PKG_NAME
mkdir -p $PREFIX/bin
cp -Rf * $outdir/
mv $outdir/ega-cryptor-$PKG_VERSION.jar $outdir/ega-cryptor.jar
cp -f $RECIPE_DIR/ega-cryptor.py $outdir/ega-cryptor
ln -sf $outdir/ega-cryptor $PREFIX/bin
chmod 0755 "${PREFIX}/bin/ega-cryptor"

102 changes: 102 additions & 0 deletions recipes/ega-cryptor/ega-cryptor.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
#!/usr/bin/env python
#
# Wrapper script for Java Conda packages that ensures that the java runtime
# is invoked with the right options. Adapted from the bash script (http://stackoverflow.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in/246128#246128).

#
# Program Parameters
#
import os
import subprocess
import sys
import shutil
from os import access
from os import getenv
from os import X_OK
jar_file = 'ega-cryptor-2.0.0.jar'

default_jvm_mem_opts = ['-Xms512m', '-Xmx1g']

# !!! End of parameter section. No user-serviceable code below this line !!!


def real_dirname(path):
"""Return the symlink-resolved, canonicalized directory-portion of path."""
return os.path.dirname(os.path.realpath(path))


def java_executable():
"""Return the executable name of the Java interpreter."""
java_home = getenv('JAVA_HOME')
java_bin = os.path.join('bin', 'java')

if java_home and access(os.path.join(java_home, java_bin), X_OK):
return os.path.join(java_home, java_bin)
else:
return 'java'


def jvm_opts(argv):
"""Construct list of Java arguments based on our argument list.

The argument list passed in argv must not include the script name.
The return value is a 3-tuple lists of strings of the form:
(memory_options, prop_options, passthrough_options)
"""
mem_opts = []
prop_opts = []
pass_args = []
exec_dir = None

for arg in argv:
if arg.startswith('-D'):
prop_opts.append(arg)
elif arg.startswith('-XX'):
prop_opts.append(arg)
elif arg.startswith('-Xm'):
mem_opts.append(arg)
elif arg.startswith('--exec_dir='):
exec_dir = arg.split('=')[1].strip('"').strip("'")
if not os.path.exists(exec_dir):
shutil.copytree(real_dirname(sys.argv[0]), exec_dir, symlinks=False, ignore=None)
else:
pass_args.append(arg)

# In the original shell script the test coded below read:
# if [ "$jvm_mem_opts" == "" ] && [ -z ${_JAVA_OPTIONS+x} ]
# To reproduce the behaviour of the above shell code fragment
# it is important to explictly check for equality with None
# in the second condition, so a null envar value counts as True!

if mem_opts == [] and getenv('_JAVA_OPTIONS') is None:
mem_opts = default_jvm_mem_opts

return (mem_opts, prop_opts, pass_args, exec_dir)


def main():
java = java_executable()
"""
PeptideShaker updates files relative to the path of the jar file.
In a multiuser setting, the option --exec_dir="exec_dir"
can be used as the location for the peptide-shaker distribution.
If the exec_dir dies not exist,
we copy the jar file, lib, and resources to the exec_dir directory.
"""
(mem_opts, prop_opts, pass_args, exec_dir) = jvm_opts(sys.argv[1:])
jar_dir = exec_dir if exec_dir else real_dirname(sys.argv[0])

if pass_args != [] and pass_args[0].startswith('eu'):
jar_arg = '-cp'
else:
jar_arg = '-jar'

jar_path = os.path.join(jar_dir, jar_file)

java_args = [java] + mem_opts + prop_opts + [jar_arg] + [jar_path] + pass_args

sys.exit(subprocess.call(java_args))


if __name__ == '__main__':
main()
36 changes: 36 additions & 0 deletions recipes/ega-cryptor/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{% set version = "2.0.0" %}

package:
name: ega-cryptor
version: {{ version }}

build:
noarch: generic
number: 0
run_exports:
- {{ pin_subpackage('ega-cryptor', max_pin="2.0.0") }}

source:
url: https://ega-archive.org/assets/files/EgaCryptor.zip
sha256: 402d9d1d5de8beea416d3e8dc8e10c3fd1e7548e4d6e29d503afe1fcbe11ff8a

requirements:
run:
- openjdk >=8
- python

test:
commands:
- ega-cryptor -h

about:
home: https://ega-archive.org/submission/data/file-preparation/egacryptor/
summary: EGACryptor v.2.0.0
license: unknown
description: |
The EGACryptor v.2.0.0 is a JAVA-based application which enables submitters
to produce EGA compliant encrypted files along with files for the encrypted
and unencrypted md5sum for each file to be submitted. The application will
generate an output folder that will by default mirror the directory structure
containing the original files. This output folder can subsequently be uploaded
to the EGA FTP staging area via an FTP or Aspera client.
Loading