Bug #19704
closedUnable to install readline-ext since 18e55fc1e1ec20e8f3166e3059e76c885fc9f8f2
Description
Rails CI against Ruby 3.3.0dev fails to install readline-ext recenty.
https://buildkite.com/rails/rails/builds/96780#01886e3f-eaef-405c-b58a-e90c66c3036b
According to git bisect, it is triggered by 18e55fc1e1ec20e8f3166e3059e76c885fc9f8f2
Steps to reproduce¶
Install ruby 3.3.0dev
gem install readline-ext
Expected behavior¶
It should install readline-ext as the previous commit of Ruby 7ddcd0622f does.
$ ruby -v
ruby 3.3.0dev (2023-05-29T21:24:22Z master 7ddcd0622f) [x86_64-linux]
$ gem install readline-ext
Building native extensions. This could take a while...
Successfully installed readline-ext-0.1.5
Ignoring rbs-3.0.4 because its extensions are not built. Try: gem pristine rbs --version 3.0.4
Parsing documentation for readline-ext-0.1.5
Installing ri documentation for readline-ext-0.1.5
Done installing documentation for readline-ext after 0 seconds
1 gem installed
$
Actual result¶
$ ruby -v
ruby 3.3.0dev (2023-05-30T01:02:40Z master 18e55fc1e1) [x86_64-linux]
$ gem install readline-ext
Building native extensions. This could take a while...
ERROR: Error installing readline-ext:
ERROR: Failed to build gem native extension.
current directory: /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/readline-ext-0.1.5/ext/readline
/home/yahonda/.rbenv/versions/trunk/bin/ruby extconf.rb
checking for tgetnum() in -lncurses... yes
checking for readline/readline.h... yes
checking for readline/history.h... yes
checking for readline() in -lreadline... yes
checking for rl_getc() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_getc_function() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_filename_completion_function() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_username_completion_function() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_completion_matches() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_refresh_line() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_deprep_term_function in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_completion_append_character in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_completion_quote_character in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_basic_word_break_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_completer_word_break_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_basic_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_completer_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_filename_quote_characters in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_attempted_completion_over in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_library_version in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_editing_mode in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_line_buffer in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_point in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_char_is_quoted_p in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_event_hook in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_catch_sigwinch in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_catch_signals in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_pre_input_hook in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_special_prefixes in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_cleanup_after_signal() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_free_line_state() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_clear_signals() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_set_screen_size() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_get_screen_size() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_vi_editing_mode() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_emacs_editing_mode() in stdio.h,readline/readline.h,readline/history.h... yes
checking for replace_history_entry() in stdio.h,readline/readline.h,readline/history.h... yes
checking for remove_history() in stdio.h,readline/readline.h,readline/history.h... yes
checking for clear_history() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_redisplay() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_insert_text() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_delete_text() in stdio.h,readline/readline.h,readline/history.h... yes
checking for rl_hook_func_t* in stdio.h,readline/readline.h,readline/history.h... yes
creating Makefile
current directory: /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/readline-ext-0.1.5/ext/readline
make DESTDIR\= sitearchdir\=./.gem.20230601-64629-eyixt9 sitelibdir\=./.gem.20230601-64629-eyixt9 clean
current directory: /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/readline-ext-0.1.5/ext/readline
make DESTDIR\= sitearchdir\=./.gem.20230601-64629-eyixt9 sitelibdir\=./.gem.20230601-64629-eyixt9
compiling readline.c
readline.c: In function ‘prepare_readline’:
readline.c:386:16: error: invalid use of incomplete typedef ‘rb_io_t’ {aka ‘struct rb_io’}
386 | if (ifp->fd < 0) {
| ^~
readline.c:395:16: error: invalid use of incomplete typedef ‘rb_io_t’ {aka ‘struct rb_io’}
395 | if (ofp->fd < 0) {
| ^~
readline.c: In function ‘readline_s_set_input’:
readline.c:565:32: error: invalid use of incomplete typedef ‘rb_io_t’ {aka ‘struct rb_io’}
565 | fd = rb_cloexec_dup(ifp->fd);
| ^~
readline.c: In function ‘readline_s_set_output’:
readline.c:601:32: error: invalid use of incomplete typedef ‘rb_io_t’ {aka ‘struct rb_io’}
601 | fd = rb_cloexec_dup(ofp->fd);
| ^~
readline.c: At top level:
cc1: note: unrecognized command-line option ‘-Wno-self-assign’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-parentheses-equality’ may have been intended to silence earlier diagnostics
cc1: note: unrecognized command-line option ‘-Wno-constant-logical-operand’ may have been intended to silence earlier diagnostics
make: *** [Makefile:248: readline.o] Error 1
make failed, exit code 2
Gem files will remain installed in /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/gems/readline-ext-0.1.5 for inspection.
Results logged to /home/yahonda/.rbenv/versions/trunk/lib/ruby/gems/3.3.0+0/extensions/x86_64-linux/3.3.0+0-static/readline-ext-0.1.5/gem_make.out
Updated by hsbt (Hiroshi SHIBATA) over 1 year ago
- Related to Feature #19057: Hide implementation of `rb_io_t`. added
Updated by hsbt (Hiroshi SHIBATA) over 1 year ago
- Status changed from Open to Assigned
- Assignee set to ioquatix (Samuel Williams)
Updated by hsbt (Hiroshi SHIBATA) over 1 year ago
https://github.com/ruby/stringio is also build failure since 18e55fc1e1ec20e8f3166e3059e76c885fc9f8f2.
Updated by naruse (Yui NARUSE) over 1 year ago
- Status changed from Assigned to Closed
Applied in changeset git|85dcc4866d9ff29834596e9186cc97d622ee06f8.
Revert "Hide most of the implementation of struct rb_io
. (#6511)"
This reverts commit 18e55fc1e1ec20e8f3166e3059e76c885fc9f8f2.
fix [Bug #19704]
https://bugs.ruby-lang.org/issues/19704
This breaks compatibility for extension libraries. Such changes
need a discussion.