#!/usr/bin/env bash ruby_install_baseruby_check() { __rvm_ensure_has_mri_ruby || return $? \typeset compatible_baseruby if compatible_baseruby="$rvm_wrappers_path/$(__rvm_mri_ruby)/ruby" && [[ -x "$compatible_baseruby" ]] then rvm_configure_flags+=( --with-baseruby="$compatible_baseruby" ) else return $? fi } ruby_install() { \typeset result temp_flags _iterator case ${rvm_ruby_string:-""} in ruby-1.8.*-head) __rvm_ensure_has_mri_ruby "ree-|ruby-1.8.|ruby-1.8.7-p|ruby-1.8.7-p374" || return $? ;; ruby-1.8.*) if (( ${rvm_head_flag:-0} == 1 )) then __rvm_ensure_has_mri_ruby "ree-|ruby-1.8.|ruby-1.8.7-p|ruby-1.8.7-p374" || return $? fi ;; ruby*-head) ruby_install_baseruby_check || return $? ;; ruby*) if (( ${rvm_head_flag:-0} == 1 )) then ruby_install_baseruby_check || return $? fi ;; esac # TODO: needed on some 1.9.3, confirm with http://bugs.ruby-lang.org/issues/6903 if [[ " ${rvm_configure_flags[*]}" == *" --enable-load-relative"* ]] then case ${rvm_ruby_string} in ruby-1.9.3-p125|ruby-1.9.3-p286|ruby-1.9.3-p327|ruby-1.9.3-p362|ruby-1.9.3-p374|ruby-1.9.3-p385) rvm_patch_names+=( ruby-multilib ) ;; esac fi ( __rvm_setup_compile_environment "${rvm_ruby_string}" && __rvm_install_source $* && ruby_install_warn_clang ) || return $? ruby_install_warnings } ruby_install_warn_clang() { if ! __ruby_clang_ok ${rvm_ruby_string} && [[ -n "${initially_selected_compiler:-}" ]] && __rvm_compiler_is_llvm "${initially_selected_compiler:-}" then rvm_warn "Ruby '${rvm_ruby_string}' was built using clang - but it's not (fully) supported, expect errors." fi } ruby_install_warnings() { \typeset patches_count patches_count=$( rvm_ruby_string="${rvm_ruby_string}" lookup_patchset default | wc -l ) \typeset _default _version _patch _memo _unmaintained_ruby _unmaintained_date _unmaintained_ruby=$(__rvm_db "ruby_unmaintained_version") _default=$(__rvm_db "default_ruby") _version=$(__rvm_db "${_default}_version") _patch=$(__rvm_db "${_default}_${_version}_patch_level") _version="${_default}-${_version}${_patch:+-}${_patch:-}" _memo="Please consider upgrading to ${_version} which will have all of the latest security patches." if (( ${rvm_head_flag:-0} == 0 )) && [[ "$rvm_ruby_version" != "head" ]] && __rvm_version_compare "$rvm_ruby_version" -le "${_unmaintained_ruby}" then _unmaintained_date=$(__rvm_db "ruby_unmaintained_date") if __rvm_version_compare "$rvm_ruby_version" -eq "${_unmaintained_ruby}" && __rvm_version_compare "$(date +%F)" -lt "${_unmaintained_date}" then rvm_error "WARNING: Please be aware that you just installed a ruby that will finish normal maintenance on ${_unmaintained_date}, for a list of maintained rubies visit: http://bugs.ruby-lang.org/projects/ruby/wiki/ReleaseEngineering ${_memo}" else rvm_error "WARNING: Please be aware that you just installed a ruby that is no longer maintained (${_unmaintained_date}), for a list of maintained rubies visit: http://bugs.ruby-lang.org/projects/ruby/wiki/ReleaseEngineering ${_memo}" fi elif [[ "${rvm_ruby_string}" != *"${_version}"* ]] && (( patches_count > 0 )) then rvm_warn "Please be aware that you just installed a ruby that requires ${patches_count} patches just to be compiled on an up to date linux system. This may have known and unaccounted for security vulnerabilities. ${_memo}" fi if (( ${rvm_docs_flag:-0} == 1 )) then rvm_log "Ruby was built with documentation, to read it try: ri String" else rvm_log "Ruby was built without documentation, to build it run: rvm docs generate-ri" fi } __rvm_post_configure_ruby() { __rvm_post_configure_ruby_fix_athlon_sse2 __rvm_post_configure_ruby_update_setup } __rvm_post_configure_ruby_fix_athlon_sse2() { if [[ -f /proc/cpuinfo && -f Makefile ]] && __rvm_grep "^XCFLAGS = .*-msse2" Makefile >/dev/null && ! __rvm_grep "^flags.*sse2" /proc/cpuinfo then __rvm_sed_i Makefile -e '/^XCFLAGS =/s/-msse2//' fi } __rvm_post_configure_ruby_update_setup() { \typeset option if (( ${rvm_static_flag:-0} == 1 )) && (( ${rvm_dynamic_extensions_flag:-0} == 0 )) then for option in 'option nodynamic' openssl psych zlib readline do __rvm_update_ext_setup ${option} done fi } __rvm_update_ext_setup() { echo "extension setup: $1" if __rvm_grep "$1" ext/Setup >/dev/null then __rvm_sed_i ext/Setup -e "s/#$1/$1/" else echo "$1" >> ext/Setup fi }