scripts/manage in rvm-0.1.39 vs scripts/manage in rvm-0.1.40
- old
+ new
@@ -1,18 +1,12 @@
#!/usr/bin/env bash
original_ruby_version=$rvm_ruby_version
original_ruby_string=$rvm_ruby_string
-source $rvm_scripts_path/initialize
-source $rvm_scripts_path/utility
-source $rvm_scripts_path/selector
+source "$rvm_scripts_path/base"
-trap "rm -rf ${rvm_tmp_path}/$$* > /dev/null 2>&1 ; exit" 0 1 2 3 15
-
-if [[ ! -z "$rvm_trace_flag" ]] ; then set -x ; export rvm_trace_flag ; fi
-
# Checks for bison, returns zero iff it is found
__rvm_check_for_bison() {
if [[ "$rvm_head_flag" -gt 0 ]]; then
if ! command -v bison >/dev/null ; then
$rvm_scripts_path/log "fail" "bison is not available in your path. Please ensure it exists before compiling from head."
@@ -256,17 +250,15 @@
fi
;;
rbx|rubinius)
$rvm_scripts_path/log "info" "Installing pre-requisites"
- # prereqs, 1.8.6+ + rake. Yes this could all be one line... not pushing our luck.
- original_string="$rvm_ruby_string"
- export rvm_install_on_use_flag=1 ; $rvm_bin_path/rvm 1.8.7 --install # This should install if missing.
+
+ # Ensure we have a 1.8.7 compatible ruby installed.
+ __rvm_ensure_has_18_compat_ruby || return 1
# TODO: use 'rvm gems load' here:
unset CFLAGS LDFLAGS ARCHFLAGS # Important.
- __rvm_unset_ruby_variables ; rvm_ruby_string="$original_string" ; __rvm_select
- unset original_string
unset BUNDLE_PATH GEM_HOME GEM_PATH MY_RUBY_HOME IRBRC
PATH=$(echo $PATH | tr ':' '\n' | awk '$0 !~ /rvm/' | paste -sd : -)
PATH=$rvm_bin_path:$PATH ; export PATH
@@ -294,11 +286,11 @@
builtin cd "$rvm_ruby_src_path" ; chmod +x ./configure
__rvm_db "${rvm_ruby_interpreter}_configure_flags" "db_configure_flags"
- export ruby="$rvm_bin_path/ruby-1.8.7-p$(__rvm_db "ruby_1.8.7_patch_level")"
+ export ruby="$rvm_bin_path/$(__rvm_18_compat_ruby)"
rvm_ruby_configure_flags="${rvm_ruby_configure_flags:-"--skip-system"}"
rvm_ruby_configure="$ruby configure --prefix=$rvm_ruby_home $db_configure_flags $rvm_ruby_configure_flags" ; message="Configuring rbx"
if [[ "$rvm_llvm_flag" = "0" ]] ; then
rvm_ruby_configure="$rvm_ruby_configure --disable-llvm"
@@ -323,16 +315,22 @@
fi
unset ruby
# Symlink rubinius wrappers
- ln -fs "$rvm_ruby_home/bin/rbx" "$rvm_ruby_home/bin/irb"
ln -fs "$rvm_ruby_home/bin/rbx" "$rvm_ruby_home/bin/ruby"
- # Install a wrapper around gem.
+
+ # Install IRB Wrapper on Rubinius.
+ file_name="$rvm_ruby_home/bin/irb"
+ rm -f "$file_name"
+ printf '#!/usr/bin/env bash\n' > "$file_name"
+ printf "exec '$rvm_ruby_home/bin/rbx' 'irb' \"\$@\"\n" >> "$file_name"
+ [[ -f "$file_name" ]] && chmod +x "$file_name"
+
+ # Install Gem Wrapper on Rubinius.
file_name="$rvm_ruby_home/bin/gem"
cp -f "$rvm_ruby_home/lib/bin/gem.rb" "$file_name"
-
__rvm_inject_ruby_shebang "$file_name"
[[ -f "$file_name" ]] && chmod +x "$file_name"
unset file_name
binaries="erb ri rdoc"
@@ -397,11 +395,11 @@
__rvm_run "gems" "$rvm_ruby_home/bin/gem install $rvm_gem_name $rvm_gem_options" "Installing $rvm_gem_name"
done ; unset rvm_gem_name
;;
maglev)
- export rvm_install_on_use_flag=1 ; $rvm_bin_path/rvm 1.8.7 --install # This should install if missing.
+ __rvm_ensure_has_18_compat_ruby
$rvm_scripts_path/log "info" "Running MagLev prereqs checking script."
$rvm_scripts_path/maglev
result=$? ; if [[ "$result" -gt 0 ]] ; then
$rvm_scripts_path/log "error" "Prerequisite checks have failed. Aborting the installation." ; __rvm_pushpop ; return $result
@@ -467,22 +465,26 @@
$rvm_ruby_home/bin/maglev force-reload
ln -sf maglev.demo.key-$(uname -sm | tr ' ' '-') etc/maglev.demo.key
fi
#ln -fs "$rvm_ruby_home/$(echo $rvm_gemstone_package_file | awk -F'.' '{print $1}')" "$rvm_ruby_home/gemstone"
+
+ compatible_ruby="$(__rvm_18_compat_ruby)"
if [[ ! -e ${rvm_ruby_home}/etc/conf.d/maglev.conf ]] ; then
$rvm_scripts_path/log "info" "Creating default 'maglev' repository."
- $rvm_bin_path/rvm 1.8.7 rake "stone:create[maglev]" >/dev/null 2>&1
+ $rvm_bin_path/rvm "$(compatible_ruby)" rake "stone:create[maglev]" >/dev/null 2>&1
fi
$rvm_scripts_path/log "info" "Generating maglev HTML documentation"
- $rvm_bin_path/rvm 1.8.7 rake rdoc >/dev/null 2>&1
+ $rvm_bin_path/rvm "$(compatible_ruby)" rake rdoc >/dev/null 2>&1
$rvm_scripts_path/log "info" "Generating smalltalk FFI."
- $rvm_bin_path/rvm 1.8.7 rake stwrappers >/dev/null 2>&1
+ $rvm_bin_path/rvm "$(compatible_ruby)" rake stwrappers >/dev/null 2>&1
+ unset compatible_ruby
+
# TODO: Figure out if anything needs to be done with rubygems.
#__rvm_rubygems_setup
__rvm_irbrc
__rvm_bin_script
__rvm_use
@@ -506,19 +508,24 @@
else
printf "Cannot recognize mono version."
return 1
fi
+ __rvm_ensure_has_18_compat_ruby
+
__rvm_fetch_ruby
if [[ $? -gt 0 ]] ; then result=$? ; return $result ; fi
builtin cd $rvm_ruby_src_path
- $rvm_bin_path/rvm 1.8.7 -S gem install pathname2 --no-rdoc --no-ri
+ compatible_ruby="$(__rvm_18_compat_ruby)"
+ $rvm_bin_path/rvm "$(compatible_ruby)" -S gem install pathname2 --no-rdoc --no-ri
+
# MONO_LIB=/Library/Frameworks/Mono.framework/Versions/current/lib/
- rvm_ruby_make="$rvm_bin_path/rvm 1.8.7 -S rake MERLIN_ROOT=\"$rvm_ruby_src_path/Merlin/Main\" compile mono=1 configuration=release --trace"
+ rvm_ruby_make="$rvm_bin_path/rvm $(compatible_ruby) -S rake MERLIN_ROOT=\"$rvm_ruby_src_path/Merlin/Main\" compile mono=1 configuration=release --trace"
__rvm_run "rake" "$rvm_ruby_make" "Building IronRuby..."
+ unset compatible_ruby
if [[ $? -gt 0 ]] ; then result=$? ; return $result ; fi
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
@@ -832,59 +839,72 @@
__rvm_remove_gemsets
__rvm_remove_archives
__rvm_remove_aliases
__rvm_remove_wrappers
__rvm_remove_environments
+ __rvm_remove_binaries
else
$rvm_scripts_path/log "fail" "Cannot remove unknown package '$rvm_ruby_string'"
fi ; unset rvm_remove_flag
}
__rvm_remove_gemsets() {
- $rvm_scripts_path/log "info" "Removing $rvm_ruby_string gemsets..."
if [[ ! -z "$rvm_gems_flag" ]] ; then
- gemsets="$rvm_gems_path/$rvm_ruby_string $(ls -d "${rvm_gems_path}"/* | awk '/'$rvm_ruby_string'@/')"
+ $rvm_scripts_path/log "info" "Removing $rvm_ruby_string gemsets..."
+ gemsets="$rvm_gems_path/$rvm_ruby_string $(\ls -d "${rvm_gems_path}"/* | awk '/'$rvm_ruby_string'@/')"
for gemset in $gemsets ; do
if [[ -d "$gemset" ]] ; then
rm -rf "$gemset"
fi
done ; unset gemset gemsets
fi
}
__rvm_remove_wrappers() {
$rvm_scripts_path/log "info" "Removing $rvm_ruby_string wrappers..."
- wrappers="$rvm_wrappers_path/$rvm_ruby_string $(ls -d "$rvm_wrappers_path"/* | awk '/'$rvm_ruby_string'@/')"
+ wrappers="$rvm_wrappers_path/$rvm_ruby_string $(\ls -d "$rvm_wrappers_path"/* 2>/dev/null | awk '/'$rvm_ruby_string'@/')"
for wrapper in $wrappers ; do
rm -rf "$wrapper"
done ; unset wrapper wrappers
}
+
__rvm_remove_environments() {
$rvm_scripts_path/log "info" "Removing $rvm_ruby_string environments..."
- environments="$rvm_environments_path/$rvm_ruby_string $(ls -d "$rvm_environments_path"/* | awk '/'$rvm_ruby_string'@/')"
+ environments="$rvm_environments_path/$rvm_ruby_string $(\ls -d "$rvm_environments_path"/* | awk '/'$rvm_ruby_string'@/')"
for environment in $environments ; do
rm -rf "$environment"
done ; unset environment environments
}
+
__rvm_remove_aliases() {
$rvm_scripts_path/log "info" "Removing $rvm_ruby_string aliases..."
- aliases=$(awk '/'$rvm_ruby_string'/' $rvm_config_path/alias)
+ aliases=$(awk '/'$rvm_ruby_string'/' $rvm_config_path/alias | sed 's/=.*//')
for alias_name in $aliases ; do
# Remove from alias key-value store
- $rvm_scripts_path/db $rvm_config_path/alias $alias_name delete
- # Remove the place holding symlink
- rm -f $rvm_rubies_path/$alias_name
+ $rvm_scripts_path/alias delete "$alias_name" >/dev/null 2>&1
done ; unset alias_name aliases
}
__rvm_remove_archives() {
- $rvm_scripts_path/log "info" "Removing $rvm_ruby_string archives..."
if [[ ! -z "$rvm_archive_flag" ]] ; then
+ $rvm_scripts_path/log "info" "Removing $rvm_ruby_string archives..."
rm -f $rvm_archives_path/${rvm_ruby_package_file}.${rvm_archive_extension}
fi
}
+__rvm_remove_binaries() {
+ $rvm_scripts_path/log "info" "Removing $rvm_ruby_string binaries..."
+ # Iterate over all binaries and check for symlinked wrappers etc.
+ for binary_name in $(\ls "$rvm_bin_path"); do
+ full_binary_path="$rvm_bin_path/$binary_name"
+ if [[ -L "$full_binary_path" ]] && $rvm_scripts_path/match "$(readlink "$full_binary_path")" "$rvm_ruby_string"; then
+ rm -f "$full_binary_path"
+ fi
+ unset full_binary_path
+ done; unset binary_name
+}
+
__rvm_post_install() {
if [[ "$rvm_ruby_interpreter" != "jruby" ]] ; then
binaries="${binaries:-"gem irb erb ri rdoc testrb rake"}"
$rvm_scripts_path/log "info" "adjusting shebangs for $rvm_ruby_string ($binaries)."
for binary in $(echo $binaries) ; do
@@ -950,11 +970,24 @@
GEM_HOME="$home" ; GEM_PATH="$path" ; BUNDLE_PATH="$home"
export GEM_HOME GEM_PATH BUNDLE_PATH
__rvm_inject_ruby_shebang "$rvm_ruby_home/bin/gem"
__rvm_inject_gem_env "$rvm_ruby_home/bin/gem"
- ruby_lib_gem_path="$rvm_ruby_home/lib/ruby/gems/${rvm_release_version}.$rvm_major_version"
+
+ directory_name="$rvm_ruby_home/lib/ruby/gems"
+ version_number="${rvm_release_version}.${rvm_major_version}"
+ if [[ "$version_number" == "." ]]; then
+ version_number="$(\ls "$directory_name" | grep '^[[:digit:]].[[:digit:]]\(.[[:digit:]]\)\?' | head -n1)"
+ if [[ -n "$version_number" ]]; then
+ ruby_lib_gem_path="${directory_name}/${version_number}"
+ else
+ ruby_lib_gem_path=""
+ fi
+ else
+ ruby_lib_gem_path="${directory_name}/${version_number}"
+ fi
+ unset directory_name version_number
elif [[ ! -z "$(echo $rvm_ruby_interpreter | awk '/^rbx|jruby/')" ]] ; then
# Hands off rubygems for rbx & jruby
if [[ ! -z "$rvm_debug_flag" ]] ; then $rvm_scripts_path/log "debug" "Skipping rubygems update for $rvm_ruby_version" ; fi
ruby_lib_gem_path="$rvm_ruby_home/lib/ruby/gems/jruby"
else
@@ -962,11 +995,10 @@
rvm_rubygems_version="$(__rvm_db "${rvm_ruby_interpreter}_rubygems_version")"
rvm_rubygems_version="${rvm_rubygems_version:-"$(__rvm_db "rubygems_version")"}"
rvm_rubygems_url=$(__rvm_db "rubygems_${rvm_rubygems_version}_url")
rvm_gem_package_name="rubygems-$rvm_rubygems_version"
rvm_gem_url="$rvm_rubygems_url/$rvm_gem_package_name.tgz"
-
# Sanity check... If setup.rb is missing from the rubygems source path,
# something went wrong. Cleanup, aisle 3!
if [[ ! -f "$rvm_src_path/$rvm_gem_package_name/setup.rb" ]]; then
rm -rf "$rvm_src_path/$rvm_gem_package_name"
fi
@@ -998,19 +1030,17 @@
else
ruby_lib_gem_path="$rvm_ruby_home/lib/ruby/gems/$interpreter"
fi
fi
- # Add ruby's gem path to ruby's lib direcotry.
- mkdir -p $(dirname $ruby_lib_gem_path)
+ if [[ -n "$ruby_lib_gem_path" ]]; then
+ # Add ruby's gem path to ruby's lib direcotry.
+ mkdir -p $(dirname $ruby_lib_gem_path)
+ if [[ -d "$ruby_lib_gem_path" ]] ; then rm -rf "$ruby_lib_gem_path" ; fi
+ ln -nfs "$rvm_ruby_gem_home" "$ruby_lib_gem_path"
+ fi; unset ruby_lib_gem_path
- if [[ -d "$ruby_lib_gem_path" ]] ; then rm -rf "$ruby_lib_gem_path" ; fi
-
- ln -nfs "$rvm_ruby_gem_home" "$ruby_lib_gem_path"
-
- unset ruby_lib_gem_path
-
if [[ -s "$rvm_ruby_src_path/bin/rdoc" ]] ; then
__rvm_inject_ruby_shebang "$rvm_ruby_src_path/bin/rdoc"
fi
if [[ -s "$rvm_ruby_src_path/bin/rake" ]] ; then
@@ -1052,17 +1082,17 @@
actual_file="$1"
fi
}
__rvm_manage_rubies() {
- rubies=() ; successes=() ; errors=() ; statuses=()
-
unset rvm_gemset_name rvm_ruby_selected_flag
rvm_ruby_gem_home=$(echo $rvm_ruby_gem_home | awk -F${rvm_gemset_separator} '{print $1}')
rvm_ruby_string=$(echo $rvm_ruby_string | awk -F${rvm_gemset_separator} '{print $1}')
+ local manage_result=0
+
if [[ ! -z "$rubies_string" ]] ;then
for rvm_ruby_string in $(echo $rubies_string | tr ',' ' ') ; do
eval "__rvm_${rvm_action}_ruby"
__rvm_unset_ruby_variables
done
@@ -1079,12 +1109,12 @@
else
$rvm_scripts_path/log "warn" 'Really? Install all? See "rvm list known" and limit the selection to something more sane please :)'
fi
fi
- if [[ ! -z "$rvm_summary_flag" ]] ; then __rvm_summary ; fi
- if [[ ! -z "$rvm_yaml_flag" ]] ; then __rvm_yaml ; fi
- if [[ ! -z "$rvm_json_flag" ]] ; then __rvm_json ; fi
+ # TODO: This should return the exit status of the command that got called.
+ return $manage_result
+
}
rvm_action="$1" ; rubies_string="$2"
__rvm_manage_rubies
exit $?