Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

io-console fails to build on TruffleRuby 24.2.0-dev #3722

Closed
nirvdrum opened this issue Nov 19, 2024 · 2 comments
Closed

io-console fails to build on TruffleRuby 24.2.0-dev #3722

nirvdrum opened this issue Nov 19, 2024 · 2 comments

Comments

@nirvdrum
Copy link
Collaborator

We run a nightly CI job at Shopify against truffleruby-dev builds (installed by ruby-build) and it has begun failing because it cannot compile the io-console extension. I suspect this may be related to the recent CRuby 3.3.5 import. 52589d5 fixed compilation of this particular extension only a couple of months ago, which should help with bisecting.

The error log is:

❯ ruby -v
truffleruby 24.2.0-dev-3f96be0e, like ruby 3.3.5, GraalVM CE Native [arm64-darwin23]

❯ gem install io-console -v 0.7.2
Fetching io-console-0.7.2.gem
Building native extensions. This could take a while...
ERROR:  Error installing io-console:
        ERROR: Failed to build gem native extension.

    current directory: /Users/nirvdrum/.rubies/truffleruby-dev/lib/gems/gems/io-console-0.7.2/ext/io/console
/Users/nirvdrum/.rubies/truffleruby-dev/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: /Users/nirvdrum/.rubies/truffleruby-dev/lib/gems/gems/io-console-0.7.2/ext/io/console
make DESTDIR\= sitearchdir\=./.gem.20241119-36163-5d615v sitelibdir\=./.gem.20241119-36163-5d615v clean

current directory: /Users/nirvdrum/.rubies/truffleruby-dev/lib/gems/gems/io-console-0.7.2/ext/io/console
make DESTDIR\= sitearchdir\=./.gem.20241119-36163-5d615v sitelibdir\=./.gem.20241119-36163-5d615v
compiling console.c
console.c:1549:11: warning: 'pathv' is deprecated: rb_io_path [-Wdeprecated-declarations]
 1549 |     fptr->pathv = path;
      |           ^
/Users/nirvdrum/.rubies/truffleruby-dev/lib/cext/include/ruby/io.h:173:5: note: 'pathv' has been explicitly marked deprecated here
  173 |     RBIMPL_ATTR_DEPRECATED(("rb_io_path"))
      |     ^
/Users/nirvdrum/.rubies/truffleruby-dev/lib/cext/include/ruby/internal/attr/deprecated.h:36:53: note: expanded from macro 'RBIMPL_ATTR_DEPRECATED'
   36 | # define RBIMPL_ATTR_DEPRECATED(msg) __attribute__((__deprecated__ msg))
      |                                                     ^
console.c:1550:11: warning: 'mode' is deprecated: rb_io_mode [-Wdeprecated-declarations]
 1550 |     fptr->mode |= mode;
      |           ^
/Users/nirvdrum/.rubies/truffleruby-dev/lib/cext/include/ruby/io.h:159:5: note: 'mode' has been explicitly marked deprecated here
  159 |     RBIMPL_ATTR_DEPRECATED(("rb_io_mode"))
      |     ^
/Users/nirvdrum/.rubies/truffleruby-dev/lib/cext/include/ruby/internal/attr/deprecated.h:36:53: note: expanded from macro 'RBIMPL_ATTR_DEPRECATED'
   36 | # define RBIMPL_ATTR_DEPRECATED(msg) __attribute__((__deprecated__ msg))
      |                                                     ^
console.c:1559:1: error: static declaration of 'rb_io_closed_p' follows non-static declaration
 1559 | rb_io_closed_p(VALUE io)
      | ^
/Users/nirvdrum/.rubies/truffleruby-dev/lib/cext/include/ruby/io.h:393:7: note: previous declaration is here
  393 | VALUE rb_io_closed_p(VALUE io);
      |       ^
console.c:1562:18: warning: 'fd' is deprecated: rb_io_descriptor [-Wdeprecated-declarations]
 1562 |     return fptr->fd == -1 ? Qtrue : Qfalse;
      |                  ^
/Users/nirvdrum/.rubies/truffleruby-dev/lib/cext/include/ruby/io.h:155:5: note: 'fd' has been explicitly marked deprecated here
  155 |     RBIMPL_ATTR_DEPRECATED(("rb_io_descriptor"))
      |     ^
/Users/nirvdrum/.rubies/truffleruby-dev/lib/cext/include/ruby/internal/attr/deprecated.h:36:53: note: expanded from macro 'RBIMPL_ATTR_DEPRECATED'
   36 | # define RBIMPL_ATTR_DEPRECATED(msg) __attribute__((__deprecated__ msg))
      |                                                     ^
3 warnings and 1 error generated.
make: *** [console.o] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/nirvdrum/.rubies/truffleruby-dev/lib/gems/gems/io-console-0.7.2 for inspection.
Results logged to /Users/nirvdrum/.rubies/truffleruby-dev/lib/gems/extensions/arm64-darwin/3.3.5.3/io-console-0.7.2/gem_make.out

@andrykonchin
Copy link
Member

andrykonchin commented Nov 20, 2024

Thank you for the report!

The fix is prepared and the PR is about to be merged.

JFTR The issue was also reported in ruby/irb#1032.

@andrykonchin
Copy link
Member

Fixed in 63fc60e

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants