Project

General

Profile

Bug #18046

Updated by kou (Kouhei Sutou) over 2 years ago

I was testing out my code on a CI and I noticed that the build broke with some compile errors. I reported it to the ruby-gnome project, and they think it's a missing include. Here's that bug: https://github.com/ruby-gnome/ruby-gnome/issues/1430 

 Here is the relevant snippet on the failure: 

 ```text 
 current directory: 
 /home/runner/.rubies/ruby-head/lib/ruby/gems/3.1.0/gems/glib2-3.4.6/ext/glib2 
 make DESTDIR\= 
 compiling glib-enum-types.c 
 glib-enum-types.c: In function ‘g_spawn_error_get_type’: 
 glib-enum-types.c:632:7: warning: ‘G_SPAWN_ERROR_2BIG’ is deprecated: Use 
 'G_SPAWN_ERROR_TOO_BIG' instead [-Wdeprecated-declarations] 
   632 |         { G_SPAWN_ERROR_2BIG, "G_SPAWN_ERROR_2BIG", "2big" }, 
       |         ^ 
 In file included from /usr/include/glib-2.0/glib.h:81, 
                  from /usr/include/glib-2.0/gobject/gbinding.h:28, 
                  from /usr/include/glib-2.0/glib-object.h:22, 
                  from rbgobject.h:24, 
                  from rbgprivate.h:32, 
                  from glib-enum-types.c:4: 
 /usr/include/glib-2.0/glib/gspawn.h:76:3: note: declared here 
 76 |     G_SPAWN_ERROR_2BIG 
 GLIB_DEPRECATED_ENUMERATOR_IN_2_32_FOR(G_SPAWN_ERROR_TOO_BIG) = 
 G_SPAWN_ERROR_TOO_BIG, 
       |     ^~~~~~~~~~~~~~~~~~ 
 glib-enum-types.c: At top level: 
 cc1: warning: unrecognized command line option ‘-Wno-self-assign’ 
 cc1: warning: unrecognized command line option ‘-Wno-parentheses-equality’ 
 cc1: warning: unrecognized command line option ‘-Wno-constant-logical-operand’ 
 compiling rbglib-bytes.c 
 compiling rbglib-gc.c 
 compiling rbglib-variant-type.c 
 compiling rbglib-variant.c 
 compiling rbglib.c 
 compiling rbglib_bookmarkfile.c 
 compiling rbglib_convert.c 
 compiling rbglib_datetime.c 
 compiling rbglib_error.c 
 compiling rbglib_fileutils.c 
 compiling rbglib_gettext.c 
 compiling rbglib_i18n.c 
 compiling rbglib_int64.c 
 compiling rbglib_io_constants.c 
 compiling rbglib_iochannel.c 
 compiling rbglib_iochannel_win32_socket.c 
 compiling rbglib_iochannelerror.c 
 compiling rbglib_keyfile.c 
 compiling rbglib_maincontext.c 
 compiling rbglib_mainloop.c 
 compiling rbglib_matchinfo.c 
 compiling rbglib_messages.c 
 rbglib_messages.c: In function ‘rbglib_log_handler’: 
 rbglib_messages.c:76:13: warning: ‘rb_iterate’ is deprecated: by: rb_block_call 
 since 1.9 [-Wdeprecated-declarations] 
    76 |               rb_iterate(rb_each, backtrace, 
       |               ^~~~~~~~~~ 
 In file included from 
 /home/runner/.rubies/ruby-head/include/ruby-3.1.0/ruby/defines.h:73, 
 from 
 /home/runner/.rubies/ruby-head/include/ruby-3.1.0/ruby/ruby.h:23, 
 from 
 /home/runner/.rubies/ruby-head/include/ruby-3.1.0/ruby.h:39, 
                  from rbgobject.h:25, 
                  from rbgprivate.h:32, 
                  from rbglib_messages.c:25: 
 /home/runner/.rubies/ruby-head/include/ruby-3.1.0/ruby/internal/iterator.h:48:46: 
 note: declared here 
 48 | DEPRECATED_BY(rb_block_call since 1.9, VALUE 
 rb_iterate(VALUE(*)(VALUE),VALUE,rb_block_call_func_t,VALUE)); 
       |                                                ^~~~~~~~~~ 
 /home/runner/.rubies/ruby-head/include/ruby-3.1.0/ruby/backward/2/attributes.h:60:65: 
 note: in definition of macro ‘DEPRECATED_BY’ 
    60 | #define DEPRECATED_BY(n,x) RBIMPL_ATTR_DEPRECATED(("by: " # n)) x 
       |                                                                   ^ 
 rbglib_messages.c: At top level: 
 cc1: warning: unrecognized command line option ‘-Wno-self-assign’ 
 cc1: warning: unrecognized command line option ‘-Wno-parentheses-equality’ 
 cc1: warning: unrecognized command line option ‘-Wno-constant-logical-operand’ 
 compiling rbglib_pollfd.c 
 compiling rbglib_regex.c 
 compiling rbglib_shell.c 
 compiling rbglib_shellerror.c 
 compiling rbglib_source.c 
 compiling rbglib_spawn.c 
 compiling rbglib_spawnerror.c 
 compiling rbglib_threads.c 
 compiling rbglib_timer.c 
 compiling rbglib_timezone.c 
 compiling rbglib_ucs4.c 
 compiling rbglib_unichar.c 
 compiling rbglib_unicode.c 
 compiling rbglib_utf16.c 
 compiling rbglib_utf8.c 
 compiling rbglib_utils.c 
 compiling rbglib_win32.c 
 compiling rbglibdeprecated.c 
 compiling rbgobj_binding.c 
 compiling rbgobj_boxed.c 
 compiling rbgobj_closure.c 
 compiling rbgobj_convert.c 
 compiling rbgobj_enumflags.c 
 compiling rbgobj_enums.c 
 compiling rbgobj_flags.c 
 compiling rbgobj_object.c 
 rbgobj_object.c: In function ‘gobj_new_body’: 
 rbgobj_object.c:367:5: warning: ‘rb_iterate’ is deprecated: by: rb_block_call 
 since 1.9 [-Wdeprecated-declarations] 
 367 |       rb_iterate(rb_each, (VALUE)arg->params_hash, _params_setup, 
 (VALUE)arg); 
       |       ^~~~~~~~~~ 
 In file included from 
 /home/runner/.rubies/ruby-head/include/ruby-3.1.0/ruby/defines.h:73, 
 from 
 /home/runner/.rubies/ruby-head/include/ruby-3.1.0/ruby/ruby.h:23, 
 from 
 /home/runner/.rubies/ruby-head/include/ruby-3.1.0/ruby.h:39, 
                  from rbgobject.h:25, 
                  from rbgprivate.h:32, 
                  from rbgobj_object.c:25: 
 /home/runner/.rubies/ruby-head/include/ruby-3.1.0/ruby/internal/iterator.h:48:46: 
 note: declared here 
 48 | DEPRECATED_BY(rb_block_call since 1.9, VALUE 
 rb_iterate(VALUE(*)(VALUE),VALUE,rb_block_call_func_t,VALUE)); 
       |                                                ^~~~~~~~~~ 
 /home/runner/.rubies/ruby-head/include/ruby-3.1.0/ruby/backward/2/attributes.h:60:65: 
 note: in definition of macro ‘DEPRECATED_BY’ 
    60 | #define DEPRECATED_BY(n,x) RBIMPL_ATTR_DEPRECATED(("by: " # n)) x 
       |                                                                   ^ 
 rbgobj_object.c: At top level: 
 cc1: warning: unrecognized command line option ‘-Wno-self-assign’ 
 cc1: warning: unrecognized command line option ‘-Wno-parentheses-equality’ 
 cc1: warning: unrecognized command line option ‘-Wno-constant-logical-operand’ 
 compiling rbgobj_param.c 
 compiling rbgobj_paramspecs.c 
 compiling rbgobj_signal.c 
 In file included from rbgobject.h:26, 
                  from rbgprivate.h:32, 
                  from rbgobj_signal.c:22: 
 rbgobj_signal.c: In function ‘gobj_s_signal_handler_attach’: 
 rbglib.h:91:22: warning: initialization of ‘VALUE’ {aka ‘long unsigned int’} 
 from ‘const gchar *’ {aka ‘const char *’} makes integer from pointer without a 
 cast [-Wint-conversion] 
    91 | #define RVAL2CSTR(v) (rbg_rval2cstr(&(v))) 
       |                        ^ 
 rbgobj_signal.c:722:26: note: in expansion of macro ‘RVAL2CSTR’ 
   722 |       VALUE handler_name = RVAL2CSTR(rb_handler_name); 
       |                            ^~~~~~~~~ 
 rbgobj_signal.c:727:34: warning: passing argument 2 of ‘g_rclosure_set_tag’ 
 makes pointer from integer without a cast [-Wint-conversion] 
   727 |       g_rclosure_set_tag(rclosure, handler_name); 
       |                                    ^~~~~~~~~~~~ 
       |                                    | 
       |                                    VALUE {aka long unsigned int} 
 In file included from rbgprivate.h:32, 
                  from rbgobj_signal.c:22: 
 rbgobject.h:240:64: note: expected ‘const gchar *’ {aka ‘const char *’} but 
 argument is of type ‘VALUE’ {aka ‘long unsigned int’} 
   240 | extern void g_rclosure_set_tag(GClosure *closure, const gchar *tag); 
       |                                                     ~~~~~~~~~~~~~^~~ 
 rbgobj_signal.c:734:32: warning: passing argument 2 of ‘rbg_define_method’ makes 
 pointer from integer without a cast [-Wint-conversion] 
 734 |           rbg_define_method(mod, handler_name, 
 gobj_sig_chain_from_overridden, -1); 
       |                                  ^~~~~~~~~~~~ 
       |                                  | 
       |                                  VALUE {aka long unsigned int} 
 In file included from rbgobject.h:27, 
                  from rbgprivate.h:32, 
                  from rbgobj_signal.c:22: 
 rbgutil.h:90:56: note: expected ‘const char *’ but argument is of type ‘VALUE’ 
 {aka ‘long unsigned int’} 
 90 | extern void rbg_define_method(VALUE klass, const char *name, VALUE 
 (*func)(ANYARGS), int argc); 
       |                                              ~~~~~~~~~~~~^~~~ 
 rbgobj_signal.c: At top level: 
 cc1: warning: unrecognized command line option ‘-Wno-self-assign’ 
 cc1: warning: unrecognized command line option ‘-Wno-parentheses-equality’ 
 cc1: warning: unrecognized command line option ‘-Wno-constant-logical-operand’ 
 compiling rbgobj_strv.c 
 compiling rbgobj_type.c 
 compiling rbgobj_typeinstance.c 
 compiling rbgobj_typeinterface.c 
 compiling rbgobj_typemodule.c 
 compiling rbgobj_typeplugin.c 
 compiling rbgobj_value.c 
 compiling rbgobj_valuetypes.c 
 compiling rbgobject.c 
 compiling rbgutil.c 
 compiling rbgutil_callback.c 
 In file included from 
 /home/runner/.rubies/ruby-head/include/ruby-3.1.0/ruby/intern.h:59, 
 from 
 /home/runner/.rubies/ruby-head/include/ruby-3.1.0/ruby/ruby.h:101, 
 from 
 /home/runner/.rubies/ruby-head/include/ruby-3.1.0/ruby.h:39, 
                  from rbgobject.h:25, 
                  from rbgprivate.h:32, 
                  from rbgutil_callback.c:21: 
 rbgutil_callback.c: In function ‘mainloop’: 
 /home/runner/.rubies/ruby-head/include/ruby-3.1.0/ruby/internal/intern/thread.h:34:31: 
 warning: implicit declaration of function ‘rb_wait_for_single_fd’ 
 [-Wimplicit-function-declaration] 
 34 | #define rb_thread_wait_fd(fd) rb_wait_for_single_fd((fd), 
 RUBY_IO_READABLE, NULL) 
       |                                 ^~~~~~~~~~~~~~~~~~~~~ 
 rbgutil_callback.c:102:9: note: in expansion of macro ‘rb_thread_wait_fd’ 
   102 |           rb_thread_wait_fd(callback_pipe_fds[0]); 
       |           ^~~~~~~~~~~~~~~~~ 
 /home/runner/.rubies/ruby-head/include/ruby-3.1.0/ruby/internal/intern/thread.h:34:31: 
 warning: nested extern declaration of ‘rb_wait_for_single_fd’ [-Wnested-externs] 
 34 | #define rb_thread_wait_fd(fd) rb_wait_for_single_fd((fd), 
 RUBY_IO_READABLE, NULL) 
       |                                 ^~~~~~~~~~~~~~~~~~~~~ 
 rbgutil_callback.c:102:9: note: in expansion of macro ‘rb_thread_wait_fd’ 
   102 |           rb_thread_wait_fd(callback_pipe_fds[0]); 
       |           ^~~~~~~~~~~~~~~~~ 
 /home/runner/.rubies/ruby-head/include/ruby-3.1.0/ruby/internal/intern/thread.h:34:59: 
 error: ‘RUBY_IO_READABLE’ undeclared (first use in this function) 
 34 | #define rb_thread_wait_fd(fd) rb_wait_for_single_fd((fd), 
 RUBY_IO_READABLE, NULL) 
 |                                                           
 ^~~~~~~~~~~~~~~~ 
 rbgutil_callback.c:102:9: note: in expansion of macro ‘rb_thread_wait_fd’ 
   102 |           rb_thread_wait_fd(callback_pipe_fds[0]); 
       |           ^~~~~~~~~~~~~~~~~ 
 /home/runner/.rubies/ruby-head/include/ruby-3.1.0/ruby/internal/intern/thread.h:34:59: 
 note: each undeclared identifier is reported only once for each function it 
 appears in 
 34 | #define rb_thread_wait_fd(fd) rb_wait_for_single_fd((fd), 
 RUBY_IO_READABLE, NULL) 
 |                                                           
 ^~~~~~~~~~~~~~~~ 
 rbgutil_callback.c:102:9: note: in expansion of macro ‘rb_thread_wait_fd’ 
   102 |           rb_thread_wait_fd(callback_pipe_fds[0]); 
       |           ^~~~~~~~~~~~~~~~~ 
 rbgutil_callback.c: At top level: 
 cc1: warning: unrecognized command line option ‘-Wno-self-assign’ 
 cc1: warning: unrecognized command line option ‘-Wno-parentheses-equality’ 
 cc1: warning: unrecognized command line option ‘-Wno-constant-logical-operand’ 
 make: *** [Makefile:246: rbgutil_callback.o] Error 1 

 make failed, exit code 2 

 Gem files will remain installed in 
 /home/runner/.rubies/ruby-head/lib/ruby/gems/3.1.0/gems/glib2-3.4.6 for 
 inspection. 
 Results logged to 
 /home/runner/.rubies/ruby-head/lib/ruby/gems/3.1.0/extensions/x86_64-linux/3.1.0/glib2-3.4.6/gem_make.out 

 An error occurred while installing glib2 (3.4.6), and Bundler cannot continue. 
 Make sure that `gem install glib2 -v '3.4.6' --source 'https://rubygems.org/'` 
 succeeds before bundling. 
 ``` 
 

Back