#!/usr/bin/env bash macruby_install_extract_pkg() ( set -x \typeset __source __target __temp1 __temp1_org __temp2 __result __source="$1" __target="$2" __temp1="$( TMPDIR="${rvm_tmp_path}" mktemp -d -t rvm-tmp1.XXXXXXXXX )" __temp2="$( TMPDIR="${rvm_tmp_path}" mktemp -d -t rvm-tmp2.XXXXXXXXX )" [[ -n "${__temp1}" && -d "${__temp1}" && -n "${__temp2}" && -d "${__temp2}" ]] || return $? __result=0 __temp1_org="${__temp1}" __temp1+="/${rvm_ruby_package_name}" # required for the next command to run at all pkgutil --expand "${__source}" "${__temp1}" || __result=$? __temp1="$( __rvm_find "${__temp1}" -name Payload -type f )" [[ -n "${__temp1}" ]] && tar xzf "${__temp1}" -C "${__temp2}" && mkdir -p "${__target}/" && mv -f "${__temp2}/Library/Frameworks/MacRuby.framework/Versions/Current"/* "${__target}/" || __result=$? rm -rf "${__temp1}" "${__temp1_org}" "${__temp2}" || true return ${__result} ) macruby_install_extract_zip() { mkdir -p ${rvm_src_path}/$rvm_ruby_string && unzip -o -j "${rvm_archives_path}/$rvm_ruby_package_file" \ "MacRuby ${rvm_ruby_version}/MacRuby ${rvm_ruby_version}.pkg" \ -d "${rvm_src_path}/$rvm_ruby_string" && \command \mv "${rvm_src_path}/$rvm_ruby_string/MacRuby ${rvm_ruby_version}.pkg" \ "${rvm_src_path}/$rvm_ruby_string/$rvm_ruby_string.pkg" && macruby_install_extract_pkg "${rvm_src_path}/$rvm_ruby_string/$rvm_ruby_string.pkg" "$rvm_ruby_home" || return $? } macruby_install_wrapper() { \command \cat < "$rvm_ruby_home/usr/bin/mac$1.new" mv -f "$rvm_ruby_home/usr/bin/mac$1.new" "$rvm_ruby_home/usr/bin/mac$1" chmod +x "$rvm_ruby_home/usr/bin/mac$1" } macruby_install_wrap_binary() { binary_name="${binary_name#$rvm_ruby_home/usr/bin/mac}" file_name="$rvm_ruby_home/bin/$binary_name" if [[ -f "$file_name" ]] then \command \rm -f "$file_name" fi macruby_install_fix_shebang "$binary_name" macruby_install_wrapper "$binary_name" > "$file_name" [[ -x "$file_name" ]] || chmod +x $file_name } macruby_install_wrap_binaries() { mkdir -p "$rvm_ruby_home/bin/" || { rvm_error "Can not create binaries directory => $rvm_ruby_home/bin/" return 1 } \typeset binary_name extra_rubyopt macruby_install_wrap_binaries_detect_rubyopt for binary_name in "$rvm_ruby_home/usr/bin"/mac* do macruby_install_wrap_binary done } macruby_install() { [[ "Darwin" == "${_system_type}" ]] || { rvm_error "MacRuby can only be installed on a Darwin OS." exit 1 } if (( rvm_head_flag == 1 )) then rvm_error "macruby-head is temporarily disabled(broken), use macruby-nightly for now." return 1 if (( ${rvm_llvm_flag:=0} == 1 )) then "$rvm_scripts_path/package" llvm install fi macruby_path="/usr/local/bin" # TODO: configure & make variables should be set here. rvm_ruby_configure=" true " rvm_ruby_make="rake" rvm_ruby_make_install="$rvm_bin_path/rvmsudo rake install" __rvm_db "${rvm_ruby_interpreter}_repo_url" "rvm_ruby_url" rvm_ruby_repo_url=$rvm_ruby_url __rvm_setup_compile_environment "${rvm_ruby_string}" __rvm_install_source $* || { result=$? rvm_error "There has been an error while trying to install from source. \nHalting the installation." return $result } else macruby_path="/Library/Frameworks/MacRuby.framework/Versions/${rvm_ruby_version}/usr/bin" rvm_log "Retrieving MacRuby ${rvm_ruby_version} ..." "$rvm_scripts_path/fetch" "$rvm_ruby_url" || { result=$? rvm_error "There has been an error while trying to fetch the source. Halting the installation." return $result } case "$rvm_ruby_package_file" in (*.zip) __rvm_log_command "install" "Installing package" \ macruby_install_extract_zip || return $? ;; (*.pkg) __rvm_log_command "install" "Installing package" \ macruby_install_extract_pkg "${rvm_archives_path}/$rvm_ruby_package_file" "$rvm_ruby_home" || return $? ;; (*) rvm_error "Do not know what to do with archive: ${rvm_archives_path}/$rvm_ruby_package_file" return 1 ;; esac fi macruby_install_wrap_binaries __rvm_initial_gemsets_create "$rvm_ruby_home/bin/ruby" binaries=() __rvm_post_install }