Gem::Ext::BuildError: ERROR: Failed to build gem native extension Bcrypt-Ruby

17,900

Solution 1

I had the same problem which I solved by re-installing the XCode command line developer tools :

xcode-select --install
bundle install

Solution 2

Only a combination of actions helped me to solve the issue. Here is my sequence

1)

xcode-select --install
bundle install

2)

brew update
brew upgrade rbenv ruby-build

3) Switched from ruby 2.1.4 to 2.1.5

rbenv install 2.1.5   
rbenv global 2.1.5
rbenv shell 2.1.5
rbenv rehash
gem install bundler
bundle

4) (optional) in case you had issue with installing nokogiri

brew install libxml2
bundle config build.nokogiri "--use-system-libraries --with-xml2-include=/usr/local/opt/libxml2/include/libxml2"
bundle
Share:
17,900
user3749994
Author by

user3749994

Updated on June 05, 2022

Comments

  • user3749994
    user3749994 almost 2 years

    I am making a rails app and just upgraded to Yosemite, and I think everything broke during that update. Everything was working last night when I checked in all my code to github. I updated my computer last night to Yosemite. Today I ran gem install bcrypt-ruby and everything broke. I have;

    1. ran xcodebuild -license
    2. updated bundler
    3. ran brew install rbenv ruby-build rbenv-gem-rehash to get the latest ruby
    4. ran brew install coreutils

    That did not work though.

    environment: OSX Yosemite 10.10, rbenv 0.4.0, ruby 2.1.3p242 (2014-09-19 revision 47630) [x86_64-darwin14.0], brew 0.9.5`

    The source of the error is from my rails app:

    gemfile

    gem 'rails', '4.1.5'
    gem 'pg' 
    gem 'uglifier', '>= 1.3.0'
    gem 'jquery-rails'
    gem 'turbolinks'
    gem 'jbuilder', '~> 2.0'
    gem 'sdoc', '~> 0.4.0',          group: :doc
    gem 'spring',        group: :development
    gem 'bcrypt-ruby'
    
    group :test, :development do
      gem 'rspec-rails', "~> 2.14"
    end
    group :test do
      gem 'capybara', "2.1.0"
      gem 'factory_girl_rails', '~> 4.2.1'
    end
    

    I got the error when I ran bundle install. Here is the full stack trace (all the /users// is from taking out the name ;)

     Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
    
        /Users//.rbenv/versions/2.0.0-p247/bin/ruby -r ./siteconf20141027-60319-1lss4fm.rb extconf.rb 
    creating Makefile
    
    make "DESTDIR=" clean
    
    make "DESTDIR="
    compiling bcrypt_ext.c
    couldn't understand kern.osversion `14.0.0'
    In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                     from bcrypt_ext.c:1:
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:51:21: error: string.h: No such file or directory
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:61:21: error: stdint.h: No such file or directory
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:64:23: error: inttypes.h: No such file or directory
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:68:19: error: stdio.h: No such file or directory
    In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:70,
                     from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                     from bcrypt_ext.c:1:
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/defines.h:29:21: error: stdlib.h: No such file or directory
    In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:194,
                     from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                     from bcrypt_ext.c:1:
    /usr/local/Cellar/apple-gcc42/4.2.1-5666.3/bin/../lib/gcc/i686-apple-darwin11/4.2.1/include/limits.h:10:25: error: limits.h: No such file or directory
    In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:1567,
                     from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                     from bcrypt_ext.c:1:
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/missing.h:23:45: error: math.h: No such file or directory
    In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:1568,
                     from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                     from bcrypt_ext.c:1:
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:36:23: error: sys/types.h: No such file or directory
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:40:22: error: sys/time.h: No such file or directory
    In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:43,
                     from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:1568,
                     from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                     from bcrypt_ext.c:1:
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/st.h:140: error: expected declaration specifiers or ‘...’ before ‘uint32_t’
    In file included from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/ruby.h:1568,
                     from /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby.h:33,
                     from bcrypt_ext.c:1:
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:326: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_fdset_t’
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:416: error: expected declaration specifiers or ‘...’ before ‘fd_set’
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:416: error: expected declaration specifiers or ‘...’ before ‘fd_set’
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:416: error: expected declaration specifiers or ‘...’ before ‘fd_set’
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:416: warning: ‘struct timeval’ declared inside parameter list
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:416: warning: its scope is only this definition or declaration, which is probably not what you want
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:417: error: expected declaration specifiers or ‘...’ before ‘rb_fdset_t’
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:417: error: expected declaration specifiers or ‘...’ before ‘rb_fdset_t’
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:417: error: expected declaration specifiers or ‘...’ before ‘rb_fdset_t’
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:417: warning: ‘struct timeval’ declared inside parameter list
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:418: warning: ‘struct timeval’ declared inside parameter list
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:514: error: expected declaration specifiers or ‘...’ before ‘mode_t’
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:593: error: expected declaration specifiers or ‘...’ before ‘pid_t’
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:607: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_fork’
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:608: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_fork_err’
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:610: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_waitpid’
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:611: error: expected ‘)’ before ‘pid’
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:612: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_spawn’
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:613: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘rb_spawn_err’
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:615: error: expected ‘)’ before ‘pid’
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:728: error: expected declaration specifiers or ‘...’ before ‘uint32_t’
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:851: error: expected ‘)’ before ‘long’
    /Users//.rbenv/versions/2.0.0-p247/include/ruby-2.0.0/ruby/intern.h:852: error: expected ‘)’ before ‘long’
    bcrypt_ext.c: In function ‘bc_salt’:
    bcrypt_ext.c:21: warning: incompatible implicit declaration of built-in function ‘strlen’
    make: *** [bcrypt_ext.o] Error 1
    
    make failed, exit code 2
    
    Gem files will remain installed in /Users//ticket_tracker/vendor/bundle/gems/bcrypt-3.1.9 for inspection.
    Results logged to /Users//ticket_tracker/vendor/bundle/extensions/x86_64-darwin-12/2.0.0-static/bcrypt-3.1.9/gem_make.out
    An error occurred while installing bcrypt (3.1.9), and Bundler cannot continue.
    Make sure that `gem install bcrypt -v '3.1.9'` succeeds before bundling.
    

    If anyone has had some experience updated OSX, Rbenv, Ruby etc and can give me some pointers, that would be much appreciated. I can also post more code/environment set up if needed.

  • user3749994
    user3749994 over 9 years
    For some reason that's what I thought I solved with xcode -license. Thanks for clearing that up.
  • Tom Harrison
    Tom Harrison over 9 years
    It seems like every new install or update of xcode requires reinstall of command line tools.
  • gorlaz
    gorlaz over 9 years
    Slightly different take, I had the same error, tried xcodebuild -license and got an error saying needing to use sudo, so 'sudo xcodebuild -license' and it worked. I'm still on Mavericks but have got Yosemite downloaded to install, so not sure if that's impacting things.
  • A F
    A F about 9 years
    Getting a popup that says Can't install the software because it is not currently available from the Software Update server.. Any idea if thats a temporary thing?
  • Jai Chauhan
    Jai Chauhan about 8 years
    I'm using Ubuntu 14.04 and same issue come to me? please help.
  • ShadSterling
    ShadSterling about 3 years
    Please don't install both homebrew and macports. You will run in to some bizarre conflict and it will be a nightmare to resolve.