きりかノート 3冊め

おあそびプログラミング

rb19-rcairoをつくった

MacPortsのport:ruby19の作業の際に、拡張ライブラリのコンパイルを確認しようとしたら既存のrb19-*がすべてgemという信じられない事実が判明したりした。1.9.2が出たら自分のRabbit環境を1.9.2にしようと思っていたのでどうせ自分用に使うし、ということでrcairoのport、rb19-rcairoをつくることにした。

すでにport:rb-modnameがある場合、ruby1.9系に対応させるのは簡単だ。

  1. rb19-modnameという名前でコピーする
  2. ruby.setupの指定でruby1.9を追加

これだけ。

特にコンパイルはエラーもなかったのだけど、使ってみようとすると"cairo.so"がないとか言われる。調べてみると、cairo.bundleが

 x86_64-darwin10/src/cairo.bundle

としてインストールされていることがわかった。"src"って?

ruby-1.8.7でつくったときと比べたりしてみるとMakefileのインストール処理がびみょうにちがっている。1.9.2でmkmf.rbが変更された影響だ。

 @@ -1682,8 +1803,8 @@
        mfile.print "\t@-$(RM) #{fseprepl[dest]}\n"
        mfile.print "\t@-$(RMDIRS) #{fseprepl[dir]}\n"
      else
 -      mfile.print "#{dest}: #{f}\n"
 -      mfile.print "\t$(INSTALL_PROG) #{fseprepl[f]} #{fseprepl[dir]}\n"
 +      mfile.print "#{dest}: #{f}\n\t@-$(MAKEDIRS) $(@D#{sep})\n"
 +      mfile.print "\t$(INSTALL_PROG) #{fseprepl[f]} $(@D#{sep})\n"
        if defined?($installed_list)
         mfile.print "\t@echo #{dir}/#{File.basename(f)}>>$(INSTALLED_LIST)\n"
        end

状況をだいた把握したものの、どう直せばよいのかはわからないので開発者の人(すとうさん)に連絡した。あっというまに「直しました!」との連絡がきたので、その修正をパッチにしてportに追加。

ということで、port:rb19-rcairoが使えるようになりました。