From: "vo.x (Vit Ondruch)" Date: 2012-12-11T23:51:25+09:00 Subject: [ruby-core:50762] [ruby-trunk - Bug #7541] Can't use Ruby 2.0.0 as as BASERUBY Issue #7541 has been updated by vo.x (Vit Ondruch). naruse (Yui NARUSE) wrote: > Those patch don't fit this issue because ruby 2.0 still can't be use for BASERUBY of Ruby 1.9.3 or prior. I still don't understand what is the issue, why older ruby works and 2.0 does not work. So keep the '-I.' and add '--disable-gems' could fix the issues as well. > This is an issue of rubygems. I would not blame RubyGems. Yes, they are doing more then they used to do, but requiring wrong rbconfig is definitely not issue of RubyGems, but issue of the build configuration. I would say that change in RubyGems just made the issue apparent, so fix in RubyGems will be fix in wrong place IMO. ---------------------------------------- Bug #7541: Can't use Ruby 2.0.0 as as BASERUBY https://bugs.ruby-lang.org/issues/7541#change-34613 Author: vo.x (Vit Ondruch) Status: Assigned Priority: Normal Assignee: drbrain (Eric Hodel) Category: Target version: ruby -v: ruby 2.0.0dev (2012-12-04 trunk 38184) [x86_64-linux] =begin I am trying to prepare source archive using tool/make-snapshot tmp With Ruby 2.0.0 rev38184 as as BASERUBY, however with no luck: snip ... extracting ripper.y from ../../parse.y ruby ../../tool/id2token.rb --vpath=../.. id.h ../../parse.y > ripper.tmp.y ruby ./tools/preproc.rb ripper.tmp.y --output=ripper.y rm -f ripper.tmp.y compiling compiler ripper.y bison -t -v -oy.tab.c ripper.y sed -f ../../tool/ytab.sed -e "/^#/s!y\.tab\.c!ripper.c!" y.tab.c > ripper.c generating eventids1.c from ../../parse.y ruby ./tools/generate.rb --mode=eventids1 --ids1src=../../parse.y --output=eventids1.c generating eventids2table.c from ./eventids2.c ruby ./tools/generate.rb --mode=eventids2table --ids2src=./eventids2.c --output=eventids2table.c make[1]: Leaving directory `/tmp/ruby-snapshot20121210-11545-1p4tbw0/ruby-2.0.0-r38296/ext/ripper' generating miniprelude.c ruby -I. ./tool/compile_prelude.rb ./prelude.rb miniprelude.c /usr/share/rubygems/rubygems/defaults.rb:43:in `join': can't convert nil into String (TypeError) from /usr/share/rubygems/rubygems/defaults.rb:43:in `default_dir' from /usr/share/rubygems/rubygems/specification.rb:621:in `default_specifications_dir' from /usr/share/rubygems/rubygems/specification.rb:637:in `each_default' from /usr/share/rubygems/rubygems/specification.rb:678:in `load_defaults' from /usr/share/rubygems/rubygems.rb:1088:in `' from :1:in `require' from :1:in `' make: *** [miniprelude.c] Error 1 prerequisites failed It seems that the `ruby -I. ./tool/compile_prelude.rb ./prelude.rb miniprelude.c` command is executed from the temporary directory with fresh sources. However, since there is added current directory '.' into the load path, the rbconfig.rb available there gets precedence instead of the rbconfig.rb of BASERUBY. Unfortunately, that rbconfig.rb contains just some rubbish. The attached patch might fix the issue, but I am not sure what it breaks, since the original commit message introducing this flag (r14271) is not overly descriptive :/ -- http://bugs.ruby-lang.org/