2

I am attempting to install the sinatra-contrib gem on Windows 7, and I am getting the error shown below. Any ideas?

U:\>gem install sinatra-contrib
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing sinatra-contrib:
        ERROR: Failed to build gem native extension.

    C:/Ruby200-x64/bin/ruby.exe extconf.rb
checking for main() in -lssl... no
checking for rb_trap_immediate in ruby.h,rubysig.h... no
checking for rb_thread_blocking_region()... yes
checking for inotify_init() in sys/inotify.h... no
checking for __NR_inotify_init in sys/syscall.h... no
checking for writev() in sys/uio.h... no
checking for rb_wait_for_single_fd()... yes
checking for rb_enable_interrupt()... no
checking for rb_time_new()... yes
checking for windows.h... yes
checking for winsock.h... yes
checking for main() in -lkernel32... yes
checking for main() in -lrpcrt4... yes
checking for main() in -lgdi32... yes
creating Makefile

make
generating rubyeventmachine-x64-mingw32.def
compiling binder.cpp
cc1plus.exe: warning: command line option '-Wdeclaration-after-statement' is valid for C/ObjC but not for C++ [enabled by defa
cc1plus.exe: warning: command line option '-Wimplicit-function-declaration' is valid for C/ObjC but not for C++ [enabled by de
In file included from binder.cpp:20:0:
project.h:26:0: warning: ignoring #pragma warning  [-Wunknown-pragmas]
In file included from project.h:149:0,
                 from binder.cpp:20:
binder.h:35:34: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
In file included from c:\rubydevkit\mingw\bin\../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/include/proce
                 from c:/Ruby200-x64/include/ruby-2.0.0/ruby/win32.h:60,
                 from c:/Ruby200-x64/include/ruby-2.0.0/ruby/defines.h:153,
                 from c:/Ruby200-x64/include/ruby-2.0.0/ruby/ruby.h:70,
                 from c:/Ruby200-x64/include/ruby-2.0.0/ruby.h:33,
                 from em.h:24,
                 from project.h:150,
                 from binder.cpp:20:
c:\rubydevkit\mingw\bin\../lib/gcc/x86_64-w64-mingw32/4.7.2/../../../../x86_64-w64-mingw32/include/sys/types.h:68:16: error: c
id_t pid_t'
In file included from binder.cpp:20:0:
project.h:97:13: error: 'pid_t' has a previous declaration as 'typedef int pid_t'
In file included from project.h:150:0,
                 from binder.cpp:20:
em.h:84:47: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
em.h:85:76: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
em.h:86:56: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
em.h:88:57: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
em.h:89:60: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
em.h:90:58: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
em.h:91:36: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
em.h:93:47: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
em.h:99:42: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
em.h:116:45: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
em.h:125:36: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
In file included from project.h:151:0,
                 from binder.cpp:20:
ed.h: In member function 'void EventableDescriptor::SetSocketInvalid()':
ed.h:43:40: warning: overflow in implicit constant conversion [-Woverflow]
In file included from project.h:154:0,
                 from binder.cpp:20:
eventmachine.h: At global scope:
eventmachine.h:46:61: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
eventmachine.h:47:112: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
eventmachine.h:48:69: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
eventmachine.h:50:73: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
eventmachine.h:65:75: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
eventmachine.h:66:74: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
eventmachine.h:67:77: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
eventmachine.h:68:41: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
In file included from project.h:154:0,
                 from binder.cpp:20:
eventmachine.h:103:58: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
eventmachine.h:105:60: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
eventmachine.h:108:41: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
make: *** [binder.o] Error 1


Gem files will remain installed in C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/eventmachine-1.0.1 for inspection.
Results logged to C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/eventmachine-1.0.1/ext/gem_make.out
4

1 回答 1

3

sinatra-contrib depends on EventMachine, which is currently broken for Ruby 2.0 and even more, GCC 4.7.2 used by RubyInstaller.

There is a thread at RubyInstaller group about this here and was reported to EventMachine too, as issue #412

A request to separate sinatra-contrib from eventmachine was made too, long ago, as issue #30, but it never got fixed officially.

Until compilation issues with GCC 4.7.2 are solved in EventMachine, the only workaround will be ask sinatra maintainers to remove eventmachine dependency.

Hope that helps.

于 2013-03-07T22:59:14.897 回答