ruby-gnome2 for win32 作業中
全体の流れ(予定)
基本的には ruby-gnome2/win32installer/trunk/HOWTO.txt あたりをトレース.
Masao 神.
ちなみに,作業ディレクトリはこんな感じ.
- C:/
PKG_CONFIG_PATH の設定
export PKG_CONFIG_PATH=C:\\GTK\\lib\\pkgconfig
はい,gladewin32 を使ってないのがバレてますね
ruby-gnome2/glib の build
まずは glib
cd glib /c/ruby-gnome2/target/bin/ruby.exe extconf.rb --ruby=/c/ruby-gnome2/target/bin/ruby.exe make
make install
make install しない
rcairo の build
gladewin32 の cairo が 1.6.4 なので,rcairo-1.6.3 を持ってきてみた.
gladewin32 の lib/pkgconfig/cairo.pc の修正
win32 版の cairo-1.6.4 は pixman-1 を static link してるので不要.
gnome.org から落とせる cairo-dev-1.6.4-2.zip の cairo.pc では修正されている.
参考: http://www.nabble.com/pixman-1-was-not-found-in-the-pkg-config-td16842574.html
--- cairo.pc.org Sun Apr 20 01:14:48 2008 +++ cairo.pc Sat Dec 6 19:34:08 2008 @@ -7,7 +7,7 @@ Description: Multi-platform 2D graphics library Version: 1.6.4 -Requires.private: freetype2 >= 9.7.3 fontconfig libpng12 pixman-1 >= 0.10.0 +Requires.private: freetype2 >= 9.7.3 fontconfig libpng12 Libs: -L${libdir} -lcairo Libs.private: -lz -lz -lm Cflags: -I${includedir}/cairo
なぜか cairo が見つからないー見つけられないー
めんどくさいので cairo-dev-1.6.4-2/include/cairo/*.h と libcairo.dll.a をこぴぺ
参照: http://www.ruby-forum.com/topic/161513
やっとこさ build
/c/ruby-gnome2/target/bin/ruby.exe extconf.rb --ruby=/c/ruby-gnome2/target/bin/ruby.exe
make
make install
make install する
おなかすいた
ごはんまだーー
了解
まずは GTK-dev for win32 を作らないとなのね
再開
基本的には http://ftp.gnome.org/pub/binaries/win32 から
hoge.zip と hoge-dev.zip を落としてきて展開して C:\GTK にガッとコピー.
あとは pkgconfig がなんとかしてくれる?
バージョンは基本的には 2.24 系を回避しつつ適宜新しいのを選んでみた.
特に根拠はない.
以下は ruby-gnome2 のサブディレクトリと,突っ込んだ gnome のライブラリ群.この順.
依存関係は多分 C:\GTK\lib\pkgconfig\*.pc をひたすら読むのが速い.
動いてくれたらいいなー
glib
なし
pango
なし
gtk
なし
atk
なし
gdkpixbuf
- gail-1.22.0
gconf
- GConf-2.20.0
- ORBit2-2.14.3
libart
jpeglib の boolean やら INT32 やらが MinGW 標準の header と衝突してハマる.
INT32 は int と long なのでとりあえずスルーすることにして (#define XMD_H),
boolean は int (jmorecfg.h) と unsigned char (rpcndr.h < winsock2.h < windows.h) なので困った.
というか,boolean なんて勝手に定義してんじゃねーです.
まあ,どうせここで rpcndr.h なんて使わないし,めんどくさいので,こんな感じで回避.怖.
これはさすがにあんまりやなぁ…
--- rbart_canvas.c Thu Oct 23 22:24:04 2008 +++ rbart_canvas.c.mingw32 Sat Dec 6 23:36:02 2008 @@ -11,7 +11,17 @@ **********************************************************************/ +/* jpeglib conflicts with the headers in MinGW + * INT32: long (jmorecfg.h) <=> int (basestd.h) + * boolean: int (jmorecfg.h) <=> unsigned char (rpcndr.h) + * + * use INT32 of basestd.h and boolean of jpeglib + */ +#define XMD_H + +#define boolean boolean2 #include "rbart.h" +#undef boolean #include <jpeglib.h> #include <png.h>
gnomeprint
- libgnomeprint-1.12.1
gnomeprintui
- libgnomeprintui-1.12.1
gnomecanvas
- libgnomecanvas-2.22.0
gnome
- libgnome-2.20.1
- libgnomeui-2.22.1
rbgnome.h が sys/time.h を include してるが,これが ruby/win32/win32.h と衝突する.
とりあえず sys/time.h を回避.
--- rbgnome.h Thu Oct 23 22:24:04 2008 +++ rbgnome.h.mingw32 Sun Dec 7 00:02:45 2008 @@ -20,7 +20,9 @@ #define ENABLE_NLS 1 +#ifndef __MINGW32__ #include <sys/time.h> +#endif #include <gnome.h> #undef PATH_SEP
gtkglext
なし
libglade
なし
goocanvas
- goocanvas-0.12
rsvg
なし
gtksourceview
- gtksourceview-1.8.5
gtksourceview2
- gtksourceview-2.2.2
bonoboui
- libbonoboui-2.22.0
bonobo
- libbonobo-2.22.0
はい,win32 に X なんてあるはずがないですね.
--- rbbonobo-main.c Sun Dec 7 01:03:22 2008 +++ rbbonobo-main.c.mingw32 Sun Dec 7 01:03:46 2008 @@ -97,7 +97,10 @@ rbonobo_setup_x_error_handler(self) VALUE self; { +#ifdef __MINGW32__ +#else bonobo_setup_x_error_handler(); +#endif return self; }
gstreamer
パス
gtkhtml2
今はgtkhtml3なのでぁ…?
gtkmozembed
ぁぅー
panel-applet
知るか
vte
うにゅー
poppler
ひぎぃ
ということでまとめ
Target libraries: glib, gdkpixbuf, pango, atk, gtk, bonobo, bonoboui, gconf, gnome, gnomecanvas, gnomeprint, gnomeprintui, gnomevfs, goocanvas, gtkglext, gtksourceview, gtksourceview2, libart, libglade, rsvg Ignored libraries: gstreamer, gtkhtml2, gtkmozembed, panel-applet, poppler, vte
まあ,このぐらいで勘弁してください.
というか,win32 でほんとにテストしてるのかと言いたい.言い放ちたい.
…してるわけないですよねごめんなさい.
動いたー
ktkr
/c/ruby-gnome2/target/bin/ruby -e "require 'gtk2'; w = Gtk::Window.new; w.signal_connect('destroy') { Gtk.main_quit }; w.s how_all; Gtk.main"
いや,画像はないけどさ
註:本当は make install してないので動きません
インストーラを作る
基本的には HOWTO.txt のトレースでよいのだが,仕様変更も多いので注意.
rake をインストール
ruby/zlib を入れるのを忘れたので,gem 経由ではなく直接入れる.
Rakefile の修正
--- Rakefile.org Mon Feb 12 11:37:25 2007 +++ Rakefile Sun Dec 7 06:05:13 2008 @@ -105,7 +105,8 @@ mkdir_p dest_dir unless File.exist? dest_dir cp_r(File.join(sitelibdir, "cairo.rb"), dest_dir) mkdir_p File.join(dest_dir, "cairo") unless File.exist? File.join(dest_dir, "cairo") - cp_r(Dir.glob(File.join(sitelibdir, "cairo")), File.join(dest_dir, "cairo")) + mkdir_p File.join(dest_dir, "i386-msvcrt") unless File.exist? File.join(dest_dir, "i386-msvcrt") + cp_r(Dir.glob(File.join(sitelibdir, "cairo")), dest_dir) cp_r(Dir.glob(File.join(sitelibdir, "i386-msvcrt", "cairo.so")), File.join(dest_dir, "i386-msvcrt")) cp_r(Dir.glob(File.join(sitelibdir, "i386-msvcrt", "rb_cairo.h")), File.join(dest_dir, "i386-msvcrt")) end
makeinstall という名のファイル列挙
ruby-gnome2 の make install をもう一度.install.log がいるっぽい
てぃがーぅ.HOWTO.txt の誤植.
--- HOWTO.txt.org Sun Dec 7 02:57:56 2008 +++ HOWTO.txt Sun Dec 7 02:58:01 2008 @@ -15,7 +15,7 @@ 5. Install ruby-gnome2 with MinGW. $ rake clean - $ rake make_install + $ rake makeinstall 6. Copy GTK+ files. Run this when you have new GTK+ only. $ rake copygtk
これは target に ruby-gnome2 をインストールする処理ではなく,
パッケージになにを収めたらよいかを調べる処理なのです.
それが install.log.
で,0.16 の時には気にしなくてよかった余計な行が約 1 行あるので,消す.
install -c -m 0755 c:/ruby-gnome2/ruby-gnome2-all-0.18.1/libglade/bin/ruby-glade-create-template c:/ruby-gnome2/target/bin
Rakefile の編集
HOWTO.txt のとおり.
setup.nsi の編集
バージョンをうっかり 0.16 のままにしてしまうと悲しすぎる
--- setup.nsi.org Mon Feb 12 11:37:24 2007 +++ setup.nsi Sun Dec 7 02:24:06 2008 @@ -6,7 +6,7 @@ ; HM NIS Edit Wizard helper defines !define PRODUCT_NAME "Ruby-GNOME2" -!define PRODUCT_VERSION "0.16.0-1" +!define PRODUCT_VERSION "0.18.1-1" !define PRODUCT_PUBLISHER "Masao Mutoh" !define PRODUCT_WEB_SITE "http://ruby-gnome2.sourceforge.jp/" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
作成
はい.ここも HOWTO.txt と違う
rake copygtk
rake copyglade
rake copydoc
rake copysamples
rake copyrcairo # さっきの処理をやっとかないと死ぬ
rake copyrgnome2
rake makensis
理由は知らん
まとめ
また明日.今日はもう寝るの.おやすみなさいなの.
こっそりさらしておきますが,かなりぁゃιぃので命が惜しくない人はテストしていただければ.
One-click installer for Ruby-Gnome2 0.18.1 nora build