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は出た。