主にLinux向けとして開発されているようだが、初公開の時点で「Windows版無いの(´・ω・`)?」と言われたように、Windows版の需要がやはりそれなりに存在する。
そこで、MinGW使ってRuby/GTK2環境を整え、Windowsでもみくった〜♪を動作させることはできないものか?と考え、実際にやってみた。
※ただ使ってみたいだけ、という方はみくった〜♪ for Windowsのページかみくった〜♪ for Windows 毎日0,12時に自動ビルドされるバージョンからどうぞ。
ビルドに必要なソフトウェアやライブラリは以下の通り。
MinGW GCC 4.5.0
ftp://ftp.jaist.ac.jp/pub/sourceforge/m/project/mi/mingw/Automated%20MinGW%20Installer/mingw-get-inst/mingw-get-inst-20100831/mingw-get-inst-20100831.exe
ruby 1.8.7-p302
ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.8.7-p302.tar.bz2
ruby-gtk2-0.19.4
http://ftp.jaist.ac.jp/pub/sourceforge/r/project/ru/ruby-gnome2/ruby-gnome2/ruby-gnome2-0.19.4/ruby-gtk2-0.19.4.tar.gz
ruby-hmac-0.3
http://deisui.org/~ueno/ruby/hmac.html
http://deisui.org/~ueno/ruby/ruby-hmac-0.3.tar.gz
iconv
ftp://ftp.gnu.org/gnu/libiconv/libiconv-1.13.1.tar.gz
GTK+
http://ftp.gnome.org/pub/gnome/binaries/win32/gtk+/2.20/gtk+-bundle_2.20.0-20100406_win32.zip
Win32 OpenSSL
http://www.slproweb.com/products/Win32OpenSSL.html
http://www.slproweb.com/download/Win32OpenSSL-0_9_8o.exe
Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86) OpenSSL用
http://www.microsoft.com/downloads/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=ja
可能な限りソースからビルドするようにしたが、OpenSSLとGTK+は面倒だったので、とりあえずWindows用バイナリを利用することにした。…OpenSSLをMinGWでビルドすれば、MSVC++ランタイム要らなくなるのだが…。
MinGWによるビルド環境の構築
以前はMinGW(コンパイラ)とMSYS(サブシステム)を個別に用意し、セットアップする必要があったが、現在はmingw-get-instパッケージに纏められた模様。これをダウンロードし、普通のソフトウェアのインストーラと同じようにウィザードを進めていくだけでビルド環境が整う。
デフォルトでは、Windowsのパス変数もMSYSのパス変数として登録されてしまい、混乱の原因となるので、PATH変数を変更しておく。
$ PATH="/mingw/bin:/usr/local/bin:/bin"
iconvのビルド
一番最初にiconvをビルドする。といっても、普通に
$ ./configure --prefix=/mingw
$ make
$ make install
のような感じでおk。
本当なら/usr/localあたりにprefixを置いて、そこにインストールすべきな筈なのだが、私のCFLAGSやLDFLAGSの認識がおかしいのか、rubyのiconvライブラリのextconf.rbが/usr/localに置いたiconvを見つけられないため、諦めて/mingwにprefixを置く。
必要なライブラリの展開
GTK+のアーカイブを解凍し、そのまま全て/mingwに展開する。
OpenSSLは、インストーラを実行しインストールした先にあるディレクトリを、GTK+同様に/mingwに展開する。
また、OpenSSLを利用するために必要なMicrosoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)もインストールしておく。
Rubyのビルド
いつも通りRubyをビルドする。
$ ./configure --prefix=/ruby
$ make
$ make install
prefixを/rubyにしたが、make installする際にMSYSの/を飛び越えるため(コンパイルしたRubyがインストールに使用されるから?)、Windows側の\rubyにインストールされるので注意が必要。
そして、Windows側にインストールされたRubyを、MinGWの/usr/localあたりに移動しておく。
Ruby/GTK2のビルド
Ruby/GTK2のアーカイブを解凍し、extconf.rbを先程作成したRubyで実行する。
$ /usr/local/bin/ruby extconf.rb
そして後はmake、make installするだけの筈なのだが、MinGWでRuby/GTK2をビルドすると何故か毎度gtkのビルドでコケる。
どうやらこれからビルドされる筈のgtk2.soを、ビルド前にリンクしようとするかららしい。
そこで、gtkのMakefileを編集する。
何らかのエディタでgtk/src/Makefileを開き、LIBS = $(LIBRUBYARG_SHARED)...で始まる行の、-lgtk2を削除。
後はいつも通り。
$ make
$ make install
この時点で、Ruby/GTK2自体の開発/実行環境は整っていることになる。
MSYSでの作業はここで終了。
必要なファイルのみを纏め、最小限のRuby/GTK実行環境を作成
MSYSの/usr/localにはRuby/GTKの実行環境が整っている(ライブラリは足りないが)ので、これを適当なディレクトリにコピーし、rubyディレクトリとする。
rubyディレクトリのbinに、iconv、OpenSSL、GTK+の*.dllをコピー。
そして、RubyのLOAD_PATHのどこかにruby-hmacを展開。
後はみくった〜♪をダウンロードして展開、普通に起動できれば、みくった〜♪実行環境完成となる。
mikutter.exeを作成
毎度コマンドラインでruby mikutter.rbとしたり、バッチファイルを実行するのはどことなく落ち着かない。
また、Rubyの環境すべてがrubyディレクトリに入っているので、配布するにしてもかなりのサイズになってしまう。
そこで、更に必要なファイルだけを纏め、Windowsの実行ファイル形式で配布する形をとる。
exeファイル化には、exerbを利用する。
exerbの使用方法は、
・mkexy mikutter.rbでレシピファイルmikutter.exyを自動生成
・exerb mikutter.exyとすると、mikutter.exeが作成される
という感じである。
ここで作成されたバイナリは、Ruby環境無しで動作するものなので、あとはmikutterのディレクトリ階層とdllの配置をするだけ。
exerbの詳しい使用方法、レシピファイルの書式については、
公式ページ http://exerb.sourceforge.jp/やmikutter for Windows付属のmikutter.exyを参照して欲しい。
みくった〜♪ 本家
http://toshia.dip.jp/
http://mikutter.d.hachune.net/
みくった〜♪ for Windowsのページ
http://append.hachune.net/mikutter.html
みくった〜♪ for Windows 毎日0,12時に自動ビルドされるバージョン
http://file.hachune.net/mikutter/
0 件のコメント:
コメントを投稿