Skip to content

Compiler Error #35

@MadBomber

Description

@MadBomber

Attempting to gem ins ruby-fann with Ruby v3.3.0 with latest MacOS on an M2max chip. I'm seeing compiler errors on the extension.

 $ gem install ruby-fann
Building native extensions. This could take a while...
ERROR:  Error installing ruby-fann:
  ERROR: Failed to build gem native extension.

    current directory: /Users/dewayne/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/ruby-fann-2.0.2/ext/ruby_fann
/Users/dewayne/.rbenv/versions/3.3.0/bin/ruby extconf.rb
checking for doublefann.h... yes
creating Makefile

current directory: /Users/dewayne/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/ruby-fann-2.0.2/ext/ruby_fann
make DESTDIR\= sitearchdir\=./.gem.20240401-60867-cly9bi sitelibdir\=./.gem.20240401-60867-cly9bi clean

current directory: /Users/dewayne/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/ruby-fann-2.0.2/ext/ruby_fann
make DESTDIR\= sitearchdir\=./.gem.20240401-60867-cly9bi sitelibdir\=./.gem.20240401-60867-cly9bi
compiling ruby_fann.c
In file included from ruby_fann.c:3:
In file included from ./doublefann.h:31:
./fann.h:116:6: warning: '_MSC_VER' is not defined, evaluates to 0 [-Wundef]
#if (_MSC_VER > 1300)
     ^
In file included from ruby_fann.c:5:
./fann_augment.h:84:20: warning: format specifies type 'int' but the argument has type 'long' [-Wformat]
                i, RARRAY_LEN(inputs_i)),
                   ^~~~~~~~~~~~~~~~~~~~
/Users/dewayne/.rbenv/versions/3.3.0/include/ruby-3.3.0/ruby/internal/core/rarray.h:51:36: note: expanded from macro 'RARRAY_LEN'
#define RARRAY_LEN                 rb_array_len                 /**< @alias{rb_array_len} */
                                   ^
In file included from ruby_fann.c:5:
./fann_augment.h:83:69: warning: more '%' conversions than data arguments [-Wformat-insufficient-args]
                "Number of inputs at [%d] is inconsistent: (%du != %d)",
                                                                   ~^
./fann_augment.h:93:20: warning: format specifies type 'int' but the argument has type 'long' [-Wformat]
                i, RARRAY_LEN(outputs_i)),
                   ^~~~~~~~~~~~~~~~~~~~~
/Users/dewayne/.rbenv/versions/3.3.0/include/ruby-3.3.0/ruby/internal/core/rarray.h:51:36: note: expanded from macro 'RARRAY_LEN'
#define RARRAY_LEN                 rb_array_len                 /**< @alias{rb_array_len} */
                                   ^
In file included from ruby_fann.c:5:
./fann_augment.h:92:69: warning: more '%' conversions than data arguments [-Wformat-insufficient-args]
                "Number of outputs at [%d] is inconsistent: (%d != %d)",
                                                                   ~^
ruby_fann.c:378:33: error: incompatible integer to pointer conversion passing 'VALUE' (aka 'unsigned long') to parameter of type 'void *' [-Wint-conversion]
        fann_set_user_data(ann, self);
                                ^~~~
./fann.h:544:72: note: passing argument to parameter 'user_data' here
FANN_EXTERNAL void FANN_API fann_set_user_data(struct fann *ann, void *user_data);
                                                                       ^
ruby_fann.c:353:62: warning: implicit conversion loses integer precision: 'long' to 'unsigned int' [-Wshorten-64-to-32]
        unsigned int num_layers = RARRAY_LEN(hidden_neurons) + 2;
                     ~~~~~~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
ruby_fann.c:834:33: warning: implicit conversion loses integer precision: 'long' to 'unsigned int' [-Wshorten-64-to-32]
            for (i = neuron_it->first_con; i < neuron_it->last_con; i++)
                   ~ ~~~~~~~~~~~^~~~~~~~~
ruby_fann.c:836:73: warning: implicit conversion loses integer precision: 'long' to 'int' [-Wshorten-64-to-32]
                rb_ary_push(connection_array, INT2NUM(f->connections[i] - f->first_layer->first_neuron));
                                              ~~~~~~~ ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ruby_fann.c:1173:24: warning: implicit conversion loses integer precision: 'long' to 'unsigned int' [-Wshorten-64-to-32]
    unsigned int len = RARRAY_LEN(inputs);
                 ~~~   ^~~~~~~~~~~~~~~~~~
/Users/dewayne/.rbenv/versions/3.3.0/include/ruby-3.3.0/ruby/internal/core/rarray.h:51:36: note: expanded from macro 'RARRAY_LEN'
#define RARRAY_LEN                 rb_array_len                 /**< @alias{rb_array_len} */
                                   ^
ruby_fann.c:1226:30: warning: implicit conversion loses integer precision: 'long' to 'unsigned int' [-Wshorten-64-to-32]
    unsigned int num_input = RARRAY_LEN(input);
                 ~~~~~~~~~   ^~~~~~~~~~~~~~~~~
/Users/dewayne/.rbenv/versions/3.3.0/include/ruby-3.3.0/ruby/internal/core/rarray.h:51:36: note: expanded from macro 'RARRAY_LEN'
#define RARRAY_LEN                 rb_array_len                 /**< @alias{rb_array_len} */
                                   ^
ruby_fann.c:1227:31: warning: implicit conversion loses integer precision: 'long' to 'unsigned int' [-Wshorten-64-to-32]
    unsigned int num_output = RARRAY_LEN(expected_output);
                 ~~~~~~~~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/dewayne/.rbenv/versions/3.3.0/include/ruby-3.3.0/ruby/internal/core/rarray.h:51:36: note: expanded from macro 'RARRAY_LEN'
#define RARRAY_LEN                 rb_array_len                 /**< @alias{rb_array_len} */
                                   ^
ruby_fann.c:1537:73: warning: implicit conversion loses integer precision: 'unsigned long' to 'unsigned int' [-Wshorten-64-to-32]
    fann_set_cascade_activation_functions(f, fann_activation_functions, cnt);
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                               ^~~
ruby_fann.c:1593:24: warning: implicit conversion loses integer precision: 'long' to 'unsigned int' [-Wshorten-64-to-32]
    unsigned int cnt = RARRAY_LEN(cascade_activation_steepnesses);
                 ~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/dewayne/.rbenv/versions/3.3.0/include/ruby-3.3.0/ruby/internal/core/rarray.h:51:36: note: expanded from macro 'RARRAY_LEN'
#define RARRAY_LEN                 rb_array_len                 /**< @alias{rb_array_len} */
                                   ^
ruby_fann.c:1682:5: error: incompatible function pointer types passing 'VALUE (VALUE, VALUE)' (aka 'unsigned long (unsigned long, unsigned long)') to parameter of type 'VALUE (*)(VALUE)' (aka 'unsigned long (*)(unsigned long)') [-Wincompatible-function-pointer-types]
    rb_define_method(m_rb_fann_standard_class, "get_neurons", get_neurons, 0);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/dewayne/.rbenv/versions/3.3.0/include/ruby-3.3.0/ruby/internal/anyargs.h:288:135: note: expanded from macro 'rb_define_method'
#define rb_define_method(klass, mid, func, arity)           RBIMPL_ANYARGS_DISPATCH_rb_define_method((arity), (func))((klass), (mid), (func), (arity))
                                                                                                                                      ^~~~~~
/Users/dewayne/.rbenv/versions/3.3.0/include/ruby-3.3.0/ruby/internal/anyargs.h:277:1: note: passing argument to parameter here
RBIMPL_ANYARGS_DECL(rb_define_method, VALUE, const char *)
^
/Users/dewayne/.rbenv/versions/3.3.0/include/ruby-3.3.0/ruby/internal/anyargs.h:255:72: note: expanded from macro 'RBIMPL_ANYARGS_DECL'
RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _00(__VA_ARGS__, VALUE(*)(VALUE), int); \
                                                                       ^
ruby_fann.c:1780:5: error: incompatible function pointer types passing 'VALUE (VALUE, VALUE)' (aka 'unsigned long (unsigned long, unsigned long)') to parameter of type 'VALUE (*)(VALUE)' (aka 'unsigned long (*)(unsigned long)') [-Wincompatible-function-pointer-types]
    rb_define_method(m_rb_fann_shortcut_class, "get_neurons", get_neurons, 0);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/dewayne/.rbenv/versions/3.3.0/include/ruby-3.3.0/ruby/internal/anyargs.h:288:135: note: expanded from macro 'rb_define_method'
#define rb_define_method(klass, mid, func, arity)           RBIMPL_ANYARGS_DISPATCH_rb_define_method((arity), (func))((klass), (mid), (func), (arity))
                                                                                                                                      ^~~~~~
/Users/dewayne/.rbenv/versions/3.3.0/include/ruby-3.3.0/ruby/internal/anyargs.h:277:1: note: passing argument to parameter here
RBIMPL_ANYARGS_DECL(rb_define_method, VALUE, const char *)
^
/Users/dewayne/.rbenv/versions/3.3.0/include/ruby-3.3.0/ruby/internal/anyargs.h:255:72: note: expanded from macro 'RBIMPL_ANYARGS_DECL'
RBIMPL_ANYARGS_ATTRSET(sym) static void sym ## _00(__VA_ARGS__, VALUE(*)(VALUE), int); \
                                                                       ^
13 warnings and 3 errors generated.
make: *** [ruby_fann.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/dewayne/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/ruby-fann-2.0.2 for inspection.
Results logged to /Users/dewayne/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/extensions/arm64-darwin-23/3.3.0/ruby-fann-2.0.2/gem_make.out
12:59:53 3.3.0  nibiru:Downloads $ e /Users/dewayne/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/extensions/arm64-darwin-23/3.3.0/ruby-fann-2.0.2/gem_make.out

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions