#!/usr/bin/env bash
ironruby_install()
{
rvm_error "WARNING! IronRuby is not anywhere around usable (with or without RVM),
there are multiple issues with it, here is an effort to improve/fix it:
https://github.com/rvm/rvm/pull/1543"
builtin command -v mono > /dev/null ||
{
printf "%b" "mono must be installed and in your path in order to install IronRuby."
return 1
}
if
(( ${rvm_head_flag:=0} == 1 ))
then
mono_version="$(mono -V | \command \head -n 1 | __rvm_grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | \command \head -n 1 )"
if
[[ -n "${mono_version:-}" ]]
then
mono_major_ver="$(echo "$mono_version" | cut -d '.' -f1)"
mono_minor_ver="$(echo "$mono_version" | cut -d '.' -f2)"
if
[[ $mono_major_ver -lt 2 ]] ||
[[ $mono_major_ver -eq 2 && $mono_minor_ver -lt 6 ]]
then
printf "%b" "Mono 2.6 (or greater) must be installed and in your path in order to build IronRuby from the repository."
printf "%b" "Version detected: ${mono_version}"
return 1
fi
else
printf "%b" "Cannot recognize mono version."
return 1
fi
__rvm_ensure_has_mri_ruby
__rvm_fetch_ruby || return $?
__rvm_cd "${rvm_src_path}/$rvm_ruby_string"
compatible_ruby="$(__rvm_mri_ruby)"
"$rvm_wrappers_path/$compatible_ruby/gem" install pathname2 --no-rdoc --no-ri
# MONO_LIB=/Library/Frameworks/Mono.framework/Versions/current/lib/
rvm_ruby_make=( $rvm_wrappers_path/$compatible_ruby/rake MERLIN_ROOT="${rvm_src_path}/$rvm_ruby_string/Merlin/Main" compile mono=1 configuration=release --trace )
__rvm_log_command rake "Building IronRuby..." "${rvm_ruby_make[@]}" || return $?
__rvm_rm_rf "$rvm_ruby_home"/*
mkdir -p "$rvm_ruby_home/bin" "$rvm_ruby_home/lib" "$rvm_ruby_home/Lib/ruby" "$rvm_ruby_home/Lib/IronRuby"
__rvm_cp -r "${rvm_src_path}/$rvm_ruby_string/Merlin/Main/Bin/mono_release"/* "$rvm_ruby_home/bin/"
__rvm_cp -r "${rvm_src_path}/$rvm_ruby_string/Merlin/Main/Languages/Ruby/Scripts/bin"/* "$rvm_ruby_home/bin/"
__rvm_cp -r "${rvm_src_path}/$rvm_ruby_string/Merlin/External.LCA_RESTRICTED/Languages/Ruby/redist-libs/ruby"/* "$rvm_ruby_home/lib/ruby"
__rvm_cp -r "${rvm_src_path}/$rvm_ruby_string/Merlin/Main/Languages/Ruby/Libs"/* "$rvm_ruby_home/lib/IronRuby"
else
rvm_log "Retrieving IronRuby"
"$rvm_scripts_path/fetch" "$rvm_ruby_url" "$rvm_ruby_package_file" ||
{
result=$?
rvm_error "There has been an error while trying to fetch the source. \nHalting the installation."
exit $result
}
mkdir -p "${rvm_src_path}/$rvm_ruby_string" "$rvm_ruby_home"
__rvm_log_command "extract" "$rvm_ruby_string - #extracting $rvm_ruby_package_file to ${rvm_src_path}/$rvm_ruby_string" \
__rvm_package_extract "${rvm_archives_path}/${rvm_ruby_package_file}" "${rvm_src_path}/$rvm_ruby_string" ||
case $? in
199)
rvm_error "\nUnrecognized archive format '$archive_format'"
return 199
;;
*)
rvm_error "There has been an error while trying to extract the source. Halting the installation."
return 1
;;
esac
for dir in bin Lib Silverlight
do
__rvm_cp -Rf "${rvm_src_path}/$rvm_ruby_string/$dir" "$rvm_ruby_home/$dir"
done
fi
binaries=(gem irb rdoc rake ri ruby)
for binary_name in "${binaries[@]}"
do
if
[[ -s "$rvm_ruby_home/bin/$binary_name" ]]
then
\command \tr -d '\r' < "$rvm_ruby_home/bin/$binary_name" > "$rvm_ruby_home/bin/$binary_name.new" &&
\command \mv -f "$rvm_ruby_home/bin/$binary_name.new" "$rvm_ruby_home/bin/$binary_name"
chmod +x "$rvm_ruby_home/bin/$binary_name"
fi
done
unset binaries
if
[[ -f "$rvm_ruby_home/bin/ir" ]]
then
__rvm_sed -e '1,1s=.*=#!'"/usr/bin/env bash=" "$rvm_ruby_home/bin/ir" | \command \tr -d '\r' > "$rvm_ruby_home/bin/ir.new" &&
\command \mv -f "$rvm_ruby_home/bin/ir.new" "$rvm_ruby_home/bin/ir"
else
echo "mono \"$rvm_ruby_home/bin/ir\" \"\$@\"" > "$rvm_ruby_home/bin/ir"
fi
chmod +x "$rvm_ruby_home/bin/ir"
ln -fs "$rvm_ruby_home/bin/ir" "$rvm_ruby_home/bin/ruby"
__rvm_initial_gemsets_create "$rvm_ruby_home/bin/ruby"
__rvm_fetch_ruby_cleanup
}