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) almost 10 years ago
Updated by nobu (Nobuyoshi Nakada) almost 10 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) almost 10 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) almost 10 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) almost 10 years ago
Note:
rubygems prevents to ship to default gem now.