scripts/rvm-ruby-installer in rvm-0.0.38 vs scripts/rvm-ruby-installer in rvm-0.0.39

- old
+ new

@@ -18,31 +18,31 @@ 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 + if [ $? -gt 0 ] ; then status=$? ; return $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 + if [ $? -gt 0 ] ; then status=$? ; return $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 + if [ $? -gt 0 ] ; then status=$? ; return $status ; fi else git checkout ${rvm_ruby_rev:-HEAD} - if [ $status -eq 0 ] ; then status=$? ; fi + if [ $? -gt 0 ] ; then status=$? ; return $status ; fi fi else git clone --depth 1 $rvm_ruby_repo_url $rvm_ruby_src_path - if [ $status -eq 0 ] ; then status=$? ; fi + if [ $? -gt 0 ] ; then status=$? ; return $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 @@ -65,68 +65,66 @@ 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 + if [ $? -gt 0 ] ; then status=$? ; return $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 > /dev/null ; return 1 ; fi + if [ $? -gt 0 ] ; then status=$? ; __rvm_log "error" "There was an error, please check $rvm_ruby_log_path/*.error.log" ; popd > /dev/null ; return $status ; fi + # Readline + if [ ! -d $rvm_path/usr/include/readline ] ; then __rvm_readline_install ; 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 + if [ $? -gt 0 ] ; then __rvm_log "fail" "rvm expects autoconf" ; status=$? ; return $status ; fi __rvm_run "autoconf" $rvm_autoconf - if [ $status -eq 0 ] ; then status=$? ; fi + if [ $? -gt 0 ] ; then status=$? ; return $status ; fi 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 + if [ -d $rvm_path/usr/include/readline/ ] ; then + __rvm_run "configure" "./configure --prefix=$rvm_ruby_home $rvm_ruby_configure --with-readline-dir=$rvm_path/usr/include/readline/" + else + __rvm_run "configure" "./configure --prefix=$rvm_ruby_home $rvm_ruby_configure" + fi + if [ $? -gt 0 ] ; then status=$? ; return $status ; fi else - __rvm_log "warn" "\tSkipping configure step, 'configure' script does not exist, did autoconf not run successfully?" + __rvm_log "error" "\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_make_flags else __rvm_run "make" $rvm_ruby_make fi - if [ $status -eq 0 ] ; then status=$? ; fi + if [ $? -gt 0 ] ; then status=$? ; return $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/* + if [ $? -gt 0 ] ; then status=$? ; return $status ; fi + __rvm_run "chmod.bin" chmod +x $rvm_ruby_home/bin/* __rvm_bin_script __rvm_log "info" "Installation of $rvm_ruby_package_name is complete." GEM_HOME="$rvm_gem_home" ; export GEM_HOME GEM_PATH="$rvm_gem_home" ; export GEM_PATH - echo $rvm_ruby_vesion | grep '^1\.9' > /dev/null - if [ $? -gt 0 ] ; then - __rvm_rubygems_install - if [ $status -eq 0 ] ; then status=$? ; fi - else - 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 + __rvm_rubygems_setup + popd > /dev/null __rvm_post_install } @@ -193,27 +191,12 @@ 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/* __rvm_bin_script + __rvm_rubygems_setup - __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 "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 > /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 @@ -293,11 +276,11 @@ __rvm_run "gems" $rvm_ruby_home/bin/jgem install $rvm_gem_name --no-rdoc --no-ri -q done ;; ruby) - if [ -z "rvm_ruby_configure" ] ; then rvm_ruby_configure="--enable-shared=true" ; fi + if [ -z "rvm_ruby_configure" ] ; then rvm_ruby_configure="--enable-shared=true --enable-pthread=true " ; fi __rvm_install-source $* ;; default) __rvm_log "fail" "please specify a ruby implementation to install." @@ -375,27 +358,39 @@ __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 +function __rvm_rubygems_setup { + + if [ "`echo $rvm_ruby_version | awk '{print substr($1, 0, 3)}'`" != "1.9" ] ; then + __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: + # Q: Is this necessary any longer? + #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_path 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 + if [ $status -eq 0 ] ; then status=$? ; fi 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 + # 1.9 has it's own built gem command, let's adjust the shebang line. + 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 + __rvm_run "rubygems.update" $rvm_ruby_home/bin/gem update --system 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 }