aboutsummaryrefslogtreecommitdiffstats
path: root/community/jruby/jruby
diff options
context:
space:
mode:
authorJakub Jirutka <jakub@jirutka.cz>2016-08-17 17:43:15 +0200
committerJakub Jirutka <jakub@jirutka.cz>2016-08-17 17:44:37 +0200
commit73f1c44d18ceebd6e5a58b430adca41bb5e3fefb (patch)
tree7a2e0f5f45c26958e422394af8fb5ee3aefbdd0e /community/jruby/jruby
parent5eb15b8927fc8bed20344fa52c43d50cb1051ce6 (diff)
downloadaports-73f1c44d18ceebd6e5a58b430adca41bb5e3fefb.tar.bz2
aports-73f1c44d18ceebd6e5a58b430adca41bb5e3fefb.tar.xz
community/jruby: move from testing
Diffstat (limited to 'community/jruby/jruby')
-rw-r--r--community/jruby/jruby231
1 files changed, 231 insertions, 0 deletions
diff --git a/community/jruby/jruby b/community/jruby/jruby
new file mode 100644
index 0000000000..4b7fd77571
--- /dev/null
+++ b/community/jruby/jruby
@@ -0,0 +1,231 @@
+#!/bin/sh
+# vim: set ts=4:
+#
+# This jruby start script is rewrite of (poor) upstream's jruby.bash.
+# It's POSIX compatible, more clean, with sensible defaults for Alpine Linux
+# and without Windows, OS X and Truffle stuff. Beside that it should support
+# all the options of jruby.bash (hopefully) with the same behaviour.
+#
+# -----BEGIN HELP-----
+#
+# Environment variables:
+# CLASSPATH Additional paths to be added to the end of the Java classpath.
+# This may be overwritten by CLI argument -J-classpath or -J-cp.
+# JAVA_HOME Path to directory where is JRE/JVM installed to use specific java/jdb binary,
+# not the one on the PATH.
+# JAVA_OPTS Default options to be passed to JVM.
+# JRUBY_HOME Path to directory where JRuby is installed (default is /usr/share/java/jruby).
+# JRUBY_OPTS Default JRuby command line arguments.
+# JRUBY_SHELL Path to the system shell executable (default is /bin/sh).
+# PROFILE_ARGS Arguments for the instrumented profiler.
+#
+# Deprecated environment variables (for compatibility):
+# JAVA_MEM The -Xmx (maximum memory allocation) parameter for JVM (e.g. -Xmx128M).
+# This may be overwritten by CLI argument -J-Xmx.
+# JAVA_STACK The -Xss (stack size) parameter for JVM (default is -Xss2048k).
+# This may be overwritten by CLI argument -J-Xss.
+# JAVA_VM What JIT mode to use; -client, or -server (default is -server).
+# This may be overwritten by CLI arguments --server, --client, and --dev.
+# JRUBY_PARENT_CLASSPATH Classpath propagated from the parent JRuby process.
+#
+# All the environment variables are optional.
+# -----END HELP-----
+#
+set -eu
+
+readonly MAIN_CLASS_JRUBY='org.jruby.Main'
+readonly MAIN_CLASS_NGCLIENT='org.jruby.util.NailMain'
+readonly MAIN_CLASS_NGSERVER='org.jruby.main.NailServerMain'
+
+readonly JRUBY_HOME="${JRUBY_HOME:-"/usr/share/jruby"}"
+readonly JRUBY_CP="$JRUBY_HOME/lib/jruby.jar"
+readonly JRUBY_SHELL="${JRUBY_SHELL:-"/bin/sh"}"
+readonly NAILGUN_CMD="$JRUBY_HOME/tool/nailgun/ng"
+readonly PROFILE_ARGS="${PROFILE_ARGS:-}"
+
+
+java_stack="${JAVA_STACK:-"-Xss2048k"}"
+java_cmd="${JAVA_HOME:+"$JAVA_HOME/bin/"}java"
+
+java_opts="${JAVA_OPTS:-} ${JAVA_MEM:-} $java_stack
+ -Dorg.xerial.snappy.use.systemlib=true"
+
+# Use the same classpath propagated from parent jruby, if provided.
+classpath="${JRUBY_PARENT_CLASSPATH:-}"
+if [ -z "$classpath" ]; then
+ _excluded='jruby.jar jruby-truffle.jar jruby-complete.jar'
+
+ # Add all JARs from $JRUBY_HOME/lib to the classpath, except $_excluded.
+ classpath=$(find "$JRUBY_HOME/lib" -maxdepth 1 \
+ -name '*.jar' $(printf '! -name %s ' $_excluded) -print0 \
+ | xargs -0 printf '%s:')
+ classpath="${classpath%?}" # %? removes leading ":"
+fi
+
+extra_cp="${CLASSPATH:-}"
+java_vm="${JAVA_VM:-"-server"}"
+main_class="$MAIN_CLASS_JRUBY"
+nailgun_client='no'
+ruby_args=''
+verify_jruby='no'
+
+
+# Split out any -J argument for passing to the JVM.
+# Scanning for args is aborted by '--'.
+set -- ${JRUBY_OPTS:-} $@
+while [ $# -gt 0 ]; do
+ case "$1" in
+ # Stuff after "-J" goes to JVM.
+ -J | -J-X)
+ "$java_cmd" -help
+ printf '\n(Prepend -J in front of these options when using "jruby" command)\n'
+ exit 1
+ ;;
+ -J-classpath | -J-cp)
+ extra_cp="$2"
+ shift
+ ;;
+ -J-ea)
+ verify_jruby='yes'
+ java_opts="$java_opts ${1:2}"
+ ;;
+ -J*)
+ java_opts="$java_opts ${1:2}"
+ ;;
+ # Pass -X... and -X? search options through.
+ -X*\.\.\.|-X*\?)
+ ruby_args="$ruby_args $1"
+ ;;
+ # Match -Xa.b.c=d to translate to -Da.b.c=d as a Java option.
+ -X*)
+ val=${1:2}
+ if expr "$val" : '.*[.]' > /dev/null; then
+ java_opts="$java_opts -Djruby.$val"
+ else
+ ruby_args="$ruby_args -X$val"
+ fi
+ ;;
+ # Match switches that take an argument.
+ -C | -e | -I | -S)
+ ruby_args="$ruby_args $1 $2"
+ shift
+ ;;
+ # Match same switches with argument stuck together.
+ -e* | -I* | -S*)
+ ruby_args="$ruby_args $1"
+ ;;
+ # Run with JMX management enabled.
+ --manage)
+ java_opts="$java_opts -Dcom.sun.management.jmxremote \
+ -Djruby.management.enabled=true"
+ ;;
+ # Don't launch a GUI window, no matter what.
+ --headless)
+ java_opts="$java_opts -Djava.awt.headless=true"
+ ;;
+ # Run under JDB (debug mode).
+ --jdb)
+ java_cmd="${JAVA_HOME:+"$JAVA_HOME/bin/"}jdb"
+ java_opts="$java_opts -sourcepath $JRUBY_HOME/lib/ruby/1.9:."
+ ruby_args="$ruby_args -X+C"
+ ;;
+ --client | --server)
+ java_vm="${1#?}" # #? removes leading "-"
+ ;;
+ --dev)
+ java_vm='-client'
+ java_opts="$java_opts -XX:+TieredCompilation -XX:TieredStopAtLevel=1 \
+ -Djruby.compile.mode=OFF -Djruby.compile.invokedynamic=false"
+ ;;
+ --sample)
+ java_opts="$java_opts -Xprof"
+ ;;
+ # Start up as Nailgun server.
+ --ng-server)
+ main_class="$MAIN_CLASS_NGSERVER"
+ verify_jruby='yes'
+ ;;
+ # Use native Nailgun client to toss commands to server.
+ --ng-client | --ng)
+ nailgun_client='yes'
+ ;;
+ # Warn but ignore.
+ --1.8 | --1.9 | --2.0)
+ echo "WARNING: $1 is ignored"
+ ;;
+ -h | -help | --help)
+ "$java_cmd" -help
+ # Print help from the top of this script.
+ sed -En '/-{5}BEGIN HELP-{5}/,/-{5}END HELP-{5}/p' "$0" \
+ | sed -E "s/^# ?//; 1d;\$d;"
+ exit 0
+ ;;
+ # Abort processing on the double dash.
+ --)
+ break
+ ;;
+ # Other opts go to ruby.
+ -*)
+ ruby_args="$ruby_args $1"
+ ;;
+ # Abort processing on first non-opt arg.
+ *)
+ break
+ ;;
+ esac
+ shift
+done
+
+# Remove possible duplications of some common JVM options.
+for opt in -Xmx -Xms -Xss; do
+ val=$(expr "$java_opts" : ".*$opt\([^ \t]*\).*" ||:) # gets the later one
+ if [ -n "$val" ]; then
+ # Remove all occurrences of $opt and append the last one to the end.
+ java_opts=$(echo "$java_opts" | sed "s/$opt[^ \t]*//g")
+ java_opts="$java_opts ${opt}${val}"
+ fi
+done
+
+classpath="$classpath${extra_cp:+":$extra_cp"}"
+java_opts="$java_opts $java_vm
+ -Djruby.home=$JRUBY_HOME
+ -Djruby.lib=$JRUBY_HOME/lib
+ -Djruby.script=jruby
+ -Djruby.shell=$JRUBY_SHELL"
+
+# Append the rest of the arguments.
+ruby_args="$ruby_args $@"
+
+# Put $ruby_args back into the position arguments $1, $2, ...
+set -- $ruby_args
+
+
+if [ "$nailgun_client" = 'yes' ]; then
+ if [ ! -f "$NAILGUN_CMD" ]; then
+ echo 'ERROR: ng executable not found' 1>&2
+ exit 1
+ fi
+ exec "$NAILGUN_CMD" $MAIN_CLASS_NGCLIENT $@
+
+elif [ "$verify_jruby" = 'yes' ]; then
+ [ -n "$PROFILE_ARGS" ] && echo 'Running with instrumented profiler'
+
+ set +e
+ "$java_cmd" $PROFILE_ARGS $java_opts \
+ -classpath "$JRUBY_CP:$classpath" $main_class $@
+ exit_code=$?
+ set -e
+
+ if [ -n "$PROFILE_ARGS" ]; then
+ echo 'Profiling results:'
+ cat profile.txt
+ rm profile.txt
+ fi
+
+ exit $exit_code
+
+else
+ exec "$java_cmd" $java_opts -Xbootclasspath/a:"$JRUBY_CP" \
+ ${classpath:+"-classpath $classpath"} \
+ $main_class $@
+fi