123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- #!/usr/bin/env bash
- source "$rvm_scripts_path/functions/osx-ssl-certs"
- make_sure_its_enough_ram_for_rbx()
- {
- \typeset rvm_rbx_required_ram
- rvm_rbx_required_ram_mb=500
- __rvm_compiler_is_llvm ||
- __rvm_is_enough_ram ${rvm_rbx_required_ram_mb} ||
- rvm_error "For rbx (Rubinius) more than ${rvm_rbx_required_ram_mb}MB of free RAM might be required."
- }
- rubinius_install_detect_required_ruby()
- {
- export ruby
- case "${rvm_ruby_version}" in
- (2.0.0)
- case "${rvm_ruby_patch_level}" in
- (rc1) ruby="ruby-1.9" ;;
- (*) ruby="ruby-2.2" ;;
- esac
- ;;
- (2*)
- case "$rvm_ruby_repo_branch" in
- (1.8.7|1.9.3) ruby="ruby-1.9|ruby-2.2" ;;
- (*) ruby="ruby-2.2" ;;
- esac
- ;;
- (*)
- ruby="ruby-2.3.1"
- ;;
- esac
- __rvm_ensure_has_mri_ruby "$ruby" || {
- rvm_log "No $ruby found, cannot build rbx."
- return 1
- }
- ruby="$(__rvm_mri_ruby "$ruby")"
- }
- rubinius_install_ensure_gem()
- {
- __rvm_which "$1" >/dev/null &&
- [[ -x "$rvm_wrappers_path/$ruby/$1" ]] ||
- __rvm_log_command "install.${2:-$1}" \
- "$ruby - #install gem ${2:-$1}" \
- gem_install ${2:-$1} &&
- __rvm_which "$1" >/dev/null &&
- [[ -x "$rvm_wrappers_path/$ruby/$1" ]] ||
- return $?
- }
- rubinius_install_regenerate_binstubs()
- {
- gem_install executable-hooks &&
- gem regenerate_binstubs ||
- return $?
- }
- rubinius_install_ensure_wrappers()
- {
- [[ -x "$rvm_wrappers_path/$ruby/ruby" && -x "$rvm_wrappers_path/$ruby/gem" ]] ||
- __rvm_log_command "gemset.wrappers.rubinius" "$ruby - #generating wrappers" \
- run_gem_wrappers regenerate ||
- return $?
- rubinius_install_ensure_gem rake || return $?
- rubinius_install_ensure_gem bundle bundler || return $?
- __rvm_log_command "regenerate_binstubs" \
- "$ruby - #regenerating binstubs" \
- rubinius_install_regenerate_binstubs ||
- return $?
- }
- rubinius_install_setup_ruby()
- {
- if [[ ${rvm_ignore_gemsets_flag:-0} -eq 0 ]]
- then ruby="${ruby}@rubinius"
- fi
- __rvm_with "$ruby" rubinius_install_ensure_wrappers
- __rvm_osx_ssl_certs_ensure_for_ruby "$rvm_wrappers_path/$ruby/ruby"
- }
- rubinius_install()
- {
- rubinius_install_detect_required_ruby || return $?
- make_sure_its_enough_ram_for_rbx
- \typeset rvm_configure_args
- \typeset -a rvm_ruby_configure
- unset CFLAGS LDFLAGS ARCHFLAGS # Important.
- unset GEM_HOME GEM_PATH MY_RUBY_HOME IRBRC RBXOPT
- export PATH
- rvm_ruby_make=""
- __rvm_setup_compile_environment "${rvm_ruby_string}" || return $?
- __rvm_remove_rvm_from_path
- __rvm_conditionally_add_bin_path
- rubinius_install_setup_ruby || return $?
- __rvm_fetch_ruby || return $?
- __rvm_cd "${rvm_src_path}/$rvm_ruby_string"
- chmod +x ./configure
- __rvm_apply_patches ||
- {
- result=$?
- rvm_error "There has been an error while trying to apply patches to rubinius. \nHalting the installation."
- return $result
- }
- rvm_configure_flags=( --prefix="$rvm_ruby_home" "${rvm_configure_flags[@]}" )
- __rvm_db "${rvm_ruby_interpreter}_configure_flags" "db_configure_flags"
- if [[ -n "${ZSH_VERSION:-}" ]]
- then rvm_configure_flags=( ${=db_configure_flags} "${rvm_configure_flags[@]}" )
- else rvm_configure_flags=( ${db_configure_flags} "${rvm_configure_flags[@]}" )
- fi
- # Explicitly disabled
- (( ${rvm_llvm_flag:=1} )) || rvm_configure_flags+=( --disable-llvm )
- if
- [[ -f "Gemfile" ]]
- then
- __rvm_log_command "bundle" "$ruby - #bundle install" "$rvm_wrappers_path/$ruby/bundle" install ||
- return $?
- fi
- if
- [[ -f "$HOME/.gem/credentials" && -w "$HOME/.gem/credentials" ]]
- then
- chmod 600 "$HOME/.gem/credentials"
- fi
- __rvm_log_command "configure" "$rvm_ruby_string - #configuring" \
- env "${rvm_configure_env[@]}" $rvm_wrappers_path/$ruby/ruby ./configure "${rvm_configure_flags[@]}" ||
- return $?
- if [[ -n "${rvm_configure_args:-}" ]]
- then rvm_ruby_make="CONFIGURE_ARGS=${rvm_configure_args## } "
- fi
- __setup_lang_fallback
- __rvm_log_command rake "$rvm_ruby_string - #compiling" \
- "${rvm_ruby_make:-}$rvm_wrappers_path/$ruby/rake" install --trace ||
- return $?
- [[ -d "$rvm_ruby_home" && -f "$rvm_ruby_home/bin/rbx" ]] ||
- {
- result=$?
- rvm_error "Rubinius reported it was installed successfully, but RVM could not find proper installation,
- please check why '$rvm_ruby_home/bin/rbx' was not created,
- maybe here '$rvm_log_path/$rvm_ruby_string/rake.log',
- also make sure to report an error here 'https://github.com/rubinius/rubinius/issues'
- about not returning non zero status in case of errors."
- return $result
- }
- unset ruby
- # Symlink rubinius wrapper if not available
- [[ -f "$rvm_ruby_home/bin/ruby" ]] ||
- ln -fs "$rvm_ruby_home/bin/rbx" "$rvm_ruby_home/bin/ruby"
- # remove the rdoc link, the gem is not builtin
- if [[ -f "$rvm_ruby_home/bin/rdoc" ]]
- then rm -f "$rvm_ruby_home/bin/rdoc"
- fi
- case ${rvm_ruby_string} in
- rbx-head*|rubinius-head*|rbx-2.*|rubinius-2.*)
- binaries=()
- ;;
- *) # older rbx had issues
- # Install IRB Wrapper on Rubinius.
- file_name="$rvm_ruby_home/bin/irb"
- \command \rm -f "$file_name"
- printf "%b" '#!/usr/bin/env bash\n' > "$file_name"
- printf "%b" "exec '$rvm_ruby_home/bin/rbx' 'irb' \"\$@\"\n" >> "$file_name"
- [[ -x "$file_name" ]] || chmod +x "$file_name"
- # Install Gem Wrapper on Rubinius.
- file_name="$rvm_ruby_home/bin/gem"
- __rvm_cp -f "$rvm_ruby_home/lib/bin/gem.rb" "$file_name"
- __rvm_inject_ruby_shebang "$file_name"
- [[ -x "$file_name" ]] || chmod +x "$file_name"
- unset file_name
- binaries=(erb ri)
- ;;
- esac
- __rvm_initial_gemsets_create "$rvm_ruby_home/bin/ruby" &&
- __rvm_post_install &&
- __rvm_fetch_ruby_cleanup
- }
|