きりかノート 3冊め

おあそびプログラミング

MacPortsのPortGroup rubyをsubport対応に

per5, php, pythonなんかでは以前からひとつのPortfileで複数のインタプリタのバージョンに対応したsubportをまとめて登録できるようになっている。たとえば、perl5だとperl5.brahcnes・pythonだとpython.versionsというオプションで登録するsubportのバージョンを指示できる。

rubyではgemでみんな自分で入れるだろうし(最近のrb22-やrb23-てportはぜんぜん登録されてない)、いらないかなあと思ってとくに作ってなかったのだけど、ruby-2.4の準備中に「以前本体に入ってたruby/tkくらいは用意しておくか」と思ってちょっと作業してみたら、わりと簡単に対応できたのでコミットしといた

  • ruby.branchesという値を導入
  • これの設定があると、ruby.setup中でsubportを登録する
  • 以下の点はperl5やphpと異なる
    • 必須ではない
    • ruby.branchesの先頭の値がデフォルトのバージョンとなり、replaced_byされる。(他はdefault_branchのバージョンがデフォルトになるが、rubyは過去の互換性のためdefault_branchが1.8になっている)

もともとはruby/tkように準備していたものの、X11の問題があってお蔵入りになってしまい、使わないのもくやしいので、bundlerに入れておいた。

   % port info --subports rb-bundler
   subports: rb23-bundler, rb24-bundler

rb-bundlerというPortfileで2.3と2.4のsubportが登録されている。

これであとはport:rubyをport:ruby18に改名すれば、個人的にはやっと1.8の呪縛から脱出できる感じがするねえ。