プロジェクト

全般

プロフィール

バグ #1412

完了

plugin/uitranslator/Gemfile が irb >=1.2.0 を要求している

Izumi Tsutsui さんが4年以上前に追加. 約4年前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
プラグイン名:
uitranslator
クラッシュする:
いいえ

説明

バグというより 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 初音 さんが4年以上前に更新

わざわざirbを要求しているのは、gettextがirbで定義されているクラスに依存しているからです。
このため、irbがバンドルされなくなったRuby 2.6あたりから、Gemfileに明示的に指定しなければクラッシュするようになりました(チケットが見当たらねえ)。

>= 1.2.0 を要求しているのは、バージョンを低く固定する必要がないgemについては、指定をこのようにしているだけです。

0.9.6に下げるのは問題ないですが、バージョンを上げても良くなる条件がないので躊躇しますね。一方、gettextも改修される見込みがないので、古いirbで固定しておいてもよいのかも、という気持ちもあります。

Izumi Tsutsui さんが4年以上前に更新

バージョン履歴を見るのをサボってますが、Twitterでこんな話出てますね……

https://twitter.com/watson1978/status/1210156831001047041

昨日 Ruby 2.7 がリリースされたけど、もうすでに irb 関連のバグが 5 件くらい報告されているので、いろいろさわってほしいとのこと。不具合を「Ruby irb」あたりのワードをつけて雑にツイートするだけでエゴサーチしてくれるらしいw #asakusarb

Izumi Tsutsui さんが約4年前に更新

toshi_a 初音 さんは書きました:

gettextがirbで定義されているクラスに依存しているからです。

これ、具体的にどれかってわかりますか?
pkgsrc の ruby 担当の人も なんで? という反応だったので。

Izumi Tsutsui さんが約4年前に更新

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 初音 さんが約4年前に更新

なるほど。俺の記憶では、Ruby 2.5か2.6あたりで起動するとmikutterが直ちにクラッシュし、原因を調べたところirbがバンドルされなくなり、明示的にGemfileに書かなくてはいけなくなったのでそうした、ということです。コミットログを見たところ、チケットを作らずに対応してしまっていたようです。

現在Ruby2.6.5でGemfile.lockからirbが消えるような状態にしても何故か起動しているので、記憶違いかもしれませんね。実家なのでRuby 2.5で検証するのやりたくないのですが、もし2.5系でもirbをGemfileに書かなくても問題なく起動と海外のロケールでの表示ができるのであれば、消してしまって構いませんよ。

toshi_a 初音 さんが約4年前に更新

俺の記憶の方が間違ってるのはほぼ確実なのであまり意味はないですが、Archではなく、Ruby自体の変更によって全ての環境で発生する問題だと記憶してます。
なので、Archで試す必要はないです。

Izumi Tsutsui さんが約4年前に更新

https://twitter.com/nalsh/status/1211971184021008385
https://github.com/ruby-gettext/gettext/issues/64

gettext 自身の問題に加えて、 Arch固有の問題もあるっぽいです。
  • 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 初音 さんが約4年前に更新

gettext が irb 内部のパーサー実装に依存していた

#1412-note1 のとおりですね。

ruby 2.7 に bundle される irb 1.2 では irb パーサーの実装が変わっている

これは知らなかった問題です。issueも見ましたが、本件では一旦考えなくてよいのでは?

Arch は irb の最新版を利用するようになっていた?

Archは常に最新版を使うようになっているはずです。
しかし、それはArchの問題なので、mikutterでは感知しません。

toshi_a 初音 さんが約4年前に更新

  • ステータス分類待ち から 実装待ち に変更

toshi_a 初音 さんが約4年前に更新

  • ステータス実装待ち から レビュー待ち に変更
  • 担当者Izumi Tsutsui にセット
  • ブランチtopic/1412-delete-irb-dependency にセット

議論の余地がもうないので、修正しました。これで起動できることをつついさんに確認してもらえたらmergeします。

Izumi Tsutsui さんが約4年前に更新

  • ステータスレビュー待ち から マージ待ち に変更

source:topic/1412-delete-irb-dependency と DISABLE_BUNDLE_SETUP=1 の組み合わせで
pkgsrc の ruby 2.6 で起動できました。
ありがとうございます。

toshi_a 初音 さんが約4年前に更新

  • ステータスマージ待ち から 終了 に変更

merged.

他の形式にエクスポート: Atom PDF