ruby1.9でruby-gnome2を野良ebuild
大量のundefined reference to rbgobject_...が出て頓挫するかに見えたが原因を突き止めた。
LDFLAGSに-Wl,--no-undefinedがあるとエラーになる。
どこから-Wl,--no-undefinedが来ているのかと
遡っていくと
Makefile -> extconf.rb -> mkmf.rb ->
/usr/lib/ruby19/1.9.1/i686-linux/rbconfig.rb
の
109行目だった。
CONFIG["LDFLAGS"] = "-L. -Wl,-O1 -rdynamic -Wl,-export-dynamic -Wl,--no-undefined"
ruby-gnome2の方で手を打つのは無駄なので
直接このファイルの
-Wl,--no-undefinedを削除しちまいました。
その後で
dev-ruby/ruby-gnome2-0.19.0
のビルドを試みたところ問題なく完了。
一応ruby1.8を別のマシンでビルドして確認してみたが
--no-undefinedが書いてあるところは見つからなかった。
1.9から入ったのかも。
やったこと
/etc/make.confのPORTDIR_OVERLAYに野良ビルド用ディレクトリを追加(/usr/portage/local/custom)とした。
ruby-gnome2と依存するパッケージのebuildを2-0.16.0からコピーして、ファイル名のバージョンを2-0.19.0に更新。
$ ls /usr/portage/local/custom/dev-ruby ruby-atk ruby-gdkpixbuf2 ruby-glib2 ruby-gnome2 ruby-gnomecanvas2 ruby-gtk2 ruby-libart2 ruby-pango
個々のebuildはUSE_RUBYをruby19にして
当たらない古いパッチの書いてある行を削除してから
Manifestを作った。
# ebuild hoge.ebuid digest
然る後に
# ebuild ruby-gnome2
#!/usr/bin/env ruby require 'gtk2' window = Gtk::Window.new("Test") window.set_default_size(300,200) window.show_all Gtk.main
とりえあずWindowは出た。