Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Building native extensions fails #372

Closed
ndeto opened this issue Sep 24, 2020 · 4 comments
Closed

Building native extensions fails #372

ndeto opened this issue Sep 24, 2020 · 4 comments

Comments

@ndeto
Copy link

ndeto commented Sep 24, 2020

I just encountered this problem. The second answer for disabling the error worked but it looks like a potential problem.

https://stackoverflow.com/questions/63851404/an-error-occurred-while-installing-thin-1-7-2

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

    current directory: /Users/user/.rvm/gems/ruby-2.4.0/gems/thin-1.7.2/ext/thin_parser
/Users/user/.rvm/rubies/ruby-2.4.0/bin/ruby -I /Users/user/.rvm/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0 -r ./siteconf20200924-20274-43w7b6.rb extconf.rb
checking for main() in -lc... yes
creating Makefile

current directory: /Users/user/.rvm/gems/ruby-2.4.0/gems/thin-1.7.2/ext/thin_parser
make "DESTDIR=" clean

current directory: /Users/user/.rvm/gems/ruby-2.4.0/gems/thin-1.7.2/ext/thin_parser
make "DESTDIR="
compiling parser.c
parser.c:31:18: warning: unused variable 'http_parser_en_main' [-Wunused-const-variable]
static const int http_parser_en_main = 1;
                 ^
1 warning generated.
compiling thin.c
thin.c:242:3: error: implicit declaration of function 'thin_http_parser_init' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
  thin_http_parser_init(hp);
  ^
thin.c:242:3: note: did you mean 'http_parser_init'?
./parser.h:41:5: note: 'http_parser_init' declared here
int http_parser_init(http_parser *parser);
    ^
thin.c:260:3: error: implicit declaration of function 'thin_http_parser_init' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
  thin_http_parser_init(http);
  ^
thin.c:277:3: error: implicit declaration of function 'thin_http_parser_init' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
  thin_http_parser_init(http);
  ^
thin.c:294:3: error: implicit declaration of function 'thin_http_parser_finish' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
  thin_http_parser_finish(http);
  ^
thin.c:294:3: note: did you mean 'Thin_HttpParser_finish'?
thin.c:290:7: note: 'Thin_HttpParser_finish' declared here
VALUE Thin_HttpParser_finish(VALUE self)
      ^
thin.c:296:10: error: implicit declaration of function 'thin_http_parser_is_finished' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
  return thin_http_parser_is_finished(http) ? Qtrue : Qfalse;
         ^
thin.c:334:5: error: implicit declaration of function 'thin_http_parser_execute' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    thin_http_parser_execute(http, dptr, dlen, from);
    ^
thin.c:334:5: note: did you mean 'Thin_HttpParser_execute'?
thin.c:317:7: note: 'Thin_HttpParser_execute' declared here
VALUE Thin_HttpParser_execute(VALUE self, VALUE req_hash, VALUE data, VALUE start)
      ^
thin.c:338:8: error: implicit declaration of function 'thin_http_parser_has_error' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    if(thin_http_parser_has_error(http)) {
       ^
thin.c:338:8: note: did you mean 'http_parser_has_error'?
./parser.h:44:5: note: 'http_parser_has_error' declared here
int http_parser_has_error(http_parser *parser);
    ^
thin.c:359:10: error: implicit declaration of function 'thin_http_parser_has_error' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
  return thin_http_parser_has_error(http) ? Qtrue : Qfalse;
         ^
thin.c:374:10: error: implicit declaration of function 'thin_http_parser_is_finished' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
  return thin_http_parser_is_finished(http) ? Qtrue : Qfalse;
         ^
9 errors generated.
make: *** [thin.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/user/.rvm/gems/ruby-2.4.0/gems/thin-1.7.2 for inspection.
Results logged to /Users/user/.rvm/gems/ruby-2.4.0/extensions/x86_64-darwin-19/2.4.0/thin-1.7.2/gem_make.out
@ndeto
Copy link
Author

ndeto commented Sep 25, 2020

Update, the hack worked but the main gem i needed to run mailcatcher is now running but crashes every time.

@tagliala
Copy link

tagliala commented Oct 9, 2020

I can confirm this issue on macOS 10.15.7 (19H2), I can provide more details on request.

This has started some weeks ago, maybe because of an update to a third-party compiler because I was able to build thin 1.7.2 before

Native extensions build fine on Travis CI (Ubuntu Bionic 18.04): https://travis-ci.org/github/DavyJonesLocker/client_side_validations/jobs/734384252


Update: master branch works, any chance to cut a new release or backport fixes?


Update 2 I think this could be closed, the issue has been fixed via #364 and is caused by Xcode 12

@lacostenycoder
Copy link

Update 1.8.0 works for me on MacOS 11.1

@ioquatix
Copy link
Collaborator

ioquatix commented Feb 5, 2021

Awesome, thanks for confirming!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants