Cygwin 公式の Ruby が 2.6 が止まってる話を去年したのですが、一年経っていまだに orphaned なため、そろそろ Intent To Adopt (orphaned なパッケージのメンテナンスを引き取ること) に挑戦してみることにした。
というわけで ruby.cygport
を修正しつつ、その意図を理解しないといけない。
なんとか 3.2.2 向けに修正した差分を gist にこの記事の最後に置いておく。
パッチ
適用している patch をどのように選んでいるか?だが、fedora に追加されたものは可能な限り適用しているように見える。
たしかにメジャーディストリビューションのもの (= より多くのユーザが適用したものを使用しているもの) だから、適用した方が無難な気はする。
適用されている patch はすべて Ruby Issue Tracking System に issue として挙げられているものだった。*1
そこで 2.6 以降の patch を全部 PATCH_URI
に追加し、適用できなかったものを除いていくことにした。
バイナリパッケージ
成果物のバイナリパッケージは
ruby
ruby-devel
ruby-doc
ruby-tcltk
の 4 つだが、前の 3 つは他のディストリビューションでもよくある分け方であるし、最後のは obsolete であるため、そのままで良さそうと判断した。
コンテンツ
ダミールートにインストールしたもののから rdoc
と rubygems
といくつかの gem を削除していた。
rdoc
と rubygems
は別のパッケージにするためということはわかるが、net-telnet
などはそもそも 3.2.2 ではインストールされないわけで、インストールされる gem の差は何処にあるのかを探してたら、gems/bundled_gems
に列挙されていることがわかった。
これらは別途 gem
コマンドでインストールするべきだから ruby
のパッケージには同梱しないという意図だったようである。
その意図に沿うと did_you_mean
は 2.6.4 の時点では bundled であったが、3.2.2 では default (標準添付ライブラリ) になってるため、削除対象ではないと判断した。
あとは cygport ruby.cygport install
しては不要なファイルが残っていないかなどを 2.6.4 の中身と見比べては src_install()
の処理をいじるというのを繰り返した。
その他
ca-certificates
は実際に依存しているのか?はまだわかってない。make test
は大昔から failed なため、今回はスルー。did_you_mean
とracc
は標準添付ライブラリに昇格?したため、今まで個別パッケージだったものは obsolete にする。(という方針で良いはず。)/usr/bin/rubyw.exe
はなくても良い気がする。(これを意図的に使いたい事例を知らない。)
差分
これで投げる予定。(上のような説明の英文を書かないと...。)
*1:どの patch がその issue に対応するものであるかは https://src.fedoraproject.org/rpms/ruby/blob/rawhide/f/ruby.spec に記載されている。