Skip to content

Instantly share code, notes, and snippets.

@TauPan
Created December 13, 2011 21:02
Show Gist options
  • Save TauPan/1473874 to your computer and use it in GitHub Desktop.
Save TauPan/1473874 to your computer and use it in GitHub Desktop.
rvm applying patches twice

I have the problem that rvm tries to apply patches multiple times, succeeds and thus totally breaks ruby source (e.g. the gcdata patch gets applied multiple times, successfully and in the ensuing build, miniruby (or wossname?) segfaults). It seems that it's relevant if I interrupted a previous rvm install with Ctrl-C.

The second time I compile, rvm will apply all previous patches twice, sometimes three times.

The only thing that works is rvm implode and get all patches right the first time.

(What also seems to help is not pressing ctrl-c while rvm is building.)

(rvm cleanup all does not help)

(latest head, with zsh and at least I've verified the zsh configuration multiple times (also on this channel))

[2011-12-13 22:17:57] make
gcc -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wno-long-long -fPIC -I. -I.ext/include/x86_64-linux -I./include -I. -DRUBY_EXPORT -o gc.o -c gc.c
gc.c:3196:46: error: expected ‘)’ before string constant
gc.c:3197:46: error: expected ‘)’ before string constant
make: *** [gc.o] Fehler 1
friedel@abrasax:~> $SHELL --version
zsh 4.3.12 (x86_64-unknown-linux-gnu)
friedel@abrasax:~> rvm -v
rvm 1.10.0 by Wayne E. Seguin ([email protected]) [https://rvm.beginrescueend.com/]
friedel@abrasax:~> rvm install 1.9.2 --patch gcdata
Installing Ruby from source to: /home/friedel/.rvm/rubies/ruby-1.9.2-p290, this may take a while depending on your cpu(s)...
ruby-1.9.2-p290 - #fetching
ruby-1.9.2-p290 - #downloading ruby-1.9.2-p290, this may take a while depending on your connection...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 8604k 100 8604k 0 0 136k 0 0:01:03 0:01:03 --:--:-- 76937
100 8604k 100 8604k 0 0 135k 0 0:01:03 0:01:03 --:--:-- 135kruby-1.9.2-p290 - #extracting ruby-1.9.2-p290 to /home/friedel/.rvm/src/ruby-1.9.2-p290
ruby-1.9.2-p290 - #extracted to /home/friedel/.rvm/src/ruby-1.9.2-p290
Applying patch 'gcdata' (located at /home/friedel/.rvm/patches/ruby/1.9.2/p290/gcdata.patch)
Fetching yaml-0.1.4.tar.gz to /home/friedel/.rvm/archives
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 460k 100 460k 0 0 90277 0 0:00:05 0:00:05 --:--:-- 178k
Extracting yaml-0.1.4.tar.gz to /home/friedel/.rvm/src
Prepare yaml in /home/friedel/.rvm/src/yaml-0.1.4.
Configuring yaml in /home/friedel/.rvm/src/yaml-0.1.4.
Compiling yaml in /home/friedel/.rvm/src/yaml-0.1.4.
Installing yaml to /home/friedel/.rvm/usr
ruby-1.9.2-p290 - #configuring
ruby-1.9.2-p290 - #compiling
ruby-1.9.2-p290 - #installing
Retrieving rubygems-1.8.10
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 243k 100 243k 0 0 384k 0 --:--:-- --:--:-- --:--:-- 696k
Extracting rubygems-1.8.10 ...
Removing old Rubygems files...
Installing rubygems-1.8.10 for ruby-1.9.2-p290 ...
Installation of rubygems completed successfully.
ruby-1.9.2-p290 - adjusting #shebangs for (gem irb erb ri rdoc testrb rake).
ruby-1.9.2-p290 - #importing default gemsets (/home/friedel/.rvm/gemsets/)
Install of ruby-1.9.2-p290 - #complete
friedel@abrasax:~> rvm install 1.9.2 --patch gcdata
Installing Ruby from source to: /home/friedel/.rvm/rubies/ruby-1.9.2-p290, this may take a while depending on your cpu(s)...
ruby-1.9.2-p290 - #fetching
ruby-1.9.2-p290 - #extracted to /home/friedel/.rvm/src/ruby-1.9.2-p290 (already extracted)
Applying patch 'gcdata' (located at /home/friedel/.rvm/patches/ruby/1.9.2/p290/gcdata.patch)
ERROR: Error running 'patch -F 25 -p1 -N -f <"/home/friedel/.rvm/patches/ruby/1.9.2/p290/gcdata.patch"', please read /home/friedel/.rvm/log/ruby-1.9.2-p290/patch.apply.gcdata.log
Applying patch 'gcdata' (located at /home/friedel/.rvm/patches/ruby/1.9.2/p290/gcdata.patch)
ERROR: Error running 'patch -F 25 -p1 -N -f <"/home/friedel/.rvm/patches/ruby/1.9.2/p290/gcdata.patch"', please read /home/friedel/.rvm/log/ruby-1.9.2-p290/patch.apply.gcdata.log
Fetching yaml-0.1.4.tar.gz to /home/friedel/.rvm/archives
Extracting yaml-0.1.4.tar.gz to /home/friedel/.rvm/src
Prepare yaml in /home/friedel/.rvm/src/yaml-0.1.4.
Configuring yaml in /home/friedel/.rvm/src/yaml-0.1.4.
Compiling yaml in /home/friedel/.rvm/src/yaml-0.1.4.
Installing yaml to /home/friedel/.rvm/usr
ruby-1.9.2-p290 - #configuring
ruby-1.9.2-p290 - #compiling
ERROR: Error running 'make ', please read /home/friedel/.rvm/log/ruby-1.9.2-p290/make.log
ERROR: There has been an error while running make. Halting the installation.
+__rvm_parse_args:698> [[ -n 4.3.12 ]]
+__rvm_parse_args:727> [[ -z reload ]]
+__rvm_parse_args:729> [[ 0 -eq 1 || -n '' ]]
+__rvm_parse_args:20> [[ -n reload ]]
+__rvm_parse_args:22> rvm_token=reload
+__rvm_parse_args:24> (( 0 > 0 ))
+__rvm_parse_args:29> next_token=''
+__rvm_parse_args:32> case reload ([[:alnum:]]*|@*)
+__rvm_parse_args:36> case reload (use)
+__rvm_parse_args:36> case reload (install|uninstall|reinstall|try_install)
+__rvm_parse_args:36> case reload (gemset)
+__rvm_parse_args:36> case reload (gemdir|gempath|gemhome)
+__rvm_parse_args:36> case reload (pkg)
+__rvm_parse_args:36> case reload (system|default)
+__rvm_parse_args:36> case reload (do|exec|gem|rake|ruby)
+__rvm_parse_args:36> case reload (fetch|version|srcdir|reset|debug|reload|update|monitor|notes|implode|seppuku|question|answer|env|unexport|requirements)
+__rvm_parse_args:202> rvm_action=reload
+__rvm_parse_args:727> [[ -z reload ]]
+__rvm_parse_args:729> [[ 0 -eq 1 || -n '' ]]
+__rvm_parse_args:20> [[ -n '' ]]
+__rvm_parse_args:733> [[ 0 -gt 0 ]]
+__rvm_parse_args:735> [[ -n '' ]]
+/home/friedel/.rvm/scripts/base:11> [[ -z 4.3.12 ]]
+/home/friedel/.rvm/scripts/base:26> export __array_start rvm_path
+/home/friedel/.rvm/scripts/base:31> [[ -n 4.3.12 ]]
+/home/friedel/.rvm/scripts/base:33> __array_start=1
+/home/friedel/.rvm/scripts/base:38> (( 0 == 0 ))
+/home/friedel/.rvm/scripts/base:40> : rvm_stored_umask:022
+/home/friedel/.rvm/scripts/base:41> rvmrc=/etc/rvmrc
+/home/friedel/.rvm/scripts/base:43> [[ -f /etc/rvmrc ]]
+/home/friedel/.rvm/scripts/base:41> rvmrc=/home/friedel/.rvmrc
+/home/friedel/.rvm/scripts/base:43> [[ -f /home/friedel/.rvmrc ]]
+/home/friedel/.rvm/scripts/base:66> [[ -z /home/friedel/.rvm ]]
+/home/friedel/.rvm/scripts/base:75> export rvm_path
+/home/friedel/.rvm/scripts/base:77> true /home/friedel/.rvm/scripts
+/home/friedel/.rvm/scripts/base:80> source /home/friedel/.rvm/scripts/initialize
+/home/friedel/.rvm/scripts/initialize:3> : rvm_trace_flag:1
+/home/friedel/.rvm/scripts/initialize:4> (( rvm_trace_flag > 0 ))
+/home/friedel/.rvm/scripts/initialize:6> set -o xtrace
+/home/friedel/.rvm/scripts/initialize:9> [[ -z 4.3.12 ]]
+/home/friedel/.rvm/scripts/initialize:26> [[ -n '' ]]
+/home/friedel/.rvm/scripts/initialize:29> [[ -n 4.3.12 ]]
+/home/friedel/.rvm/scripts/initialize:31> setopt extendedglob
+/home/friedel/.rvm/scripts/initialize:32> setopt kshglob
+/home/friedel/.rvm/scripts/initialize:33> setopt no_glob_subst
+/home/friedel/.rvm/scripts/initialize:38> export __rvm_env_loaded
+/home/friedel/.rvm/scripts/initialize:40> : __rvm_env_loaded:2:
+/home/friedel/.rvm/scripts/initialize:42> : __rvm_env_loaded:3:
+/home/friedel/.rvm/scripts/initialize:45> [[ -z /home/friedel/.rvm/tmp ]]
+/home/friedel/.rvm/scripts/initialize:45> (( __rvm_env_loaded == 1 ))
+/home/friedel/.rvm/scripts/base:82> case (*[[:space:]]selector[[:space:]]*)
+/home/friedel/.rvm/scripts/base:82> case (*)
+/home/friedel/.rvm/scripts/base:87> source /home/friedel/.rvm/scripts/selector
+/home/friedel/.rvm/scripts/base:91> declare -a scripts
+/home/friedel/.rvm/scripts/base:92> scripts=( logging utility init cleanup env rvmrc install environment gemset db bundler )
+/home/friedel/.rvm/scripts/base:95> entry=logging
+/home/friedel/.rvm/scripts/base:96> source /home/friedel/.rvm/scripts/functions/logging
+/home/friedel/.rvm/scripts/functions/logging:6> [[ -t 1 ]]
+/home/friedel/.rvm/scripts/base:95> entry=utility
+/home/friedel/.rvm/scripts/base:96> source /home/friedel/.rvm/scripts/functions/utility
+/home/friedel/.rvm/scripts/base:95> entry=init
+/home/friedel/.rvm/scripts/base:96> source /home/friedel/.rvm/scripts/functions/init
+/home/friedel/.rvm/scripts/base:95> entry=cleanup
+/home/friedel/.rvm/scripts/base:96> source /home/friedel/.rvm/scripts/functions/cleanup
+/home/friedel/.rvm/scripts/base:95> entry=env
+/home/friedel/.rvm/scripts/base:96> source /home/friedel/.rvm/scripts/functions/env
+/home/friedel/.rvm/scripts/base:95> entry=rvmrc
+/home/friedel/.rvm/scripts/base:96> source /home/friedel/.rvm/scripts/functions/rvmrc
+/home/friedel/.rvm/scripts/functions/rvmrc:3> export escape_flag _first _second
+/home/friedel/.rvm/scripts/functions/rvmrc:4> escape_flag=1
+/home/friedel/.rvm/scripts/functions/rvmrc:5> _first=1
+/home/friedel/.rvm/scripts/functions/rvmrc:6> _second=2
+/home/friedel/.rvm/scripts/base:95> entry=install
+/home/friedel/.rvm/scripts/base:96> source /home/friedel/.rvm/scripts/functions/install
+/home/friedel/.rvm/scripts/base:95> entry=environment
+/home/friedel/.rvm/scripts/base:96> source /home/friedel/.rvm/scripts/functions/environment
+/home/friedel/.rvm/scripts/base:95> entry=gemset
+/home/friedel/.rvm/scripts/base:96> source /home/friedel/.rvm/scripts/functions/gemset
+/home/friedel/.rvm/scripts/base:95> entry=db
+/home/friedel/.rvm/scripts/base:96> source /home/friedel/.rvm/scripts/functions/db
+/home/friedel/.rvm/scripts/base:95> entry=bundler
+/home/friedel/.rvm/scripts/base:96> source /home/friedel/.rvm/scripts/functions/bundler
+/home/friedel/.rvm/scripts/base:98> unset scripts entry rvm_base_except
+/home/friedel/.rvm/scripts/base:100> [[ ! -t 0 ]]
+/home/friedel/.rvm/scripts/rvm:95> script=version
+/home/friedel/.rvm/scripts/rvm:97> [[ -f /home/friedel/.rvm/scripts/version ]]
+/home/friedel/.rvm/scripts/rvm:99> source /home/friedel/.rvm/scripts/version
+/home/friedel/.rvm/scripts/rvm:95> script=selector
+/home/friedel/.rvm/scripts/rvm:97> [[ -f /home/friedel/.rvm/scripts/selector ]]
+/home/friedel/.rvm/scripts/rvm:99> source /home/friedel/.rvm/scripts/selector
+/home/friedel/.rvm/scripts/rvm:95> script=cd
+/home/friedel/.rvm/scripts/rvm:97> [[ -f /home/friedel/.rvm/scripts/cd ]]
+/home/friedel/.rvm/scripts/rvm:99> source /home/friedel/.rvm/scripts/cd
+/home/friedel/.rvm/scripts/cd:5> (( 1 > 0 ))
+/home/friedel/.rvm/scripts/cd:17> [[ -n 4.3.12 ]]
+/home/friedel/.rvm/scripts/cd:19> autoload is-at-least
+/home/friedel/.rvm/scripts/cd:20> is-at-least 4.3.4
+/home/friedel/.rvm/scripts/cd:22> typeset -gxa chpwd_functions
+/home/friedel/.rvm/scripts/cd:23> chpwd_functions=( __rvm_do_with_env_before __rvm_project_rvmrc __rvm_after_cd __rvm_do_with_env_after __rvm_do_with_env_before __rvm_project_rvmrc __rvm_after_cd __rvm_do_with_env_after __rvm_do_with_env_before __rvm_project_rvmrc __rvm_after_cd __rvm_do_with_env_after __rvm_do_with_env_before __rvm_project_rvmrc __rvm_after_cd __rvm_do_with_env_after __rvm_do_with_env_before __rvm_project_rvmrc __rvm_after_cd __rvm_do_with_env_after __rvm_do_with_env_before __rvm_project_rvmrc __rvm_after_cd __rvm_do_with_env_after __rvm_do_with_env_before __rvm_project_rvmrc __rvm_after_cd __rvm_do_with_env_after __rvm_do_with_env_before __rvm_project_rvmrc __rvm_after_cd __rvm_do_with_env_after __rvm_do_with_env_before __rvm_project_rvmrc __rvm_after_cd __rvm_do_with_env_after )
+/home/friedel/.rvm/scripts/rvm:95> script=cli
+/home/friedel/.rvm/scripts/rvm:97> [[ -f /home/friedel/.rvm/scripts/cli ]]
+/home/friedel/.rvm/scripts/rvm:99> source /home/friedel/.rvm/scripts/cli
+/home/friedel/.rvm/scripts/rvm:95> script=override_gem
+/home/friedel/.rvm/scripts/rvm:97> [[ -f /home/friedel/.rvm/scripts/override_gem ]]
+/home/friedel/.rvm/scripts/rvm:99> source /home/friedel/.rvm/scripts/override_gem
+/home/friedel/.rvm/scripts/override_gem:3> [[ 0 -eq 0 ]]
+/home/friedel/.rvm/scripts/rvm:106> __rvm_setup
+__rvm_setup:4> (( __rvm_env_loaded != 1 ))
+__rvm_setup:6> return 0
+/home/friedel/.rvm/scripts/rvm:108> rvm_version=+/home/friedel/.rvm/scripts/rvm:108> cat /home/friedel/.rvm/VERSION
+/home/friedel/.rvm/scripts/rvm:108> rvm_version=1.10.0
+/home/friedel/.rvm/scripts/rvm:110> export 'rvm_version=1.10.0'
+/home/friedel/.rvm/scripts/rvm:112> alias 'rvm-restart=rvm_reload_flag=1 source '\''/home/friedel/.rvm/scripts/rvm'\'
+/home/friedel/.rvm/scripts/rvm:114> command -v ruby
+/home/friedel/.rvm/scripts/rvm:115> command -v ruby
+/home/friedel/.rvm/scripts/rvm:115> grep -v rvm
+/home/friedel/.rvm/scripts/rvm:118> [[ -s /home/friedel/.rvm/environments/default ]]
+/home/friedel/.rvm/scripts/rvm:125> __rvm_conditionally_add_bin_path
+__rvm_conditionally_add_bin_path:2> printf '/home/friedel/bin /home/friedel/local/bin /usr/bin/mh /usr/local/bin /usr/bin /bin /usr/bin/X11 /usr/games /sbin /usr/sbin /usr/X11R6/lib/xscreensaver /home/friedel/opt/programs/android-sdk-linux_x86-1.6_r1/tools /var/lib/gems/1.9.1/bin . /home/friedel/.rvm/bin'
+__rvm_conditionally_add_bin_path:2> grep -vF /home/friedel/.rvm/bin
+__rvm_conditionally_add_bin_path:16> return 0
+/home/friedel/.rvm/scripts/rvm:127> (( 1 == 1 ))
+/home/friedel/.rvm/scripts/rvm:129> printf 'RVM reloaded!\n'
RVM reloaded!
+/home/friedel/.rvm/scripts/rvm:132> rvm_loaded_flag=1
+/home/friedel/.rvm/scripts/rvm:133> rvm_reload_flag=0
+/home/friedel/.rvm/scripts/rvm:137> unset rvm_prefix_needs_trailing_slash rvm_rc_files rvm_gems_cache_path rvm_gems_path rvm_project_rvmrc_default rvm_gemset_separator
+/home/friedel/.rvm/scripts/rvm:144> [[ -t 0 && 1 -gt 0 ]]
+/home/friedel/.rvm/scripts/rvm:145> [[ ! " ${FUNCNAME[@]} " -regex-match " __rvm_project_rvmrc " ]]
+/home/friedel/.rvm/scripts/rvm:146> command -v __rvm_project_rvmrc
+/home/friedel/.rvm/scripts/rvm:150> rvm_promptless=1 +/home/friedel/.rvm/scripts/rvm:150> __rvm_project_rvmrc
+__rvm_project_rvmrc:2> export __rvm_project_rvmrc_lock
+__rvm_project_rvmrc:3> : __rvm_project_rvmrc_lock:0
+__rvm_project_rvmrc:4> : __rvm_project_rvmrc_lock:1
+__rvm_project_rvmrc:5> (( __rvm_project_rvmrc_lock > 1 ))
+__rvm_project_rvmrc:9> local working_dir rvm_trustworthiness_result
+__rvm_project_rvmrc:12> working_dir=/home/friedel
+__rvm_project_rvmrc:14> :
+__rvm_project_rvmrc:16> [[ -z /home/friedel || /home/friedel == /home/friedel ]]
+__rvm_project_rvmrc:18> [[ -n '' ]]
+__rvm_project_rvmrc:30> break
+__rvm_project_rvmrc:57> unset __rvm_project_rvmrc_lock
+__rvm_project_rvmrc:58> return 0
+/home/friedel/.rvm/scripts/rvm:153> __rvm_teardown
+__rvm_teardown:2> [[ -d /home/friedel/.rvm/tmp/6050 ]]
+__rvm_teardown:7> export __rvm_env_loaded
+__rvm_teardown:9> : __rvm_env_loaded:3:
+__rvm_teardown:10> : __rvm_env_loaded:3:
+__rvm_teardown:12> : __rvm_env_loaded:2:
+__rvm_teardown:14> [[ -z /home/friedel/.rvm/tmp ]]
+__rvm_teardown:14> (( __rvm_env_loaded > 0 ))
+__rvm_teardown:16> return 0
+rvm:264> unset rvm_reload_flag
+rvm:267> __rvm_project_rvmrc
+__rvm_project_rvmrc:2> export __rvm_project_rvmrc_lock
+__rvm_project_rvmrc:3> : __rvm_project_rvmrc_lock:0
+__rvm_project_rvmrc:4> : __rvm_project_rvmrc_lock:1
+__rvm_project_rvmrc:5> (( __rvm_project_rvmrc_lock > 1 ))
+__rvm_project_rvmrc:9> local working_dir rvm_trustworthiness_result
+__rvm_project_rvmrc:12> working_dir=/home/friedel
+__rvm_project_rvmrc:14> :
+__rvm_project_rvmrc:16> [[ -z /home/friedel || /home/friedel == /home/friedel ]]
+__rvm_project_rvmrc:18> [[ -n '' ]]
+__rvm_project_rvmrc:30> break
+__rvm_project_rvmrc:57> unset __rvm_project_rvmrc_lock
+__rvm_project_rvmrc:58> return 0
+rvm:271> __rvm_teardown
+__rvm_teardown:2> [[ -d /home/friedel/.rvm/tmp/6050 ]]
+__rvm_teardown:7> export __rvm_env_loaded
+__rvm_teardown:9> : __rvm_env_loaded:2:
+__rvm_teardown:10> : __rvm_env_loaded:2:
+__rvm_teardown:12> : __rvm_env_loaded:1:
+__rvm_teardown:14> [[ -z /home/friedel/.rvm/tmp ]]
+__rvm_teardown:14> (( __rvm_env_loaded > 0 ))
+__rvm_teardown:16> return 0
+rvm:273> : rvm_trace_flag:1
+rvm:274> (( rvm_trace_flag > 0 ))
+rvm:276> set +o verbose
+rvm:277> set +o xtrace
@drogus
Copy link

drogus commented Feb 28, 2012

Not sure if you found a fix, but generally you can just open a new shell and it should not apply previous patches, no need to implode

@TauPan
Copy link
Author

TauPan commented Feb 29, 2012

The nice folks on #rvm @freenode helped me figure out that rvm settings are re-applied in a new shell (which was the context of this gist).

My irc logs indicate that the teardown handler wasn't called on Ctrl-C, but I'm not sure if this was fixed (I haven't tried to install a patched ruby since).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment