One-click installer for Ruby-Gnome2-0.18.1 まとめ
ruby は美しいし GNOME は便利だけど win32 用が古すぎるとお嘆きのあなた.
最新の one-click installer を作ってみませんか?
これは unofficial な情報です.なので本家の人々にゴルァしたりしないでください.
必要なもの・使ったもの
- MinGW
- gladewin32
- Gtk+ 2.12.9 Development Environment Revision2
- その他のGNOME のライブラリたち (hoge-version.zip と hoge-dev-version.zip の両方)
- GConf-2.20.0
- ORBit2-2.14.3
- gail-1.22.0
- gnome-vfs.2.22.0
- goocanvas-0.12
- gtksourceview-1.8.5
- gtksourceview-2.2.2
- libbonobo-2.22.0
- libbonoboui-2.22.0
- libgnomeprint-1.12.1
- libgnomeprintui-1.12.1
- libgnome-2.20.1
- libgnomecanvas-2.22.0
- libgnomeui-2.22.1
- libgnomeprint-2.12.1
- libgnomeprintui-2.12.1
- poppler-0.6.4 (2008.12.09追記)
- rcairo-1.6.3 gladewin32 の cairo が 1.6.4 なのです
- NSIS
- ruby_1_8_6 svn から 1.8.6 の current を取ってきて使いました
- rake インストーラ作成に必要
- ruby-gnome2-all-0.18.1
- win32installer/trunk
環境の作成
ディレクトリ構造
c:\ GTK\ ruby-gnome2-dev\ rcairo-1.6.3\ ruby_1_8_6\ ruby-gnome2-all-0.18.1\ win32installer\trunk\ dist\ MinGW\ msys\1.0\ Program Files\NSIS\
NSIS のセットアップ
普通.
始める前に
これ以降の作業は MSYS 上で行います.
とりあえず
unset RUBYOPT
ruby の build
ほんとは必要ないかも.
- prefix に注意.謎.
- make install する
ruby_1_8_6 $ ./configure --prefix=/ruby-gnome2-dev/dist ruby_1_8_6 $ make ruby_1_8_6 $ make install
rcairo の build
C:\GTK\lib\pkgconfig\cairo.pc の修正
--- 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
win32 版の cairo-1.6.4 は pixman-1 を static link している.なので不要.
gnome.org から落とせる cairo-1.6.4-2 では修正されてるみたい.
http://www.nabble.com/pixman-1-was-not-found-in-the-pkg-config-td16842574.html
cairo がみつからない
rcairo-1.6.3 $ cp /c/GTK/include/cairo/*.h ./ rcairo-1.6.3 $ cp /c/GTK/lib/libcairo.dll.a ./
たぶんもうちょっとまともな方法があるはず.
rcairo の build
- make install する
rcairo-1.6.3 $ /c/ruby-gnome2-dev/dist/bin/ruby.exe extconf.rb --ruby=/c/ruby-gnome2-dev/dist/bin/ruby.exe rcairo-1.6.3 $ make rcairo-1.6.3 $ make install
ruby-gnome2 の build
基本的には http://ruby-gnome2.sourceforge.jp/hiki.cgi?compile_mingw.
でももうすでにちょっと違う.
とりあえずまず
export CAIRO_PATH=/c/ruby-gnome2-dev/rcairo-1.6.3
そして基本的に,make install しない.
ruby-gnome2/libart/src/rbart_canvas.c の修正
--- rbart_canvas.c.bak Thu Oct 23 22:24:04 2008 +++ rbart_canvas.c Sun Dec 7 11:48:09 2008 @@ -11,7 +11,17 @@ **********************************************************************/ +#ifdef __MINGW32__ +#define XMD_H +#endif + +#ifdef __MINGW32__ +#define boolean boolean2 #include "rbart.h" +#undef boolean +#else +#include "rbart.h" +#endif #include <jpeglib.h> #include <png.h>
jpeglib の boolean と INT32 が mingw のライブラリと干渉するため.
boolean は jpeglib の,INT32 は mingw のを使用.
ruby-gnome2/gnome/src/rbgnome.h の修正
-- rbgnome.h.bak Thu Oct 23 22:24:04 2008 +++ rbgnome.h 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
sys/time.h と ruby/win32/win32.h が衝突するため.
ruby-gnome2/bonobo/src/rbbonobo-main.c の修正
--- rbbonobo-main.c.bak Sun Dec 7 01:03:22 2008 +++ rbbonobo-main.c 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; }
win32 に X はない…けどこれでいいのかなぁ
ruby-gnome2/glib の build
ruby-gnome2-all-0.18.1 $ cd glib glib $ /c/ruby-gnome2-dev/dist/bin/ruby.exe extconf.rb --ruby=/c/ruby-gnome2-dev/dist/bin/ruby.exe glib $ make
その他の build
ruby-gnome2-all-0.18.1 $ /c/ruby-gnome2-dev/dist/bin/ruby.exe extconf.rb --ruby=/c/ruby-gnome2-dev/dist/bin.ruby.exe ruby-gnome2-all-0.18.1 $ make
で,この作業で作れるのがこんな感じ.
Target libraries: glib, gdkpixbuf, pango, atk, gtk, bonobo, bonoboui, gconf, gnome, gnomecanvas, gnomeprint, gnomeprintui, gnomevfs, goocanvas, gtkglext, gtksourceview, gtksourceview2, libart, libglade, poppler, rsvg Ignored libraries: gstreamer, gtkhtml2, gtkmozembed, panel-applet, vte
なんかいろいろ入ってないけど,gstreamer とかむりぽ.
インストーラの作成
実は今までも win32installer/trunk/HOWTO.txt のトレースできたのだが,
仕様変更も多いので一筋縄ではいかんのです.
とりあえずは,もうそろそろ dist の ruby に path を通しておいてもいいかなと.
export PATH=/c/ruby-gnome2-dev/dist/bin:$PATH
作業ディレクトリは /c/ruby-gnome2-dev/win32installer/trunk.
win32installer/trunk/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
win32/installer/trunk/Rakefile の編集
これは HOWTO.txt にあるとおり.
GTK_DIR = "c:/GTK" CAIRO_DIR = "c:/ruby-gnome2-dev/rcairo-1.6.3" MINGW_DIR = "c:\\MinGW" MSYS_DIR = "c:\\msys\\1.0" NSIS_DIR = "C:\\Program Files\\NSIS" RGNOME2_DIR = "c:/ruby-gnome2-dev/ruby-gnome2-all-0.18.1"
なんか入り乱れてるけど気にしない.
setup.nsi の編集
--- 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}"
とりあえずこれだけ頑張ってバージョンが変わらないのは悲しすぎ.
まあ,本来ならもうちょっといろいろ編集すべき.
README_win32.txt, NEWS_win32.txt の編集
めんどくさいので適宜.
インストールするファイルの列挙
win32installer/trunk $ rake makeinstall
そう,だから ruby-gnome2 を make しても install はしなかったの.
で,ruby-gnome2-all-0.18.1/install.log が生成され,これを parse してファイル一覧とするわけですが,
一行嬉しくない行が残ってるので,下記のような行を探し,消す.
install -c -m 0755 c:/ruby-gnome2/ruby-gnome2-all-0.18.1/libglade/bin/ruby-glade-create-template c:/ruby-gnome2/target/bin
インストーラの作成
win32installer/trunk $ rake copygtk # かなりかかる win32installer/trunk $ rake copyglade win32installer/trunk $ rake copydoc win32installer/trunk $ rake copysamples win32installer/trunk $ rake copyrcairo win32installer/trunk $ rake copyrgnome2 win32installer/trunk $ rake makensis
完成
…という作業を経てこれができるわけですよ.
One-click installer for Ruby-Gnome2 0.18.1 unofficial
まあ.自分用.
README も古いし足りないのもいっぱいある微妙な奴なので,参考程度に.
まともになれば本家さんにも一応お話したほうがいいんだろうけど.
謝辞
Masao 神.