いけむランド

はてダからやってきました

rdoc も先に更新しておくべきだった

ruby と rubygems を何とかしたため、次は次回以降に ruby 側に ruby-tcltk の obsolete を書かなくて良いように ruby-tk を更新することにした。

www.mail-archive.com

手元でパッケージする時にがっつり見逃してしまっていたが、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

www.mail-archive.com

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 ではキーワード引数の非互換で動かなくなっていた模様。

www.ruby-lang.org

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