123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- #!/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
- }
|