summaryrefslogtreecommitdiff
path: root/var
diff options
context:
space:
mode:
authorpabloaledo <112545720+pabloaledo@users.noreply.github.com>2023-08-09 22:24:34 +0200
committerGitHub <noreply@github.com>2023-08-09 13:24:34 -0700
commitf5888d8127ed40909049627901b58d37626134a1 (patch)
treef9fa77637802ea15f6603ff4573f9711c5416cf2 /var
parent77c838ca932d89e472308d0347fab95dac3cb854 (diff)
downloadspack-f5888d8127ed40909049627901b58d37626134a1.tar.gz
spack-f5888d8127ed40909049627901b58d37626134a1.tar.bz2
spack-f5888d8127ed40909049627901b58d37626134a1.tar.xz
spack-f5888d8127ed40909049627901b58d37626134a1.zip
picard: add variant with jvm arguments (#39204)
* picard: add variant with jvm arguments * fix variant and update wrapper script --------- Signed-off-by: Pablo <pablo.aledo@seqera.io>
Diffstat (limited to 'var')
-rw-r--r--var/spack/repos/builtin/packages/picard/package.py9
-rw-r--r--var/spack/repos/builtin/packages/picard/picard_with_parameters.sh68
2 files changed, 76 insertions, 1 deletions
diff --git a/var/spack/repos/builtin/packages/picard/package.py b/var/spack/repos/builtin/packages/picard/package.py
index 923c64b357..f9e2acb6fa 100644
--- a/var/spack/repos/builtin/packages/picard/package.py
+++ b/var/spack/repos/builtin/packages/picard/package.py
@@ -156,6 +156,8 @@ class Picard(Package):
)
version("1.140", sha256="0d27287217413db6b846284c617d502eaa578662dcb054a7017083eab9c54438")
+ variant("parameters", default=False, description="get java parameters in the adapter script")
+
depends_on("java@17:", type="run", when="@3.0.0:")
depends_on("java@8:", type="run", when="@:2.27.5")
@@ -169,7 +171,12 @@ class Picard(Package):
# Set up a helper script to call java on the jar file,
# explicitly codes the path for java and the jar file.
- script_sh = join_path(os.path.dirname(__file__), "picard.sh")
+
+ script_sh = join_path(
+ os.path.dirname(__file__),
+ "picard_with_parameters.sh" if "+parameters" in spec else "picard.sh",
+ )
+
script = prefix.bin.picard
install(script_sh, script)
set_executable(script)
diff --git a/var/spack/repos/builtin/packages/picard/picard_with_parameters.sh b/var/spack/repos/builtin/packages/picard/picard_with_parameters.sh
new file mode 100644
index 0000000000..98a32a9f60
--- /dev/null
+++ b/var/spack/repos/builtin/packages/picard/picard_with_parameters.sh
@@ -0,0 +1,68 @@
+#!/bin/bash
+# Picard executable shell script
+set -eu -o pipefail
+
+export LC_ALL=en_US.UTF-8
+
+# Find original directory of bash script, resolving symlinks
+# http://stackoverflow.com/questions/59895/can-a-bash-script-tell-what-directory-its-stored-in/246128#246128
+SOURCE="${BASH_SOURCE[0]}"
+while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
+ DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+ SOURCE="$(readlink "$SOURCE")"
+ [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
+done
+DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
+
+JAR_DIR=$DIR
+ENV_PREFIX="$(dirname $(dirname $DIR))"
+# Use Java installed with Anaconda to ensure correct version
+java="$ENV_PREFIX/bin/java"
+
+# if JAVA_HOME is set (non-empty), use it. Otherwise keep "java"
+if [ -n "${JAVA_HOME:=}" ]; then
+ if [ -e "$JAVA_HOME/bin/java" ]; then
+ java="$JAVA_HOME/bin/java"
+ fi
+fi
+
+# extract memory and system property Java arguments from the list of provided arguments
+# http://java.dzone.com/articles/better-java-shell-script
+default_jvm_mem_opts="-Xms512m -Xmx2g"
+jvm_mem_opts=""
+jvm_prop_opts=""
+pass_args=""
+for arg in "$@"; do
+ case $arg in
+ '-D'*)
+ jvm_prop_opts="$jvm_prop_opts $arg"
+ ;;
+ '-XX'*)
+ jvm_prop_opts="$jvm_prop_opts $arg"
+ ;;
+ '-Xm'*)
+ jvm_mem_opts="$jvm_mem_opts $arg"
+ ;;
+ *)
+ if [[ ${pass_args} == '' ]] #needed to avoid preceeding space on first arg e.g. ' MarkDuplicates'
+ then
+ pass_args="$arg"
+ else
+ pass_args="$pass_args \"$arg\"" #quotes later arguments to avoid problem with ()s in MarkDuplicates regex arg
+ fi
+ ;;
+ esac
+done
+
+if [ "$jvm_mem_opts" == "" ] && [ -z ${_JAVA_OPTIONS+x} ]; then
+ jvm_mem_opts="$default_jvm_mem_opts"
+fi
+
+pass_arr=($pass_args)
+if [[ ${pass_arr[0]:=} == org* ]]
+then
+ eval "$java" $jvm_mem_opts $jvm_prop_opts -cp "$JAR_DIR/picard.jar" $pass_args
+else
+ eval "$java" $jvm_mem_opts $jvm_prop_opts -jar "$JAR_DIR/picard.jar" $pass_args
+fi
+exit