Bug #12284
closedio-console gem >= 0.4.3 breaks on Windows ruby < 2.2.0 due to needing rb_sym2str
Description
Ruby 2.1.x users (on Windows) who do "gem update" and try to build io-console 0.4.3 or later fail at link-time.
rb_sym2str was first used in console.c in r50427
rb_sym2str was implemented in ruby 2.20
Excerpt of build failure:
current directory: C:/rubytest/ruby-2.1.8-x64-mingw32/lib/ruby/gems/2.1.0/gems/io-console-0.4.5 make "DESTDIR=" generating console-x64-mingw32.def compiling console.c console.c: In function 'console_key_pressed_p': console.c:722:6: warning: implicit declaration of function 'rb_sym2str' [-Wimplicit-function-declaration] linking shared-object io/console.so console.o: In function ``
console_key_pressed_p': C:\rubytest\ruby-2.1.8-x64-mingw32\lib\ruby\gems\2.1.0\gems\io-console-0.4.5/console.c:722: undefined reference to
``rb_sym2str' collect2.exe: error: ld returned 1 exit status make: *** [console.so] Error 1
Files
Updated by hobart (Jon Bailey) over 8 years ago
Updated by nobu (Nobuyoshi Nakada) over 8 years ago
- Status changed from Open to Closed
Applied in changeset r54587.
io/console: rb_sym2str
- ext/io/console/console.c (rb_sym2str): fallback definition for
older ruby. [ruby-core:74953] [Bug #12284]
Updated by nobu (Nobuyoshi Nakada) over 8 years ago
- Backport changed from 2.1: REQUIRED, 2.2: DONTNEED, 2.3: DONTNEED to 2.1: DONTNEED, 2.2: DONTNEED, 2.3: DONTNEED
- File io-console-0.4.6.gem io-console-0.4.6.gem added
I can't push the new gem to rubygems.org.
Could you try the attached file?
Updated by hobart (Jon Bailey) over 8 years ago
The new gem appears to have installed without problems, thank you! Will rubygems pick it up when the version number is next bumped?
PS C:\test-gem> gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 2.2.5
- RUBY VERSION: 2.1.8 (2015-12-16 patchlevel 440) [x64-mingw32]
- INSTALLATION DIRECTORY: C:/Ruby21-x64/lib/ruby/gems/2.1.0
- RUBY EXECUTABLE: C:/Ruby21-x64/bin/ruby.exe
- EXECUTABLE DIRECTORY: C:/Ruby21-x64/bin
- SPEC CACHE DIRECTORY: C:/Users/passp/.gem/specs
- RUBYGEMS PLATFORMS:
- ruby
- x64-mingw32
- GEM PATHS:
- C:/Ruby21-x64/lib/ruby/gems/2.1.0
- C:/Users/passp/.gem/ruby/2.1.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- C:\DevKit-mingw64-64-4.7.2-20130224-1432\bin
- C:\DevKit-mingw64-64-4.7.2-20130224-1432\mingw\bin
- C:\Ruby21-x64\bin
- C:\WINDOWS\system32
- C:\WINDOWS
- C:\WINDOWS\System32\Wbem
- C:\WINDOWS\System32\WindowsPowerShell\v1.0\
- C:\Program Files\SysinternalsSuite
PS C:\test-gem> gem install --local --verbose io-console
C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/io-console-0.4.6/console.c
C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/io-console-0.4.6/depend
C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/io-console-0.4.6/extconf.rb
C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/io-console-0.4.6/lib/console/size.rb
C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/io-console-0.4.6/win32_vk.inc
Building native extensions. This could take a while...
C:/Ruby21-x64/bin/ruby.exe extconf.rb
checking for rb_funcallv()... yes
checking for rb_sym2str()... no
creating Makefile
make "DESTDIR=" clean
make "DESTDIR="
generating console-x64-mingw32.def
compiling console.c
linking shared-object io/console.so
make "DESTDIR=" install
/usr/bin/install -c -m 0755 console.so ./.gem.20160419-3528-1r28flb/io
installing default console libraries
Successfully installed io-console-0.4.6
Parsing documentation for io-console-0.4.6
Parsing sources...
100% [ 8/ 8] lib/io/console/size.rb
Installing ri documentation for io-console-0.4.6
Done installing documentation for io-console after 0 seconds
1 gem installed
PS C:\test-gem>
Updated by hsbt (Hiroshi SHIBATA) over 8 years ago
Note:
rubygems prevents to ship to default gem now.