ruby と rubygems を何とかしたため、次は次回以降に ruby 側に ruby-tcltk の obsolete を書かなくて良いように ruby-tk を更新することにした。
手元でパッケージする時にがっつり見逃してしまっていたが、2 つほど問題が発生していた。
1 つ目はラッパースクリプトのインストール先である bin
ディレクトリがおかしいこと。
WARNING: You build with buildroot. Build root: /cygdrive/d/a/scallywag/playground/ruby-tk-0.4.0-1.x86_64/inst Bin dir: /cygdrive/d/a/scallywag/playground/ruby-tk-0.4.0-1.x86_64/inst/cygdrive/d/a/scallywag/playground/ruby-tk-0.4.0-1.x86_64/inst/usr/bin Gem home: /cygdrive/d/a/scallywag/playground/ruby-tk-0.4.0-1.x86_64/inst/usr/share/gems Plugins dir: /cygdrive/d/a/scallywag/playground/ruby-tk-0.4.0-1.x86_64/inst/usr/share/gems/plugins
これについては --build-root
オプションを指定した時は --bindir
は buildroot からの相対パスと解釈されることが原因だったため、さくっと cygport の patch を書いた。*1
2 つ目はダミールートへのインストール時に ArgumentError が発生すること。
100% [353/353] lib/tkwinpkg.rb ERROR: While executing gem ... (ArgumentError) wrong number of arguments (ArgumentError) /usr/share/ruby/3.2/fileutils.rb:883:in `cp' /usr/share/gems/gems/rdoc-6.1.2/lib/rdoc/generator/darkfish.rb:597:in `rescue in install_rdoc_static_file' /usr/share/gems/gems/rdoc-6.1.2/lib/rdoc/generator/darkfish.rb:587:in `install_rdoc_static_file' /usr/share/gems/gems/rdoc-6.1.2/lib/rdoc/generator/darkfish.rb:220:in `block in write_style_sheet' /usr/share/gems/gems/rdoc-6.1.2/lib/rdoc/generator/darkfish.rb:219:in `each' /usr/share/gems/gems/rdoc-6.1.2/lib/rdoc/generator/darkfish.rb:219:in `write_style_sheet' /usr/share/gems/gems/rdoc-6.1.2/lib/rdoc/generator/darkfish.rb:244:in `generate' /usr/share/gems/gems/rdoc-6.1.2/lib/rdoc/rubygems_hook.rb:137:in `block in document' /usr/share/gems/gems/rdoc-6.1.2/lib/rdoc/rubygems_hook.rb:134:in `chdir' /usr/share/gems/gems/rdoc-6.1.2/lib/rdoc/rubygems_hook.rb:134:in `document' /usr/share/gems/gems/rdoc-6.1.2/lib/rdoc/rubygems_hook.rb:196:in `generate' /usr/share/gems/gems/rdoc-6.1.2/lib/rdoc/rubygems_hook.rb:56:in `block in generation_hook' /usr/share/gems/gems/rdoc-6.1.2/lib/rdoc/rubygems_hook.rb:55:in `each' /usr/share/gems/gems/rdoc-6.1.2/lib/rdoc/rubygems_hook.rb:55:in `generation_hook' /usr/share/rubygems/rubygems/request_set.rb:311:in `block in install_hooks' /usr/share/rubygems/rubygems/request_set.rb:310:in `each' /usr/share/rubygems/rubygems/request_set.rb:310:in `install_hooks' /usr/share/rubygems/rubygems/request_set.rb:286:in `install_into' /usr/share/rubygems/rubygems/request_set.rb:147:in `install' /usr/share/rubygems/rubygems/commands/install_command.rb:214:in `install_gem' /usr/share/rubygems/rubygems/commands/install_command.rb:230:in `block in install_gems' /usr/share/rubygems/rubygems/commands/install_command.rb:223:in `each' /usr/share/rubygems/rubygems/commands/install_command.rb:223:in `install_gems' /usr/share/rubygems/rubygems/commands/install_command.rb:169:in `execute' /usr/share/rubygems/rubygems/command.rb:327:in `invoke_with_build_args' /usr/share/rubygems/rubygems/command_manager.rb:252:in `invoke_command' /usr/share/rubygems/rubygems/command_manager.rb:192:in `process_args' /usr/share/rubygems/rubygems/command_manager.rb:150:in `run' /usr/share/rubygems/rubygems/gem_runner.rb:51:in `run' /usr/bin/gem:10:in `<main>'
これは rdoc-6.1.2 が ruby-3.2.2 ではキーワード引数の非互換で動かなくなっていた模様。
ruby を 2.6 から 3.2 に一気に上げてしまって、警告が出る 2.7 をすっ飛ばしていたため、普通に気づかなかった。
rdoc を ruby 本体よりも先に最新にしておけば、大丈夫だったかもしれないが、後の祭り。
困ったことに最新の rdoc-6.5.0 に更新しようにも、scallywag がパッケージ作成時に使う rdoc が 6.1.2 であるため、同じ理由でパッケージ作成がコケる。
そのため、rdoc-6.5.0 は久々に手元でパッケージにしてアップロードすることにした。
手元では rdoc-6.2.1 をアンインストールして、gem install rdoc
で HOME 配下にインストールした rdoc-6.5.0 を使うことで上記の問題を回避した。
ruby-rdoc は更新しないと inherit rubygems
している ports の再ビルドが全滅だったため、「早く何とかしないといけない」と、これまた冷や汗をかいていたが、まあ無事に解消できた。
ruby-tk を更新できたことで native extension を持つ gem も問題なくビルドできることを確認できた。
あとは ruby_2*
依存を持つものをビルドし直しをのんびりすることになりそう。*2