
14 Jun
2025
14 Jun
'25
7:55 a.m.
こんにちは。 pkgsrc方面で devel/ruby-google-protobuf の作成が ruby34 (Ruby 3.4.x)で エラーになると報告があって調べてみたのですが、 google-protobufのgemspecファイルでは、 s.extensions = ["ext/google/protobuf_c/extconf.rb".freeze, "ext/google/protobuf_c/Rakefile".freeze] という記述があり、これは Gem::Specification の@extensionsとなります。 そして、google-protobufのgemは、この順序で拡張のビルドを行わなう前提と なっているようです。 ところが、3月20日に、 https://github.com/rubygems/rubygems/commit/792117980b 変更された内容をRubyGems 3.6.7をマージしたRuby 3.4.3以降では Gem::Specification#noemalizeで@extensionsをソートしています。 そうすると、google-protobufは@extensionsの順序が判定してしまって、結果 としてエラーになっている状況でした。 順序に依存しているgoogle-protobuf gemの方の問題なのかどうか、その辺り はわかりませんが、pkgsrcではruby34のlib/rubygems/specification.rbを 修正して解決しました。 正しい解決方法はわかっていませんが、以上報告でした。 -- 神戸 隆博 / Takahiro Kambe