3

It's not a duplicated of Eventmachine gem install fail, that's for Windows, and I'm running on OSX 10.9.5 and ruby ruby 2.2.0p0

I'm struggling to get Eventmachine installed, after I installed Middleman. Any advice on how to proceed? I already tried sudo gem install eventmachine -v '1.0.3' and gem install eventmachine -v 1.0.4 but no luck.

  Building native extensions.  This could take a while...
  ERROR:  Error installing eventmachine:
    ERROR: Failed to build gem native extension.

      /Users/malditojavi/.rvm/rubies/ruby-2.2.0/bin/ruby -r ./siteconf20150115-4062-w3t883.rb extconf.rb
  checking for rb_trap_immediate in ruby.h,rubysig.h... no
  checking for rb_thread_blocking_region()... no
  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... yes
  checking for rb_wait_for_single_fd()... yes
  checking for rb_enable_interrupt()... no
  checking for rb_time_new()... yes
  checking for sys/event.h... yes
  checking for sys/queue.h... yes
  creating Makefile

  make "DESTDIR=" clean

  make "DESTDIR="
  compiling binder.cpp
  compiling cmain.cpp
  compiling ed.cpp
  compiling em.cpp
  em.cpp:827:9: error: use of undeclared identifier 'rb_thread_select'; did you mean 'rb_thread_fd_select'?
          return EmSelect (maxsocket+1, &fdreads, &fdwrites, &fderrors, &tv);
                 ^~~~~~~~
                 rb_thread_fd_select
  ./em.h:25:20: note: expanded from macro 'EmSelect'
    #define EmSelect rb_thread_select
                     ^
  /Users/malditojavi/.rvm/rubies/ruby-2.2.0/include/ruby-2.2.0/ruby/intern.h:454:5: note: 'rb_thread_fd_select' declared here
  int rb_thread_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *);
      ^
  em.cpp:827:32: error: cannot initialize a parameter of type 'rb_fdset_t *' with an rvalue of type 'fd_set *'
          return EmSelect (maxsocket+1, &fdreads, &fdwrites, &fderrors, &tv);
                                        ^~~~~~~~
  /Users/malditojavi/.rvm/rubies/ruby-2.2.0/include/ruby-2.2.0/ruby/intern.h:454:42: note: passing argument to parameter here
  int rb_thread_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *);
                                           ^
  em.cpp:946:6: error: use of undeclared identifier 'rb_thread_select'; did you mean 'rb_thread_fd_select'?
                                          EmSelect (0, NULL, NULL, NULL, &tv);
                                          ^~~~~~~~
                                          rb_thread_fd_select
  ./em.h:25:20: note: expanded from macro 'EmSelect'
    #define EmSelect rb_thread_select
                     ^
  /Users/malditojavi/.rvm/rubies/ruby-2.2.0/include/ruby-2.2.0/ruby/intern.h:454:5: note: 'rb_thread_fd_select' declared here
  int rb_thread_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *);
      ^
  3 errors generated.
  make: *** [em.o] Error 1

  make failed, exit code 2

  Gem files will remain installed in /Users/malditojavi/.rvm/rubies/ruby-2.2.0/lib/ruby/gems/2.2.0/gems/eventmachine-1.0.3 for inspection.
  Results logged to /Users/malditojavi/.rvm/rubies/ruby-2.2.0/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-13/2.2.0/eventmachine-1.0.3/gem_make.out
Community
  • 1
  • 1
malditojavi
  • 1,074
  • 2
  • 14
  • 28

3 Answers3

2

There's an incompatibility between Eventmachine 1.0.3 and Ruby 2.2.x. To fix it, either

  • Downgrade your Ruby to 2.1.2 (add ruby '2.1.2' at the top of your Gemfile)

or

  • Upgrade your Eventmachine gem to 1.0.4.
maxhm10
  • 1,034
  • 9
  • 20
1

You should upgrade your eventmachine version in your bundle using:

bundle update eventmachine
Matteo Alessani
  • 10,264
  • 4
  • 40
  • 57
0

There is a thread on the git repo stating this command shall work:

 bundle config build.eventmachine --with-cppflags=-I/usr/local/opt/openssl/include

Original issue: https://github.com/middleman/middleman/issues/1699#issuecomment-162623491

borisrorsvort
  • 907
  • 7
  • 22