バグ #1412
完了plugin/uitranslator/Gemfile が irb >=1.2.0 を要求している
説明
バグというより change request ですが
source:plugin/uitranslator/Gemfile で
gem 'irb', '>= 1.2.0', '< 1.3'
が指定されていますが、
ruby 2.5 にバンドルされている irb は 0.9.6
ruby 2.6 にバンドルされている irb は 1.0.0
ruby 2.7 にバンドルされている irb は 1.2.0
rubygems にある最新版の irb は 1.2.1
ということらしいので、 ruby 2.6 以下の状態で mikutter 4.0.0 を起動すると
bundle で irb 1.2.1 を取得する動作になってしまいます。
そもそも irb を明示的に指定する必要があるのかどうかもわかっていませんが
0.9.6 でも許容するようにできないか検討をお願いします。
参考
https://twitter.com/_taca_/status/1209818971739803649
@tsutsuii % uname -sr
NetBSD 9.0_RC1
% irb26
irb(main):001:0> IRB.version
=> "irb 1.0.0 (2018-12-18)"
irb(main):002:0> quit
% irb25
irb(main):001:0> IRB.version
=> "irb 0.9.6(09/06/30)"なので、差し支えなければ0.9.6以上にしといてくれると良かったのですけどねぇ。
toshi_a 初音 さんがほぼ5年前に更新
わざわざirbを要求しているのは、gettextがirbで定義されているクラスに依存しているからです。
このため、irbがバンドルされなくなったRuby 2.6あたりから、Gemfileに明示的に指定しなければクラッシュするようになりました(チケットが見当たらねえ)。
>= 1.2.0
を要求しているのは、バージョンを低く固定する必要がないgemについては、指定をこのようにしているだけです。
0.9.6に下げるのは問題ないですが、バージョンを上げても良くなる条件がないので躊躇しますね。一方、gettextも改修される見込みがないので、古いirbで固定しておいてもよいのかも、という気持ちもあります。
Izumi Tsutsui さんがほぼ5年前に更新
バージョン履歴を見るのをサボってますが、Twitterでこんな話出てますね……
https://twitter.com/watson1978/status/1210156831001047041
昨日 Ruby 2.7 がリリースされたけど、もうすでに irb 関連のバグが 5 件くらい報告されているので、いろいろさわってほしいとのこと。不具合を「Ruby irb」あたりのワードをつけて雑にツイートするだけでエゴサーチしてくれるらしいw #asakusarb
Izumi Tsutsui さんがほぼ5年前に更新
toshi_a 初音 さんは書きました:
gettextがirbで定義されているクラスに依存しているからです。
これ、具体的にどれかってわかりますか?
pkgsrc の ruby 担当の人も なんで? という反応だったので。
Izumi Tsutsui さんがほぼ5年前に更新
irb のクラスに依存しているというのはそのとおりとのことでした。
ただ、 Ruby 2.7 でも irb は Ruby 本体にバンドルされているとのこと。
https://twitter.com/_taca_/status/1211178786772832258
https://twitter.com/_taca_/status/1211255513331036163
@tsutsuii Ruby 2.7でもirbはバンドルされています。
Arch Linuxのパッケージシステムの都合ではないでしょうか?
実は Arch だけが irb の最新を使いたいがために Ruby 本体にバンドルされているものを入れていない、
ということは無いでしょうか? だとしても Archの場合はどうするんだ、という話はありますが……。
toshi_a 初音 さんがほぼ5年前に更新
なるほど。俺の記憶では、Ruby 2.5か2.6あたりで起動するとmikutterが直ちにクラッシュし、原因を調べたところirbがバンドルされなくなり、明示的にGemfileに書かなくてはいけなくなったのでそうした、ということです。コミットログを見たところ、チケットを作らずに対応してしまっていたようです。
現在Ruby2.6.5でGemfile.lockからirbが消えるような状態にしても何故か起動しているので、記憶違いかもしれませんね。実家なのでRuby 2.5で検証するのやりたくないのですが、もし2.5系でもirbをGemfileに書かなくても問題なく起動と海外のロケールでの表示ができるのであれば、消してしまって構いませんよ。
toshi_a 初音 さんがほぼ5年前に更新
俺の記憶の方が間違ってるのはほぼ確実なのであまり意味はないですが、Archではなく、Ruby自体の変更によって全ての環境で発生する問題だと記憶してます。
なので、Archで試す必要はないです。
Izumi Tsutsui さんがほぼ5年前に更新
https://twitter.com/nalsh/status/1211971184021008385
https://github.com/ruby-gettext/gettext/issues/64
- gettext が irb 内部のパーサー実装に依存していた
- ruby 2.7 に bundle される irb 1.2 では irb パーサーの実装が変わっている
- Arch は irb の最新版を利用するようになっていた?
Yeah, Arch uses the latest version of IRB. And btw IRB been decoupled from ruby core recently and moved to a separate project.
2.5 のときに問題が起きたのか? というのはこれだけからは読み取れませんが。(上記の issue は 3日前の 12/29 付け)
toshi_a 初音 さんがほぼ5年前に更新
gettext が irb 内部のパーサー実装に依存していた
#1412-note1 のとおりですね。
ruby 2.7 に bundle される irb 1.2 では irb パーサーの実装が変わっている
これは知らなかった問題です。issueも見ましたが、本件では一旦考えなくてよいのでは?
Arch は irb の最新版を利用するようになっていた?
Archは常に最新版を使うようになっているはずです。
しかし、それはArchの問題なので、mikutterでは感知しません。
toshi_a 初音 さんがほぼ5年前に更新
- ステータス を 実装待ち から レビュー待ち に変更
- 担当者 を Izumi Tsutsui にセット
- ブランチ を topic/1412-delete-irb-dependency にセット
議論の余地がもうないので、修正しました。これで起動できることをつついさんに確認してもらえたらmergeします。
Izumi Tsutsui さんがほぼ5年前に更新
- ステータス を レビュー待ち から マージ待ち に変更
source:topic/1412-delete-irb-dependency と DISABLE_BUNDLE_SETUP=1 の組み合わせで
pkgsrc の ruby 2.6 で起動できました。
ありがとうございます。