varvet / pundit

Minimal authorization through OO design and pure Ruby classes
MIT License
8.3k stars 633 forks source link

Builds on main fail on truffleruby head #840

Open Burgestrand opened 1 day ago

Burgestrand commented 1 day ago

Seems to be a change with Rails 8 dependencies not compiling.

In Gemfile:
  railties was resolved to 8.0.0, which depends on
    irb was resolved to 1.14.1, which depends on
      reline was resolved to 0.5.11, which depends on
        io-console

... and io-console is unable to be compiled due to compilation warnings:

console.c:1549:5: warning: ‘pathv’ is deprecated: rb_io_path
[-Wdeprecated-declarations]
 1549 |     fptr->pathv = path;
      |     ^~~~
actions log output ``` Installing actionpack 8.0.0 Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /home/runner/work/pundit/pundit/vendor/bundle/truffleruby/3.3.5.4/gems/io-console-0.7.2/ext/io/console /home/runner/.rubies/truffleruby-head/bin/ruby extconf.rb checking for rb_io_path()... yes checking for rb_io_descriptor()... yes checking for rb_io_get_write_io()... yes checking for rb_io_closed_p()... no checking for rb_io_open_descriptor()... no checking for termios.h... yes checking for cfmakeraw() in termios.h... yes checking for sys/ioctl.h... yes checking for HAVE_RUBY_FIBER_SCHEDULER_H... yes creating Makefile current directory: /home/runner/work/pundit/pundit/vendor/bundle/truffleruby/3.3.5.4/gems/io-console-0.7.2/ext/io/console make DESTDIR\= sitearchdir\=./.gem.20241121-1919-ov6lf sitelibdir\=./.gem.20241121-1919-ov6lf clean current directory: /home/runner/work/pundit/pundit/vendor/bundle/truffleruby/3.3.5.4/gems/io-console-0.7.2/ext/io/console make DESTDIR\= sitearchdir\=./.gem.20241121-1919-ov6lf sitelibdir\=./.gem.20241121-1919-ov6lf compiling console.c console.c: In function ‘io_open_descriptor_fallback’: console.c:1549:5: warning: ‘pathv’ is deprecated: rb_io_path [-Wdeprecated-declarations] 1549 | fptr->pathv = path; | ^~~~ In file included from console.c:10: /home/runner/.rubies/truffleruby-head/lib/cext/include/ruby/io.h:174:11: note: declared here 174 | VALUE pathv; | ^~~~~ console.c:1550:5: warning: ‘mode’ is deprecated: rb_io_mode [-Wdeprecated-declarations] 1550 | fptr->mode |= mode; | ^~~~ In file included from console.c:10: /home/runner/.rubies/truffleruby-head/lib/cext/include/ruby/io.h:160:9: note: declared here 160 | int mode; | ^~~~ console.c: At top level: console.c:1559:1: error: static declaration of ‘rb_io_closed_p’ follows non-static declaration 1559 | rb_io_closed_p(VALUE io) | ^~~~~~~~~~~~~~ In file included from console.c:10: /home/runner/.rubies/truffleruby-head/lib/cext/include/ruby/io.h:393:7: note: previous declaration of ‘rb_io_closed_p’ with type ‘VALUE(VALUE)’ {aka ‘long unsigned int(long unsigned int)’} 393 | VALUE rb_io_closed_p(VALUE io); | ^~~~~~~~~~~~~~ console.c: In function ‘rb_io_closed_p’: console.c:1562:5: warning: ‘fd’ is deprecated: rb_io_descriptor [-Wdeprecated-declarations] 1562 | return fptr->fd == -1 ? Qtrue : Qfalse; | ^~~~~~ In file included from console.c:10: /home/runner/.rubies/truffleruby-head/lib/cext/include/ruby/io.h:156:9: note: declared here 156 | int fd; | ^~ make: *** [Makefile:489: console.o] Error 1 make failed, exit code 2 Gem files will remain installed in /home/runner/work/pundit/pundit/vendor/bundle/truffleruby/3.3.5.4/gems/io-console-0.7.2 for inspection. Results logged to /home/runner/work/pundit/pundit/vendor/bundle/truffleruby/3.3.5.4/extensions/x86_64-linux/3.3.5.4/io-console-0.7.2/gem_make.out /home/runner/.rubies/truffleruby-head/lib/mri/rubygems/ext/builder.rb:125:in `run' /home/runner/.rubies/truffleruby-head/lib/mri/rubygems/ext/builder.rb:51:in `block in make' /home/runner/.rubies/truffleruby-head/lib/mri/rubygems/ext/builder.rb:43:in `each' /home/runner/.rubies/truffleruby-head/lib/mri/rubygems/ext/builder.rb:43:in `make' /home/runner/.rubies/truffleruby-head/lib/mri/rubygems/ext/ext_conf_builder.rb:42:in `build' /home/runner/.rubies/truffleruby-head/lib/mri/rubygems/ext/builder.rb:193:in `build_extension' /home/runner/.rubies/truffleruby-head/lib/mri/rubygems/ext/builder.rb:227:in `block in build_extensions' /home/runner/.rubies/truffleruby-head/lib/mri/rubygems/ext/builder.rb:224:in `each' /home/runner/.rubies/truffleruby-head/lib/mri/rubygems/ext/builder.rb:224:in `build_extensions' /home/runner/.rubies/truffleruby-head/lib/mri/rubygems/installer.rb:853:in `build_extensions' /home/runner/.rubies/truffleruby-head/lib/mri/bundler/rubygems_gem_installer.rb:109:in `build_extensions' /home/runner/.rubies/truffleruby-head/lib/mri/bundler/rubygems_gem_installer.rb:28:in `install' /home/runner/.rubies/truffleruby-head/lib/mri/bundler/source/rubygems.rb:205:in `install' /home/runner/.rubies/truffleruby-head/lib/mri/bundler/installer/gem_installer.rb:54:in `install' /home/runner/.rubies/truffleruby-head/lib/mri/bundler/installer/gem_installer.rb:16:in `install_from_spec' /home/runner/.rubies/truffleruby-head/lib/mri/bundler/installer/parallel_installer.rb:132:in `do_install' /home/runner/.rubies/truffleruby-head/lib/mri/bundler/installer/parallel_installer.rb:123:in `block in worker_pool' /home/runner/.rubies/truffleruby-head/lib/mri/bundler/worker.rb:62:in `apply_func' /home/runner/.rubies/truffleruby-head/lib/mri/bundler/worker.rb:57:in `block in process_queue' core/kernel.rb:417:in `loop' /home/runner/.rubies/truffleruby-head/lib/mri/bundler/worker.rb:54:in `process_queue' /home/runner/.rubies/truffleruby-head/lib/mri/bundler/worker.rb:90:in `block (2 levels) in create_threads' An error occurred while installing io-console (0.7.2), and Bundler cannot continue. In Gemfile: railties was resolved to 8.0.0, which depends on irb was resolved to 1.14.1, which depends on reline was resolved to 0.5.11, which depends on io-console Error: The process '/home/runner/.rubies/truffleruby-head/bin/bundle' failed with exit code 5 ```
Burgestrand commented 1 day ago

Seems related to this: https://github.com/oracle/truffleruby/issues/3722