rb-gnome +universalがインストールできないとか言われたので対応
「rb-gnomeを+universalで入れようとしたら、rb-pkg-configでエラーがでるよん」とのレポートがきた。
チケットに書いたように問題点は(指摘の件だけでなく)2つあって、
- rb-pkg-configがsupported_archs noarchが必要なのにない。pure rubyなので、アーキテクチャを気にする必要はないので。
- rb-gnomeのport群が+universalしてもユニバーサルバイナリにならない。ビルド・インストールは成功するけど、メインのarchでビルドされてしまう。
後者の問題はけっこうやっかいで、ruby-1.9ではruby本体で複数アーキテクチャのライブラリ作成のサポートとかもあるんだけど、ruby-1.8だと個々のアーキテクチャごとにextconf.rbをやる必要がある。
で、Ruby-Gnome2だと各モジュールごとにサブディレクトリがあるわけで、+universal時に適切な`ruby'でextconf.rbをかけてやる必要がある。
アーキテクチャごとにビルドしてマージするのはPortGroup muniversalすればいいけど、extconf.rbがどーしたものか。
本当はPortGroup rubyでどうにかするのが良いのだろうけど、とにかく解決することを優先して、スマートさはともかくpost-configureでarch -i${arch} rubyでextconf.rbをかけ直すことで対処した。
変更内容はこんな感じ。(r74726)
Index: ruby/rb-glib2/Portfile =================================================================== --- ruby/rb-glib2/Portfile (revision 74725) +++ ruby/rb-glib2/Portfile (revision 74726) @@ -1,12 +1,13 @@ # $Id$ PortSystem 1.0 +PortGroup muniversal 1.0 PortGroup ruby 1.0 ruby.setup {glib2 ruby-gnome2} 0.90.5 extconf.rb \ { glib2/README glib2/sample } \ sourceforge:ruby-gnome2 -revision 0 +revision 1 maintainers kimuraw platforms darwin description Ruby/GLib2 is a Ruby binding of GLib-2.x. @@ -22,6 +23,16 @@ port:rb-pkg-config distname ${ruby.project}-all-${version} +# run extconf.rb with each arch `ruby' +use_parallel_build no +post-configure { + if {[variant_isset universal]} { + foreach arch ${universal_archs} { + system "/usr/bin/arch -${arch} ${ruby.bin} -C ${worksrcpath}-${arch}/glib2/ext/glib2 extconf.rb --vendor" + } + } +} + # NOTE: for developer only. this test launches X11.app. #test.run yes test.cmd ${ruby.bin}