#!/usr/bin/env bash jruby_install_build_nailgun() { __rvm_cd "${rvm_src_path}/$rvm_ruby_string/tool/nailgun" && case "$rvm_ruby_version" in 1.2*|1.3*) true ;; *) env "${rvm_configure_env[@]}" ./configure --prefix=$rvm_ruby_home ;; esac && __rvm_make "${rvm_make_flags[@]}" } jruby_install_ant() { __rvm_log_command "ant.jar" "$rvm_ruby_string - #ant jar" __rvm_ant jar || return $? [[ -f "${rvm_src_path}/$rvm_ruby_string/bin/jruby" ]] || { result=$? rvm_error "JRuby reported it was installed successfully, but RVM could not find proper installation, please check why '${rvm_src_path}/$rvm_ruby_string/bin/jruby' was not created, maybe here '$rvm_log_path/$rvm_ruby_string/ant.jar.log', also make sure to report an error here 'https://github.com/jruby/jruby/issues' about not returning non zero status in case of errors." return $result } if (( ${#rvm_configure_flags[@]} )) then __rvm_log_command "ant.jar.flags" "$rvm_ruby_string - #ant jar ${rvm_configure_flags[*]}" \ __rvm_ant jar "${rvm_configure_flags[@]}" || return $? fi __rvm_log_command "ant.cext" "$rvm_ruby_string - #ant cext" __rvm_ant cext "${rvm_configure_flags[@]}" || rvm_warn "cext is known to fail please report here: https://jira.codehaus.org/browse/JRUBY" __rvm_version_compare "$rvm_ruby_version" -ge "1.7.0" || __rvm_log_command "nailgun" "$rvm_ruby_string - #nailgun" jruby_install_build_nailgun || return $? } jruby_install_mvn_command() { __rvm_log_command "$mvn_label" "$rvm_ruby_string - #$mvn_label" "${mvn_command[@]}" || return $? } jruby_install_mvn() { \typeset -a mvn_command \typeset mvn_label mvn_command=( "${1:-mvn}" ) mvn_label="{1:-mvn}" mvn_label="${mvn_command##*/}" jruby_install_mvn_command || return $? if (( ${#rvm_configure_flags[@]} )) then mvn_command+=( "${rvm_configure_flags[@]}" ) mvn_label+="_flags" jruby_install_mvn_command || return $? fi } jruby_install_mvnw() { jruby_install_mvn "${rvm_src_path}/$rvm_ruby_string/mvnw" || return $? } jruby_install_check_java() { builtin command -v java > /dev/null || { printf "%b" "java must be installed and in PATH for JRuby." return 1 } } jruby_install_check_jruby_home() { if [[ -n "$JRUBY_HOME" ]] then printf "%b" "You have environment variable JRUBY_HOME set, please unset it before installing/using JRuby." return 2 fi } jruby_install_check_java_home() { if [[ -z "${JAVA_HOME:-}" ]] then export JAVA_HOME="$( cd "${rvm_scripts_path}/extras/java_read_properties" java ReadProperties java.home )" if [[ -n "$JAVA_HOME" && -x "$JAVA_HOME/../bin/javac" && -f "$JAVA_HOME/../lib/tools.jar" ]] then rvm_debug "Detected JAVA_HOME=$JAVA_HOME has JDK level up" JAVA_HOME="${JAVA_HOME%/*}" # cd .. fi rvm_warn "\$JAVA_HOME was empty, setting up JAVA_HOME=$JAVA_HOME, if it fails try setting JAVA_HOME to something sane and try again." fi } jruby_install() { __rvm_setup_compile_environment "${rvm_ruby_string}" || return $? jruby_install_check_java || return $? jruby_install_check_jruby_home || return $? jruby_install_check_java_home __rvm_cd "${rvm_src_path}" rvm_ruby_tag="${rvm_ruby_version}" __rvm_fetch_ruby || return $? __rvm_cd "${rvm_src_path}/$rvm_ruby_string" __rvm_apply_patches \typeset method method=$( jruby_installation_method "${rvm_ruby_string}" "${rvm_ruby_version}" ) || return $? jruby_install_$method || return $? __rvm_rm_rf "$rvm_ruby_home" && \command \mkdir -p "$rvm_ruby_home" && __rvm_log_command "install" "$rvm_ruby_string - #installing to $rvm_ruby_home" \ __rvm_cp -Rf "${rvm_src_path}/$rvm_ruby_string"/{bin,lib} "$rvm_ruby_home"/ || return $? case ${rvm_ruby_string} in jruby-head*|jruby-1.7.*) ( __rvm_cd "$rvm_ruby_home/bin/" for binary in irb ruby gem do [[ -f "${binary}" ]] || ln -fs "j${binary}" "${binary}" done ) ;; *) ( __rvm_cd "$rvm_ruby_home/bin/" for binary in jirb jruby jgem do ln -fs "$binary" "${binary#j}" done ) ;; esac chmod +x "$rvm_ruby_home/bin/jruby" __rvm_initial_gemsets_create "$rvm_ruby_home/bin/ruby" case ${rvm_ruby_string} in jruby-head*|jruby-1.7.*) binaries=() ;; *) binaries=(jrubyc jirb_swing jirb jgem rdoc ri spec autospec testrb ast generate_yaml_index.rb rake) ;; esac __rvm_post_install __rvm_fetch_ruby_cleanup }