Gem::Ext::BuildError: ERROR: Failed to build gem native extension Bcrypt-Ruby
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
user3749994
Updated on June 05, 2022Comments
-
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;- ran
xcodebuild -license
- updated bundler
- ran
brew install rbenv ruby-build rbenv-gem-rehash
to get the latest ruby - 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.
- ran
-
user3749994 over 9 yearsFor some reason that's what I thought I solved with
xcode -license
. Thanks for clearing that up. -
Tom Harrison over 9 yearsIt seems like every new install or update of xcode requires reinstall of command line tools.
-
gorlaz over 9 yearsSlightly 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 about 9 yearsGetting 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 about 8 yearsI'm using Ubuntu 14.04 and same issue come to me? please help.
-
ShadSterling about 3 yearsPlease don't install both homebrew and macports. You will run in to some bizarre conflict and it will be a nightmare to resolve.