Unable to compile kgio under 1.9.3 with error: ruby-1.9.3-<plvl>/lib/ruby/1.9.1/mkmf.rb:597:in `Integer': can't convert nil into Integer (TypeError)
|ruby -v:||ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-darwin12.2.0]||Backport:|
The kgio gem is unable to be compiled under 1.9.3-p286. The problem is the same as reported here: https://github.com/wayneeseguin/rvm/issues/1157, specifically the same issue is seen under ruby-1.9.3-p194 as reported here at https://github.com/wayneeseguin/rvm/issues/1157#issuecomment-9045588
The actual error is:
ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:597:in `Integer': can't convert nil into Integer (TypeError)
If L597 of mkmf.rb is modified to say:
return Integer((v=f.gets) ? v : 0 )
then the problem instantly goes away.
#2 Updated by Yusuke Endoh over 2 years ago
I checked the discussion of github.
I think the problem here is why f.gets fails.
The proposed patch is NOT acceptable; it just hides the real problem by returning a bogus result.
So, could you please tell us how to reproduce the issue?
I tried to repro by "gem install kgio" but it succeeded:
$ ~/work/local/bin/gem install kgio
Building native extensions. This could take a while...
Successfully installed kgio-2.7.4
1 gem installed
Installing ri documentation for kgio-2.7.4...
Installing RDoc documentation for kgio-2.7.4...
Yusuke Endoh firstname.lastname@example.org
#3 Updated by David Deryl Downey over 2 years ago
OK, I changed the line back to the original return Integer(f.gets) and attempted a reinstall of kgio under 1.9.3-p286.
The output from the build is still: ruby-1.9.3-p286/lib/ruby/1.9.1/mkmf.rb:597:in `Integer': can't convert nil into Integer (TypeError)
The entire contents of kgio's (v2.7.4) extconf.rb is gist here at: https://gist.github.com/08ae8fef33b610c44e6c All 53 lines of it.
Anything else I can do please let me know. Sorry for the slow replies, IRL is a bugger hehe.
#7 Updated by David Deryl Downey over 2 years ago
mame sorry again for the delay. lots of stuff going on IRL.
I am back to setting L597 in ruby-1.9.3-p286/lib/ruby/1.9.1/mkmf.rb to
and attempted a reinstall of kgio v2.7.4 and it works just fine. I was able before to consistently demonstrate the problem, however I no longer am able. I am running ruby-1.9.3-p286 with the falcon patch only, which does not touch that line of code that I can see. The suggested fix was to change the line to:
return Integer((f.gets) ? v : 0 )
whch I obviously do not have. So I'm unsure what the issue actually is, or why kgio is suddenly working. As per your request, I'm including what I currently have for the mkmf.rb file in question. Its currently online at https://gist.github.com/f687c94fc9df125bb437
Anything else I can provide, let me know.