Smashing / smashing

The exceptionally handsome dashboard framework in Ruby and Coffeescript.
https://smashing.github.io/
MIT License
3.22k stars 324 forks source link

implicit declaration of function 'thin_http_parser_init' is invalid in C99 #174

Closed martinoz closed 3 years ago

martinoz commented 3 years ago

gem install smashing

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

current directory: /usr/local/lib/ruby/gems/2.7.0/gems/thin-1.7.2/ext/thin_parser

/usr/local/opt/ruby/bin/ruby -I /usr/local/Cellar/ruby/2.7.2/lib/ruby/2.7.0 -r ./siteconf20201221-16646-1290i2o.rb extconf.rb checking for main() in -lc... yes creating Makefile

current directory: /usr/local/lib/ruby/gems/2.7.0/gems/thin-1.7.2/ext/thin_parser make "DESTDIR=" clean

current directory: /usr/local/lib/ruby/gems/2.7.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 /usr/local/lib/ruby/gems/2.7.0/gems/thin-1.7.2 for inspection. Results logged to /usr/local/lib/ruby/gems/2.7.0/extensions/x86_64-darwin-20/2.7.0/thin-1.7.2/gem_make.out

TuxmAL commented 3 years ago

It seems an error related to the "thin" gem (version 1.7.2)...

martinoz commented 3 years ago

installed also 1.8.0, yet thin-1.7.2 is still getting used, any idea....

TuxmAL commented 3 years ago

You may try changing line 37 of gemspec file from s.add_dependency('thin', '~> 1.7.2') to s.add_dependency('thin', '~> 1.8.0') Then running bundle install again.

JCluzet commented 3 years ago

same error for me :/

JCluzet commented 3 years ago

I have found a solution that works for me: sudo gem install thin -v '1.8.0' -n /usr/local/bin -- --with-cflags="-Wno-error=implicit-function-declaration" local/usr/bin then sudo gem install smashing -n /usr/local/bin

kinow commented 3 years ago

Thanks @JCluzet ! I'll take a look at the linked issue, and try to understand the source of the problem. If it's something we can fix in Smashing so users don't need this, we can try to fix it and cut a release.

But if that's due to an issue with some of our dependencies, I'll add your workaround somewhere in our installation wiki and/or README.

Cheers! Bruno

quanganh commented 3 years ago

solution that has worked for me was

gem install thin -v '1.8.0' -- --with-cflags="-Wno-error=implicit-function-declaration"

kinow commented 3 years ago

Added the suggested workaround in the troubleshooting section of our Wiki: https://github.com/Smashing/smashing/wiki/Installation#troubleshooting

Thanks everyone!