Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

fail to bundle install puma 4.3.5 or gem puma with ruby-2.6.6 on macos-10.15.6 [duplicate]

fail to bundle install puma 4.3.5 or gem puma with ruby-2.6.6 on macos-10.15.6 try to bundle dependencies for my project, but puma 4.3.5 occured an error. someone know about this?

xxxxxxxxxxxx

here is the error content:

fetching puma 4.3.5 Installing puma 4.3.5 with native extensions Gem::Ext::BuildError: ERROR: Failed to build gem native extension.      current directory: /Users/lxj/.rvm/gems/ruby-2.6.6/gems/puma-4.3.5/ext/puma_http11 /Users/lxj/.rvm/rubies/ruby-2.6.6/bin/ruby -I /Users/lxj/.rvm/rubies/ruby-2.6.6/lib/ruby/site_ruby/2.6.0 -r ./siteconf20200731-28585-1eobsvu.rb extconf.rb checking for BIO_read() in -lcrypto... yes checking for SSL_CTX_new() in -lssl... yes checking for openssl/bio.h... yes checking for DTLS_method() in openssl/ssl.h... yes checking for TLS_server_method() in openssl/ssl.h... yes checking for SSL_CTX_set_min_proto_version in openssl/ssl.h... yes creating Makefile  current directory: /Users/lxj/.rvm/gems/ruby-2.6.6/gems/puma-4.3.5/ext/puma_http11 make "DESTDIR=" clean  current directory: /Users/lxj/.rvm/gems/ruby-2.6.6/gems/puma-4.3.5/ext/puma_http11 make "DESTDIR=" compiling http11_parser.c ext/puma_http11/http11_parser.c:44:18: warning: unused variable 'puma_parser_en_main' [-Wunused-const-variable] static const int puma_parser_en_main = 1;                  ^ 1 warning generated. compiling io_buffer.c compiling mini_ssl.c mini_ssl.c:145:7: warning: unused variable 'min' [-Wunused-variable]   int min, ssl_options;       ^ mini_ssl.c:299:40: warning: function 'raise_error' could be declared with attribute 'noreturn' [-Wmissing-noreturn] void raise_error(SSL* ssl, int result) {                                        ^ 2 warnings generated. compiling puma_http11.c puma_http11.c:203:22: error: implicitly declaring library function 'isspace' with type 'int (int)' [-Werror,-Wimplicit-function-declaration]   while (vlen > 0 && isspace(value[vlen - 1])) vlen--;                      ^ puma_http11.c:203:22: note: include the header <ctype.h> or explicitly provide a declaration for 'isspace' 1 error generated. make: *** [puma_http11.o] Error 1  make failed, exit code 2  Gem files will remain installed in /Users/lxj/.rvm/gems/ruby-2.6.6/gems/puma-4.3.5 for inspection. Results logged to /Users/lxj/.rvm/gems/ruby-2.6.6/extensions/x86_64-darwin-19/2.6.0/puma-4.3.5/gem_make.out  An error occurred while installing puma (4.3.5), and Bundler cannot continue. Make sure that `gem install puma -v '4.3.5'` succeeds before bundling.  In Gemfile:   puma 
like image 457
Rick Luo Avatar asked Jul 31 '20 07:07

Rick Luo


1 Answers

It seems that the latest version of XCode tools (12 Beta 3) installs a version of Clang (the C compiler used by default on MacOS) that throws an error on implicit functions used on the native extension code of Puma.

The workaround as pointed out here is to tell Clang not to treat this behavior as an error.

Try running:

bundle config build.puma --with-cflags="-Wno-error=implicit-function-declaration" bundle install 

and it should work.

like image 145
llekn Avatar answered Sep 22 '22 21:09

llekn