Forum: Ruby-core [ruby-trunk - Bug #7541][Open] Can't use Ruby 2.0.0 as as BASERUBY

Posted by Vít Ondruch (vo_x)
on 2012-12-10 16:05
(Received via mailing list)
Issue #7541 has been reported by vo.x (Vit Ondruch).

----------------------------------------
Bug #7541: Can't use Ruby 2.0.0 as as BASERUBY
https://bugs.ruby-lang.org/issues/7541

Author: vo.x (Vit Ondruch)
Status: Open
Priority: Normal
Assignee:
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 `<top (required)>'
   from <internal:gem_prelude>:1:in `require'
   from <internal:gem_prelude>:1:in `<compiled>'
 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 :/
Posted by Vít Ondruch (vo_x)
on 2012-12-10 16:11
(Received via mailing list)
Issue #7541 has been updated by vo.x (Vit Ondruch).


Alternatively, there could be used --disable-gems I think.
----------------------------------------
Bug #7541: Can't use Ruby 2.0.0 as as BASERUBY
https://bugs.ruby-lang.org/issues/7541#change-34589

Author: vo.x (Vit Ondruch)
Status: Open
Priority: Normal
Assignee:
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 `<top (required)>'
   from <internal:gem_prelude>:1:in `require'
   from <internal:gem_prelude>:1:in `<compiled>'
 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 :/
Posted by naruse (Yui NARUSE) (Guest)
on 2012-12-11 12:42
(Received via mailing list)
Issue #7541 has been updated by naruse (Yui NARUSE).

Status changed from Closed to Assigned
Assignee set to drbrain (Eric Hodel)
% Done changed from 100 to 0

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.
This is an issue of rubygems.
----------------------------------------
Bug #7541: Can't use Ruby 2.0.0 as as BASERUBY
https://bugs.ruby-lang.org/issues/7541#change-34610

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 `<top (required)>'
   from <internal:gem_prelude>:1:in `require'
   from <internal:gem_prelude>:1:in `<compiled>'
 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 :/
Posted by Vít Ondruch (vo_x)
on 2012-12-11 15:52
(Received via mailing list)
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 `<top (required)>'
   from <internal:gem_prelude>:1:in `require'
   from <internal:gem_prelude>:1:in `<compiled>'
 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 :/
Posted by naruse (Yui NARUSE) (Guest)
on 2012-12-11 16:32
(Received via mailing list)
Issue #7541 has been updated by naruse (Yui NARUSE).


vo.x (Vit Ondruch) wrote:
> 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.

RubyGems uses the information in rbconfig.rb like 
RbConfig::CONFIG["libdir"].
Previous gems works even if RbConfig::CONFIG["libdir"] is nil,
but the one bundled with 2.0 raises exception.
So 2.0 doesn't work.

-I is not acceptable because it doesn't load correct rbconfig.rb.
--disable-gems is not acceptable because it doesn't work for 1.8.
----------------------------------------
Bug #7541: Can't use Ruby 2.0.0 as as BASERUBY
https://bugs.ruby-lang.org/issues/7541#change-34617

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 `<top (required)>'
   from <internal:gem_prelude>:1:in `require'
   from <internal:gem_prelude>:1:in `<compiled>'
 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 :/
Posted by naruse (Yui NARUSE) (Guest)
on 2012-12-11 17:19
(Received via mailing list)
Issue #7541 has been updated by naruse (Yui NARUSE).

Status changed from Closed to Assigned


----------------------------------------
Bug #7541: Can't use Ruby 2.0.0 as as BASERUBY
https://bugs.ruby-lang.org/issues/7541#change-34621

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 `<top (required)>'
   from <internal:gem_prelude>:1:in `require'
   from <internal:gem_prelude>:1:in `<compiled>'
 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 :/
Posted by Vít Ondruch (vo_x)
on 2012-12-11 17:26
(Received via mailing list)
Issue #7541 has been updated by vo.x (Vit Ondruch).


naruse (Yui NARUSE) wrote:
> -I is not acceptable because it doesn't load correct rbconfig.rb.

Ah, so the presumably wrong rbconfig.rb is correct one. Wouldn't be 
safer to not relay on rbconfig at all and take the information from some 
other place instead, e.g. config.status?

----------------------------------------
Bug #7541: Can't use Ruby 2.0.0 as as BASERUBY
https://bugs.ruby-lang.org/issues/7541#change-34622

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 `<top (required)>'
   from <internal:gem_prelude>:1:in `require'
   from <internal:gem_prelude>:1:in `<compiled>'
 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 :/
Posted by naruse (Yui NARUSE) (Guest)
on 2012-12-12 06:57
(Received via mailing list)
Issue #7541 has been updated by naruse (Yui NARUSE).


vo.x (Vit Ondruch) wrote:
> naruse (Yui NARUSE) wrote:
> > -I is not acceptable because it doesn't load correct rbconfig.rb.
>
> Ah, so the presumably wrong rbconfig.rb is correct one.

Yes, such incomplete rbconfig.rb is also a correct one to make a 
package.

> Wouldn't be safer to not relay on rbconfig at all and take the information from 
some other place instead, e.g. config.status?

Yeah, it can be, and simply it can take info from reading and parsing 
rbconfig.rb instead of loading.
But for example ruby 1.9.3's build process can't be changed, so this 
must be fixed by ruby 2.0's side.
----------------------------------------
Bug #7541: Can't use Ruby 2.0.0 as as BASERUBY
https://bugs.ruby-lang.org/issues/7541#change-34649

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 `<top (required)>'
   from <internal:gem_prelude>:1:in `require'
   from <internal:gem_prelude>:1:in `<compiled>'
 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 :/
Posted by drbrain (Eric Hodel) (Guest)
on 2013-01-25 23:15
(Received via mailing list)
Issue #7541 has been updated by drbrain (Eric Hodel).

Category set to lib
Target version set to next minor

This appears to be a chicken and egg problem, but I don't have enough 
information to know how to solve it.

Should RubyGems know not to load when run as BASERUBY? How should 
RubyGems determine this?
----------------------------------------
Bug #7541: Can't use Ruby 2.0.0 as as BASERUBY
https://bugs.ruby-lang.org/issues/7541#change-35665

Author: vo.x (Vit Ondruch)
Status: Assigned
Priority: Normal
Assignee: drbrain (Eric Hodel)
Category: lib
Target version: next minor
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 `<top (required)>'
   from <internal:gem_prelude>:1:in `require'
   from <internal:gem_prelude>:1:in `<compiled>'
 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 :/
Posted by Vít Ondruch (vo_x)
on 2013-02-13 16:49
(Received via mailing list)
Issue #7541 has been updated by vo.x (Vit Ondruch).

Subject changed from Can't use Ruby 2.0.0 as as BASERUBY to Can&#x27;t 
use Ruby 2.0.0 as as BASERUBY

=begin
I was able to build ruby:

 $ tool/make-snapshot tmp branches/ruby_2_0_0

using

 ruby 2.0.0dev (2013-02-08 trunk 39161) [x86_64-linux]

So this is probably resolved. Can anybody confirm?
=end

----------------------------------------
Bug #7541: Can&#x27;t use Ruby 2.0.0 as as BASERUBY
https://bugs.ruby-lang.org/issues/7541#change-36242

Author: vo.x (Vit Ondruch)
Status: Assigned
Priority: Normal
Assignee: drbrain (Eric Hodel)
Category: lib
Target version: next minor
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 `<top (required)>'
   from <internal:gem_prelude>:1:in `require'
   from <internal:gem_prelude>:1:in `<compiled>'
 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 :/
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.