envygeeks / jekyll-assets

:art: Asset pipelines for Jekyll.
ISC License
1.11k stars 169 forks source link

Can not run bundle install because jekyll-assets dependency on macOS Catalina #651

Open iloveip opened 3 years ago

iloveip commented 3 years ago

Description

I'm have a problem install Jekyll on macOS Catalina. I followed instructions here https://jekyllrb.com/docs/installation/macos/. But when I run bundle install in my project directory I get the following error:

An error occurred while installing ffi (1.9.23), and Bundler cannot
continue.
Make sure that `gem install ffi -v '1.9.23'` succeeds before bundling.

In Gemfile:
  jekyll-assets was resolved to 3.0.11, which depends on
    jekyll-sanity was resolved to 1.2.0, which depends on
      jekyll was resolved to 3.8.2, which depends on
        jekyll-sass-converter was resolved to 1.5.2, which depends on
          sass was resolved to 3.5.6, which depends on
            sass-listen was resolved to 4.0.0, which depends on
              rb-inotify was resolved to 0.9.10, which depends on
                ffi

If I run gem install ffi -v '1.9.23' I get the following error:

svetlana@MacBook-Pro-Svetlana iloveip % gem install ffi -v '1.9.23'
Building native extensions. This could take a while...
ERROR:  Error installing ffi:
    ERROR: Failed to build gem native extension.

    current directory: /Users/svetlana/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/ffi-1.9.23/ext/ffi_c
/Users/svetlana/.rbenv/versions/2.7.2/bin/ruby -I /Users/svetlana/.rbenv/versions/2.7.2/lib/ruby/2.7.0 -r ./siteconf20201203-48087-17384wl.rb extconf.rb
checking for ffi_call() in -lffi... yes
checking for ffi_closure_alloc()... yes
checking for ffi_raw_call()... yes
checking for ffi_prep_raw_closure()... yes
checking for shlwapi.h... no
checking for rb_thread_blocking_region()... no
checking for rb_thread_call_with_gvl()... yes
checking for rb_thread_call_without_gvl()... yes
checking for ffi_prep_cif_var()... yes
creating extconf.h
creating Makefile

current directory: /Users/svetlana/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/ffi-1.9.23/ext/ffi_c
make "DESTDIR=" clean

current directory: /Users/svetlana/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/ffi-1.9.23/ext/ffi_c
make "DESTDIR="
compiling AbstractMemory.c
compiling ArrayType.c
compiling Buffer.c
compiling Call.c
Call.c:334:5: error: implicit declaration of function 'rb_thread_call_without_gvl' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
    rbffi_thread_blocking_region(call_blocking_function, data, (void *) -1, NULL);
    ^
./Thread.h:78:39: note: expanded from macro 'rbffi_thread_blocking_region'
# define rbffi_thread_blocking_region rb_thread_call_without_gvl
                                      ^
Call.c:388:20: warning: incompatible pointer types passing 'VALUE (void *)' (aka 'unsigned long (void *)') to parameter of type 'VALUE (*)(VALUE)' (aka 'unsigned long (*)(unsigned long)') [-Wincompatible-pointer-types]
        rb_rescue2(rbffi_do_blocking_call, (VALUE) bc, rbffi_save_frame_exception, (VALUE) &frame, rb_eException, (VALUE) 0);
                   ^~~~~~~~~~~~~~~~~~~~~~
/Users/svetlana/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1988:25: note: passing argument to parameter here
VALUE rb_rescue2(VALUE(*)(VALUE),VALUE,VALUE(*)(VALUE,VALUE),VALUE,...);
                        ^
Call.c:388:56: warning: incompatible pointer types passing 'VALUE (void *, VALUE)' (aka 'unsigned long (void *, unsigned long)') to parameter of type 'VALUE (*)(VALUE, VALUE)' (aka 'unsigned long (*)(unsigned long, unsigned long)') [-Wincompatible-pointer-types]
        rb_rescue2(rbffi_do_blocking_call, (VALUE) bc, rbffi_save_frame_exception, (VALUE) &frame, rb_eException, (VALUE) 0);
                                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/svetlana/.rbenv/versions/2.7.2/include/ruby-2.7.0/ruby/ruby.h:1988:47: note: passing argument to parameter here
VALUE rb_rescue2(VALUE(*)(VALUE),VALUE,VALUE(*)(VALUE,VALUE),VALUE,...);
                                              ^
2 warnings and 1 error generated.
make: *** [Call.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/svetlana/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/ffi-1.9.23 for inspection.
Results logged to /Users/svetlana/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/extensions/x86_64-darwin-19/2.7.0/ffi-1.9.23/gem_make.out

How can I fix that?