scripts/rvm-ruby-installer in rvm-0.0.37 vs scripts/rvm-ruby-installer in rvm-0.0.38
- old
+ new
@@ -2,10 +2,11 @@
function __rvm_install-source {
if [ -z "$rvm_selected" ] ; then __rvm_select $* ; fi
+ status=0
__rvm_log "info" "Installing Ruby from source to: $rvm_ruby_home"
mkdir -p $rvm_ruby_log_path
pushd $rvm_source_path > /dev/null
@@ -17,137 +18,118 @@
if [ -z "$rvm_ruby_tag" -a -z "$rvm_ruby_rev" ] ; then
if [ ! -d $rvm_ruby_src_path ] ; then
rvm_url="${rvm_url:-"ftp://ftp.ruby-lang.org/pub/ruby/1.$rvm_major_version/$rvm_ruby_package_name.tar.gz"}"
__rvm_log "info" "\tDownloading $rvm_ruby_package_name, this may take a while depending on your connection..."
__rvm_fetch $rvm_url
+ if [ $status -eq 0 ] ; then status=$? ; fi
__rvm_log "info" "\tExtracting $rvm_ruby_package_name ..."
mkdir -p $rvm_ruby_src_path # Is this line necessary considering -C below? v
__rvm_run "extract" tar xzf $rvm_archives_path/$rvm_ruby_package_name.tar.gz -C $rvm_source_path
+ if [ $status -eq 0 ] ; then status=$? ; fi
fi
else
__rvm_log "info" "\tRetrieving Ruby from $rvm_url"
if [ ! -z "`echo $rvm_url | grep '^git'`" ] ; then
if [ -d "$rvm_ruby_src_path/.git" ] ; then
cd $rvm_ruby_src_path
if [ -z "$rvm_ruby_rev" ] ; then
git pull origin master
+ if [ $status -eq 0 ] ; then status=$? ; fi
else
git checkout ${rvm_ruby_rev:-HEAD}
+ if [ $status -eq 0 ] ; then status=$? ; fi
fi
else
git clone --depth 1 $rvm_ruby_repo_url $rvm_ruby_src_path
+ if [ $status -eq 0 ] ; then status=$? ; fi
fi
else
if [ -z "$rvm_ruby_rev" ] ; then
# TODO: Check if tag v is valid
rvm_url=$rvm_ruby_repo_url/tags/$rvm_ruby_tag
rvm_rev=""
else
if [ "$rvm_ruby_rev" = "head" -o "$rvm_ruby_rev" = "trunk" ] ; then
- rvm_url=$rvm_ruby_repo_url/branches/ruby_1_${rvm_major_version}_${rvm_minor_version}
+ rvm_url="$rvm_ruby_repo_url/trunk"
rvm_rev=""
else
rvm_url=$rvm_ruby_repo_url/branches/ruby_1_${rvm_major_version}_${rvm_minor_version}
rvm_rev="-r $rvm_ruby_rev"
fi
fi
if [ -d "$rvm_ruby_src_path/.svn" ] ; then
cd $rvm_ruby_src_path
- svn checkout -q $rvm_rev
+ if [ -z "$rvm_rev" ] ; then
+ svn update
+ else
+ svn checkout -q $rvm_rev
+ fi
else
svn checkout -q $rvm_rev --force $rvm_url $rvm_ruby_src_path
fi
+ if [ $status -eq 0 ] ; then status=$? ; fi
fi
fi
cd $rvm_ruby_src_path
- if [ $? -gt 0 ] ; then __rvm_log "error" "There was an error, please check $rvm_ruby_log_path/*.error.log" ; popd 2> /dev/null ; return 1 ; fi
+ if [ $? -gt 0 ] ; then __rvm_log "error" "There was an error, please check $rvm_ruby_log_path/*.error.log" ; popd > /dev/null ; return 1 ; fi
if [ ! -s "$rvm_ruby_src_path/configure" -a "$rvm_ruby_interpreter" = "ruby" ] ; then
rvm_autoconf=`which autoconf`
if [ $? -ne 0 ] ; then __rvm_log "fail" "rvm expects autoconf" ; fi
__rvm_run "autoconf" $rvm_autoconf
+ if [ $status -eq 0 ] ; then status=$? ; fi
fi
- if [ $? -gt 0 ] ; then __rvm_log "error" "There was an error, please check $rvm_ruby_log_path/*.error.log" ; popd 2> /dev/null ; return 1 ; fi
+ if [ $? -gt 0 ] ; then __rvm_log "error" "There was an error, please check $rvm_ruby_log_path/*.error.log" ; popd > /dev/null ; return 1 ; fi
if [ -s ./Makefile -a -z "$rvm_re_configure" ] ; then
__rvm_log "warn" "\tSkipping configure step, Makefile exists so configure must have already been run."
elif [ -s ./configure ] ; then
__rvm_log "info" "\tConfiguring $rvm_ruby_package_name using $rvm_ruby_configure, this may take a while depending on your cpu(s)..."
__rvm_run "configure" ./configure --prefix=$rvm_ruby_home $rvm_ruby_configure
+ if [ $status -eq 0 ] ; then status=$? ; fi
else
__rvm_log "warn" "\tSkipping configure step, 'configure' script does not exist, did autoconf not run successfully?"
fi
__rvm_log "info" "\tCompiling $rvm_ruby_package_name, this may take a while, depending on your cpu(s)..."
if [ -z "$rvm_ruby_make" ] ; then
- __rvm_run "make" make
+ __rvm_run "make" make $rvm_make_flags
else
__rvm_run "make" $rvm_ruby_make
fi
+ if [ $status -eq 0 ] ; then status=$? ; fi
if [ -z "$rvm_ruby_make" ] ; then
__rvm_log "info" "\tInstalling $rvm_ruby_package_name"
__rvm_run "install" make install
else
__rvm_run "install" $rvm_ruby_make_install
fi
+ if [ $status -eq 0 ] ; then status=$? ; fi
__rvm_run "chmod.bin" chmod +x $rvm_ruby_home/bin/*
- __rvm_bin_scripts
+ __rvm_bin_script
__rvm_log "info" "Installation of $rvm_ruby_package_name is complete."
-
- __rvm_log "info" "\tInstalling rubygems dedicated to $rvm_ruby_package_name..."
GEM_HOME="$rvm_gem_home" ; export GEM_HOME
- rvm_gem_package_name="rubygems-1.3.5"
- rvm_gem_url="http://rubyforge.org/frs/download.php/60718/$rvm_gem_package_name.tgz"
- if [ -d $rvm_source_path/$rvm_gem_package_name ] ; then
- cd $rvm_source_path/$rvm_gem_package_name
- else
- __rvm_fetch $rvm_gem_url
- mkdir -p $rvm_source_path/$rvm_gem_package_name
- __rvm_run "rubygems.extract" tar zxf $rvm_archives_path/$rvm_gem_package_name.tgz -C $rvm_source_path
- fi
- # Well this is fun... fix nil error on require_paths:
- sed -i.orig "s/require_paths\.join/require_paths.to_a.join/" $rvm_source_path/$rvm_gem_package_name/lib/rubygems/gem_path_searcher.rb
+ GEM_PATH="$rvm_gem_home" ; export GEM_PATH
- __rvm_run "rubygems.install" $rvm_ruby_binary $rvm_source_path/$rvm_gem_package_name/setup.rb
- popd 2> /dev/null
-
- for binary in gem irb erb ri rdoc testrb rake ; do
- if [ -x $rvm_ruby_src_path/bin/$binary ] ; then
- cp $rvm_ruby_src_path/bin/$binary $rvm_ruby_home/bin/$binary
- string="ENV['GEM_HOME']=ENV['GEM_HOME'] || '$rvm_gem_home'\nENV['PATH']='$rvm_ruby_home/bin:$rvm_gem_home/bin:' + ENV['PATH']"
- awk "NR==2 {print \"$string\"} {print}" $rvm_ruby_home/bin/$binary > $rvm_ruby_home/bin/$binary.new
- mv $rvm_ruby_home/bin/$binary.new $rvm_ruby_home/bin/$binary
- chmod +x $rvm_ruby_home/bin/$binary
- else
- __rvm_log "warn" "$rvm_ruby_src_path/bin/$binary is missing"
- fi
- done
-
- for rvm_gem_name in rake ; do
- __rvm_log "info" "Installing $rvm_gem_name"
- __rvm_run "gems" $rvm_ruby_home/bin/gem install $rvm_gem_name --no-rdoc --no-ri -q
- done
-
- __rvm_log "info" "Installation of rubygems for $rvm_ruby_package_name is complete."
-
- binary=rake
- if [ -x $rvm_gem_home/bin/$binary ] ; then
- cp $rvm_gem_home/bin/$binary $rvm_ruby_home/bin/$binary
- string="ENV['GEM_HOME']=ENV['GEM_HOME'] || '$rvm_gem_home'\nENV['PATH']='$rvm_ruby_home/bin:$rvm_gem_home/bin:' + ENV['PATH']"
- awk "NR==2 {print \"$string\"} {print}" $rvm_ruby_home/bin/$binary > $rvm_ruby_home/bin/$binary.new
- mv $rvm_ruby_home/bin/$binary.new $rvm_ruby_home/bin/$binary
- chmod +x $rvm_ruby_home/bin/$binary
+ echo $rvm_ruby_vesion | grep '^1\.9' > /dev/null
+ if [ $? -gt 0 ] ; then
+ __rvm_rubygems_install
+ if [ $status -eq 0 ] ; then status=$? ; fi
else
- __rvm_log "warn" "$rvm_gem_home/bin/$binary is missing"
+ mv $rvm_ruby_src_path/bin/gem $rvm_ruby_src_path/bin/gem.orig
+ cat $rvm_ruby_src_path/bin/gem.orig | sed -e "s=!# */usr/bin/env ruby=!#/usr/bin/$rvm_ruby_home/bin/ruby=" > $rvm_ruby_src_path/bin/gem
+ chmod +x $rvm_ruby_home/bin/gem
fi
- unset binary
+ popd > /dev/null
+
+ __rvm_post_install
}
function __rvm_install-ruby {
if [ -z "$rvm_selected" ] ; then __rvm_select $* ; fi
@@ -156,10 +138,12 @@
case "$rvm_ruby_interpreter" in
macruby)
if [ "`uname`" = "Darwin" ] ; then
rvm_ruby_repo_url=$rvm_macruby_repo_url
+#/macruby_nightly-2009-09-10.pkg
+ rvm_macruby_nightly_url=`__rvm_db "macruby_nightly_url"`
rvm_ruby_configure=""
rvm_ruby_make="rake macruby:build framework_instdir=$rvm_path/macruby-head framework_name=/macruby-head --trace"
rvm_ruby_make_install="rake framework:install framework_instdir=$rvm_path/macruby-head framework_name=/macruby-head --trace"
#rvm_ruby_rev="${rvm_ruby_rev:-head}" # Hard coding this for now
@@ -185,32 +169,34 @@
__rvm_log "fail" "MacRuby can only be installed on a Darwin OS."
fi
;;
ruby-enterprise|ree)
+ __rvm_select
rvm_url="http://rubyforge.org/frs/download.php/58677/$rvm_ruby_package_name.tar.gz"
__rvm_log "info" "Installing Ruby Enterprise Edition from source to: $rvm_ruby_home"
pushd $rvm_source_path > /dev/null
if [ -d $rvm_ruby_src_path ] ; then
cd $rvm_ruby_src_path
else
__rvm_log "info" "\tDownloading $rvm_ruby_package_name, this may take a while depending on your connection..."
__rvm_fetch $rvm_url
- if [ $? -gt 0 ] ; then __rvm_log "error" "There was an error, please check $rvm_ruby_log_path/*.error.log" ; popd 2> /dev/null ; return 1 ; fi
+ if [ $? -gt 0 ] ; then __rvm_log "error" "There was an error, please check $rvm_ruby_log_path/*.error.log" ; popd > /dev/null ; return 1 ; fi
__rvm_log "info" "\tExtracting $rvm_ruby_package_name..."
mkdir -p $rvm_ruby_src_path
__rvm_run "extract" tar xzf $rvm_archives_path/$rvm_ruby_package_name.tar.gz -C $rvm_source_path
fi
__rvm_log "info" "\tInstalling $rvm_ruby_package_name, this may take a while, depending on your cpu(s)..."
mkdir -p $rvm_ruby_log_path
cd $rvm_ruby_src_path
- __rvm_run "install" ./installer -a $rvm_path/ruby-enterprise-$rvm_ruby_version-$rvm_ruby_patch_level --dont-install-useful-gems --no-tcmalloc
+ if [ ! -z "$rvm_ruby_configure" ] ; then rvm_ruby_configure="-c $rvm_ruby_configure"; fi
+ __rvm_run "install" ./installer -a $rvm_path/ruby-enterprise-$rvm_ruby_version-$rvm_ruby_patch_level --dont-install-useful-gems --no-tcmalloc $rvm_ruby_configure
chmod +x $rvm_ruby_home/bin/*
- ln -fs $rvm_ruby_home/bin/ruby $rvm_path/bin/$rvm_ruby_package_name
+ __rvm_bin_script
__rvm_log "info" "\tInstalling rubygems dedicated to $rvm_ruby_package_name..."
rvm_gem_package_name="rubygems-1.3.5"
rvm_gem_url="http://rubyforge.org/frs/download.php/60718/$rvm_gem_package_name.tgz"
if [ -d $rvm_source_path/$rvm_gem_package_name ] ; then
@@ -220,32 +206,37 @@
mkdir -p $rvm_source_path/$rvm_gem_package_name
__rvm_run "extract" tar zxf $rvm_archives_path/$rvm_gem_package_name.tgz -C $rvm_source_path
fi
# Well this is fun... fix nil error on require_paths:
sed -i.orig "s/require_paths\.join/require_paths.to_a.join/" $rvm_source_path/$rvm_gem_package_name/lib/rubygems/gem_path_searcher.rb > $rvm_ruby_log_path/rubygems.install.log 2> $rvm_ruby_log_path/rubygems.install.error.log
+ rm -f $rvm_source_path/$rvm_gem_package_name/lib/rubygems/gem_path_searcher.rb.orig
__rvm_run "rubygems.install" $rvm_ruby_home/bin/ruby $rvm_source_path/$rvm_gem_package_name/setup.rb
__rvm_log "info" "Installation of $rvm_ruby_package_name complete."
- popd 2> /dev/null
+ popd > /dev/null
for rvm_gem_name in rake ; do
__rvm_log "info" "Installing $rvm_gem_name"
__rvm_run "gems" $rvm_ruby_home/bin/gem install $rvm_gem_name --no-rdoc --no-ri -q
done
;;
rbx|rubinius)
# TODO: check if system is 1.8.X otherwise use rvm's 1.8.X and check for parsetree, install if missing
- unset GEM_HOME MY_RUBY_HOME IRBRC
- PATH="$rvm_default_path" ; export PATH
+ unset GEM_HOME GEM_PATH MY_RUBY_HOME IRBRC
+ PATH="$rvm_system_path" ; export PATH
rvm_ruby_repo_url=$rvm_rubinius_repo_url
rvm_ruby_configure=""
+ rvm_ruby_src_path=$rvm_ruby_home
rvm_ruby_make="rake"
rvm_ruby_make_install="rake install"
rvm_ruby_home="$rvm_path/$rvm_ruby_interpreter-$rvm_ruby_version"
#rvm_ruby_rev="head"
# TODO: Check if already git repo, then git pull origin master && build
+
+ __rvm_bin_script
+
if [ ! -d $rvm_ruby_home -o ! -d $rvm_ruby_home/.git ] ; then
rm -rf $rvm_ruby_home
git clone --depth 1 $rvm_ruby_repo_url $rvm_ruby_home
fi
cd $rvm_ruby_home
@@ -287,12 +278,12 @@
fi
__rvm_log "info" "\tInstalling $rvm_ruby_package_name..."
mkdir -p $rvm_ruby_home/bin/
__rvm_run "sync" rsync -ag $rvm_ruby_src_path/ $rvm_ruby_home/
- __rvm_run "nailgun" cd $rvm_ruby_src_path/tool/nailgun && make
- popd 2> /dev/null
+ __rvm_run "nailgun" cd $rvm_ruby_src_path/tool/nailgun && make $rvm_make_flags
+ popd > /dev/null
chmod +x $rvm_ruby_home/bin/*
for binary in jruby jgem jirb ; do
ln -fs $rvm_ruby_home/bin/$binary $rvm_ruby_home/bin/${binary#j}
done
@@ -342,5 +333,69 @@
else
__rvm_log "fail" "Cannot uninstall unknown package '$rvm_ruby_package_name'"
fi
}
+
+function __rvm_post_install {
+
+ for binary in gem irb erb ri rdoc testrb rake ; do
+ if [ -x $rvm_ruby_src_path/bin/$binary ] ; then
+ if [ "$rvm_ruby_src_path" != "$rvm_ruby_home" ] ; then
+ cp $rvm_ruby_src_path/bin/$binary $rvm_ruby_home/bin/$binary
+ fi
+ string="ENV['GEM_HOME']=ENV['GEM_HOME'] || '$rvm_gem_home'\nENV['GEM_PATH']=ENV['GEM_PATH'] || '$rvm_gem_home'\nENV['PATH']='$rvm_ruby_home/bin:$rvm_gem_home/bin:' + ENV['PATH']"
+ awk "NR==2 {print \"$string\"} {print}" $rvm_ruby_home/bin/$binary > $rvm_ruby_home/bin/$binary.new
+ mv $rvm_ruby_home/bin/$binary.new $rvm_ruby_home/bin/$binary
+ chmod +x $rvm_ruby_home/bin/$binary
+ else
+ __rvm_log "warn" "$rvm_ruby_src_path/bin/$binary is missing"
+ fi
+ done
+
+ __rvm_log "info" "Installing gems for $rvm_ruby_package_name."
+
+ for rvm_gem_name in rake ; do
+ __rvm_log "info" "Installing $rvm_gem_name"
+ __rvm_run "gems" $rvm_ruby_home/bin/gem install $rvm_gem_name --no-rdoc --no-ri -q
+ done
+
+ __rvm_log "info" "Installation of gems for $rvm_ruby_package_name is complete."
+
+ binary=rake
+ if [ -x $rvm_ruby_src_path/bin/$binary ] ; then
+ if [ "$rvm_ruby_src_path" != "$rvm_ruby_home" ] ; then
+ cp $rvm_ruby_src_path/bin/$binary $rvm_ruby_home/bin/$binary
+ fi
+ # TODO: Account for rubygem installed rake vs system rake
+ string="ENV['GEM_HOME']=ENV['GEM_HOME'] || '$rvm_gem_home'\nENV['GEM_PATH']=ENV['GEM_PATH'] || '$rvm_gem_home'\nENV['PATH']='$rvm_ruby_home/bin:$rvm_gem_home/bin:' + ENV['PATH']"
+ awk "NR==2 {print \"$string\"} {print}" $rvm_ruby_home/bin/$binary > $rvm_ruby_home/bin/$binary.new
+ mv $rvm_ruby_home/bin/$binary.new $rvm_ruby_home/bin/$binary
+ chmod +x $rvm_ruby_home/bin/$binary
+ else
+ __rvm_log "warn" "$rvm_gem_home/bin/$binary is missing"
+ fi
+ unset binary
+}
+
+function __rvm_rubygems_install {
+ __rvm_log "info" "\tInstalling rubygems dedicated to $rvm_ruby_package_name..."
+ rvm_gem_package_name="rubygems-1.3.5"
+ rvm_gem_url="http://rubyforge.org/frs/download.php/60718/$rvm_gem_package_name.tgz"
+ if [ -d $rvm_source_path/$rvm_gem_package_name ] ; then
+ cd $rvm_source_path/$rvm_gem_package_name
+ else
+ __rvm_fetch $rvm_gem_url
+ mkdir -p $rvm_source_path/$rvm_gem_package_name
+ __rvm_run "rubygems.extract" tar zxf $rvm_archives_path/$rvm_gem_package_name.tgz -C $rvm_source_path
+ fi
+ # Well this is fun... fix nil error on require_paths:
+ sed -i.orig "s/require_paths\.join/require_paths.to_a.join/" $rvm_source_path/$rvm_gem_package_name/lib/rubygems/gem_path_searcher.rb
+ rm -f $rvm_source_path/$rvm_gem_package_name/lib/rubygems/gem_path_searcher.rb.orig
+ __rvm_run "rubygems.install" GEM_HOME=$rvm_gem_home $rvm_ruby_home/bin/ruby $rvm_source_path/$rvm_gem_package_name/setup.rb
+ status=$?
+ if [ $status -eq 0 ] ; then
+ __rvm_log "info" "Installation of rubygems $rvm_ruby_package_name completed successfully."
+ fi
+ return $status
+}
+