トップ «前の日記(2010-06-04) 最新 次の日記(2010-06-06)» 編集

日々の破片

著作一覧

2010-06-05

_ OSXでrubiniusをrakeするメモ

いろいろ要求されるものの関連がわからずに時間がかかったので、rubiniusを作るためのメモを残す。

後で必要になるものをまず用意する(素のOSXの場合)。

Xcode。これは当然。

portコマンドを作る。結局、これがなければ後の作業がとんでもなく大変になる。

pkgもあるが、作っても良いかも。svnのリリースレポジトリのタグリストから今ならrelease_1_8__2を取り出す。svn export http://svn.macports.org/repository/macports/tags/release_1_8_2。Make用ディレクトリはbaseなのでcd baseする。このままだと/optにインストールされて面倒なので、--prefixを使ってインストールしたい場所にしておく。cf)./configure --prefix=$HOME。そこまでできたら、make install。--prefix=/usr/localとかしたら、当然sudoする。

portができたら、いろいろportする。

port -d selfupdate
port install nkf
port install git-core(長時間注意)

rakeとgemが新しくないといろいろ困ることになるので、OSXデフォルトのrubyを利用する前提で、全部更新する。

sudo gem update --system
sudo gem install rake
(複数のrubyがいり混ざった環境だと、/usr/bin/rubyを見に行ったりされることがある(どれか忘れた)ので厄介なことになる)

gitが手に入ったので、rubiniusを取り出す。

mkdir git;cd git
git clone git://github.com/evanphx/rubinius.git
cd rubinius ./configure --prefix=$HOME
rake install

$HOMEを指定した場合、rubiniusは、$HOME/rubinius/にインストールされる。現在のバージョンだとコマンド(rbx)は$HOME/rubinius/1.0/binにインストールされるので、PATHに加えておく。

はまったところ。

途中でいろいろportを入れたりいじったので、$HOME/includeや$HOME/libが正しく参照されていなかったらしく、rake時にはOSXに最初から入っているlibiconvを参照して、しかし実行時にはportが入れたlibiconvを参照して、動作しなかった。

rubinius/1.0/lib/iconv.rbを開くと、attach_functionで参照する関数名が乗っているので、iconv -> libiconvのように、関数名の先頭にlibを付けるか、または実行時にロードするlibiconvを/usr/lib/libiconvに変えるように設定する(が、面倒なので直接iconv.rbを修正した)。

_ rubinius用に拡張ライブラリを書き直す

使いたい関数やマクロが定義されていないので、いろいろ直す必要がある。

基本は、rb_funcallを使うこと。

いずれにしろMRI互換レイヤーみたいなものは、rb_funcallで実装されているので同じことだ。

互換レイヤのソースディレクトリは、vm/capi。

特に、RHASH_TBLは「1」にdefineされているので、そのままではmakeできなくなる。#if defined(RUBINIUS)する。

_ rubiniusでirb

rbx irb 盲点だった。

2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|

ジェズイットを見習え