ruby-debug / debase

BSD 2-Clause "Simplified" License
209 stars 32 forks source link

0.2.4.1 and 0.2.5.beta Fail to build on macOS Catalina 10.15.7 #91

Closed eirvandelden closed 3 years ago

eirvandelden commented 3 years ago

What I did:

What I expected:

What I got:

0.2.4.1

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

    current directory: /Users/eirvandelden/.gem/ruby/2.5.0/gems/debase-0.2.4.1/ext
/Users/eirvandelden/.rubies/ruby-2.5.0/bin/ruby -r ./siteconf20201106-6227-83wsl5.rb extconf.rb
checking for vm_core.h... no
checking for vm_core.h... no
checking for vm_core.h... yes
checking for iseq.h... yes
checking for version.h... yes
checking for vm_core.h... yes
checking for vm_insnhelper.h... yes
checking for vm_core.h... yes
checking for method.h... yes
creating Makefile

current directory: /Users/eirvandelden/.gem/ruby/2.5.0/gems/debase-0.2.4.1/ext
make "DESTDIR=" clean

current directory: /Users/eirvandelden/.gem/ruby/2.5.0/gems/debase-0.2.4.1/ext
make "DESTDIR="
compiling breakpoint.c
compiling context.c
compiling debase_internals.c
debase_internals.c:319:25: warning: initializing 'rb_control_frame_t *' (aka 'struct rb_control_frame_struct *') with an expression of type 'const rb_control_frame_t *' (aka 'const struct rb_control_frame_struct *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
    rb_control_frame_t *start_cfp = RUBY_VM_END_CONTROL_FRAME(TH_INFO(thread));
                        ^           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
debase_internals.c:697:24: warning: initializing 'rb_iseq_t *' (aka 'struct rb_iseq_struct *') with an expression of type 'const rb_iseq_t *' (aka 'const struct rb_iseq_struct *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
            rb_iseq_t *iseq = my_iseqw_check(rb_iseq);
                       ^      ~~~~~~~~~~~~~~~~~~~~~~~
debase_internals.c:700:17: error: implicit declaration of function 'rb_iseq_trace_set' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
                rb_iseq_trace_set(iseq, RUBY_EVENT_TRACEPOINT_ALL);
                ^
debase_internals.c:708:24: warning: initializing 'rb_iseq_t *' (aka 'struct rb_iseq_struct *') with an expression of type 'const rb_iseq_t *' (aka 'const struct rb_iseq_struct *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
            rb_iseq_t *iseq = my_iseqw_check(rb_iseq);
                       ^      ~~~~~~~~~~~~~~~~~~~~~~~
debase_internals.c:711:17: error: implicit declaration of function 'rb_iseq_trace_set' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
                rb_iseq_trace_set(iseq, RUBY_EVENT_NONE);
                ^
debase_internals.c:768:64: warning: incompatible pointer types passing 'void (VALUE, VALUE)' (aka 'void (unsigned long, unsigned long)') to parameter of type 'VALUE (*)()' (aka 'unsigned long (*)()') [-Wincompatible-pointer-types]
  rb_define_module_function(mDebase, "set_trace_flag_to_iseq", Debase_set_trace_flag_to_iseq, 1);
                                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/eirvandelden/.rubies/ruby-2.5.0/include/ruby-2.5.0/ruby/ruby.h:1716:57: note: passing argument to parameter here
void rb_define_module_function(VALUE,const char*,VALUE(*)(ANYARGS),int);
                                                        ^
debase_internals.c:771:58: warning: incompatible pointer types passing 'void (VALUE, VALUE)' (aka 'void (unsigned long, unsigned long)') to parameter of type 'VALUE (*)()' (aka 'unsigned long (*)()') [-Wincompatible-pointer-types]
  rb_define_module_function(mDebase, "unset_iseq_flags", Debase_unset_trace_flags, 1);
                                                         ^~~~~~~~~~~~~~~~~~~~~~~~
/Users/eirvandelden/.rubies/ruby-2.5.0/include/ruby-2.5.0/ruby/ruby.h:1716:57: note: passing argument to parameter here
void rb_define_module_function(VALUE,const char*,VALUE(*)(ANYARGS),int);
                                                        ^
5 warnings and 2 errors generated.
make: *** [debase_internals.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/eirvandelden/.gem/ruby/2.5.0/gems/debase-0.2.4.1 for inspection.
Results logged to /Users/eirvandelden/.gem/ruby/2.5.0/extensions/x86_64-darwin-19/2.5.0-static/debase-0.2.4.1/gem_make.out

0.2.5.beta1

🚀 gem install debase --version 0.2.5.beta1
Building native extensions. This could take a while...
ERROR:  Error installing debase:
    ERROR: Failed to build gem native extension.

    current directory: /Users/eirvandelden/.gem/ruby/2.5.0/gems/debase-0.2.5.beta1/ext
/Users/eirvandelden/.rubies/ruby-2.5.0/bin/ruby -r ./siteconf20201106-6571-1f8kynu.rb extconf.rb
checking for vm_core.h... no
checking for vm_core.h... no
checking for vm_core.h... yes
checking for iseq.h... yes
checking for version.h... yes
creating Makefile

current directory: /Users/eirvandelden/.gem/ruby/2.5.0/gems/debase-0.2.5.beta1/ext
make "DESTDIR=" clean

current directory: /Users/eirvandelden/.gem/ruby/2.5.0/gems/debase-0.2.5.beta1/ext
make "DESTDIR="
compiling breakpoint.c
compiling context.c
compiling debase_internals.c
debase_internals.c:319:25: warning: initializing 'rb_control_frame_t *' (aka 'struct rb_control_frame_struct *') with an expression of type 'const rb_control_frame_t *' (aka 'const struct rb_control_frame_struct *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
    rb_control_frame_t *start_cfp = RUBY_VM_END_CONTROL_FRAME(TH_INFO(thread));
                        ^           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
debase_internals.c:697:24: warning: initializing 'rb_iseq_t *' (aka 'struct rb_iseq_struct *') with an expression of type 'const rb_iseq_t *' (aka 'const struct rb_iseq_struct *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
            rb_iseq_t *iseq = my_iseqw_check(rb_iseq);
                       ^      ~~~~~~~~~~~~~~~~~~~~~~~
debase_internals.c:700:17: error: implicit declaration of function 'rb_iseq_trace_set' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
                rb_iseq_trace_set(iseq, RUBY_EVENT_TRACEPOINT_ALL);
                ^
debase_internals.c:708:24: warning: initializing 'rb_iseq_t *' (aka 'struct rb_iseq_struct *') with an expression of type 'const rb_iseq_t *' (aka 'const struct rb_iseq_struct *') discards qualifiers [-Wincompatible-pointer-types-discards-qualifiers]
            rb_iseq_t *iseq = my_iseqw_check(rb_iseq);
                       ^      ~~~~~~~~~~~~~~~~~~~~~~~
debase_internals.c:711:17: error: implicit declaration of function 'rb_iseq_trace_set' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
                rb_iseq_trace_set(iseq, RUBY_EVENT_NONE);
                ^
debase_internals.c:768:64: warning: incompatible pointer types passing 'void (VALUE, VALUE)' (aka 'void (unsigned long, unsigned long)') to parameter of type 'VALUE (*)()' (aka 'unsigned long (*)()') [-Wincompatible-pointer-types]
  rb_define_module_function(mDebase, "set_trace_flag_to_iseq", Debase_set_trace_flag_to_iseq, 1);
                                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/eirvandelden/.rubies/ruby-2.5.0/include/ruby-2.5.0/ruby/ruby.h:1716:57: note: passing argument to parameter here
void rb_define_module_function(VALUE,const char*,VALUE(*)(ANYARGS),int);
                                                        ^
debase_internals.c:771:58: warning: incompatible pointer types passing 'void (VALUE, VALUE)' (aka 'void (unsigned long, unsigned long)') to parameter of type 'VALUE (*)()' (aka 'unsigned long (*)()') [-Wincompatible-pointer-types]
  rb_define_module_function(mDebase, "unset_iseq_flags", Debase_unset_trace_flags, 1);
                                                         ^~~~~~~~~~~~~~~~~~~~~~~~
/Users/eirvandelden/.rubies/ruby-2.5.0/include/ruby-2.5.0/ruby/ruby.h:1716:57: note: passing argument to parameter here
void rb_define_module_function(VALUE,const char*,VALUE(*)(ANYARGS),int);
                                                        ^
5 warnings and 2 errors generated.
make: *** [debase_internals.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/eirvandelden/.gem/ruby/2.5.0/gems/debase-0.2.5.beta1 for inspection.
Results logged to /Users/eirvandelden/.gem/ruby/2.5.0/extensions/x86_64-darwin-19/2.5.0-static/debase-0.2.5.beta1/gem_make.out
eirvandelden commented 3 years ago

Note: I saw mention of a workaround here but its not applicable for me as I'm using debase & ruby-debug-ide with VSCode

hurricup commented 3 years ago

You may install any ruby-debug-ide with the same options. Doesn't matter if you are using RubyMine or VSCode

r-plus commented 3 years ago

I look the same compile error when I upgrade to Xcode 12. In my environment, back to Xcode 11.7 by xcode-select is workaround for me.

Armen-Markosyan-Vineti commented 3 years ago

This is about Catalina. Is it true for Big Sur as well?

Armen-Markosyan-Vineti commented 3 years ago

the downgrading of Xcode to 11.7 works on Big Sur too. Thank you @r-plus

hurricup commented 3 years ago

https://github.com/ruby-debug/debase/releases/tag/v0.2.5.beta2 should work fine

agrberg commented 3 years ago

This also is happening on Big Sur (macOS 11.2.3) and gem install debase -v '0.2.4.1' -- --with-cflags="-Wno-error=implicit-function-declaration" got around the problem for me.

yanghoxom commented 3 years ago

Xcode to 11.7 work for me on big sur

awadhwana commented 2 years ago

If you are using multiple ruby versions and bundler to install the dependencies. Add this to the bundler config.

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

sagar-punchh commented 5 months ago

Getting the same issue on macOS Sonoma Version 14.4. I tried the above mentioned solutions but no luck. Ruby version: 2.7.6

xchl903001 commented 5 months ago

Getting the same issue on macOS Sonoma Version 14.4. I tried the above mentioned solutions but no luck. Ruby version: 2.7.5

ADolhov commented 5 months ago

Getting the same issue on macOS Sonoma Version 14.4.1 I tried the above mentioned solutions but no luck. Ruby version: 2.7.8

snirbenyosef commented 4 months ago

Getting the same issue on macOS Sonoma Version 14.4.1 I tried the above mentioned solutions but no luck. Ruby version: 2.6.3

iglenwoo commented 3 months ago

I found a workaround for my case:

gem install debase -- --with-cflags="-Wno-compound-token-split-by-macro -Wno-error=incompatible-function-pointer-types"

Hope this helps

fleXible commented 3 months ago

For me the --with-cflags approach worked, although I had to add -Wno-int-conversion.

As I'm using different ruby versions, I followed @awadhwana and added to my user bundler config.

bundle config set --global build.debase --with-cflags='-Wno-compound-token-split-by-macro -Wno-error=incompatible-function-pointer-types -Wno-int-conversion'

The nokogiri gem ended up with a special config, too before installation would finish successful.

bundle config set --global build.nokogiri --use-system-libraries