Rubinius を Tiger でコンパイルするためのパッチ
日本全国で 3 人くらいはいるんじゃないかと思っているんだけど、MacOS X 10.4 Tiger を使っていて、かつ Rubinius がコンパイルできなくで困っている人はいませんか。
バグ登録して直してもらうようにお願いしたら、「みんな Leopard に移行したから直せないかも」と言われてしまった・・・なんだよー、Tiger 切り捨てかよ!
絶望した! Tiger でコンパイルできない Rubinius に絶望した!
・・・と思ってたら、seydar が直してくれました。
これはどうやら 10.5 Leopard に対応させたら Tiger でバグったということみたいです。
#Evan は「Rubinius ではシステム依存をなくす」といっているんだけど、道のりは遠いなあ。
ただし、なぜかまだ本体へのリポジトリには含まれてません。理由は知らん。
追記:今みたら本体のリポジトリに commit されてました。よって下のパッチを当てる必要はありません。普通に rake git:update してください。
diff --git a/shotgun/lib/machine.h b/shotgun/lib/machine.h index 8b934d1..dcbf9b0 100644 --- a/shotgun/lib/machine.h +++ b/shotgun/lib/machine.h @@ -25,7 +25,7 @@ struct rubinius_machine { int show_config; ucontext_t g_firesuit; /* work around a bug in 10.5's libc versus header files */ -#if __DARWIN_UNIX03 +#if defined(__APPLE__) && defined(HAS_UCONTEXT) _STRUCT_MCONTEXT __system_mc; #endif int g_use_firesuit; diff --git a/shotgun/lib/subtend/nmc.h b/shotgun/lib/subtend/nmc.h index 2d0b07b..8e88102 100644 --- a/shotgun/lib/subtend/nmc.h +++ b/shotgun/lib/subtend/nmc.h @@ -18,11 +18,11 @@ struct rni_nmc { int jump_val; ucontext_t system; /* work around a bug in 10.5's libc versus header files */ -#if __DARWIN_UNIX03 +#if defined(__APPLE__) && defined(HAS_UCONTEXT) _STRUCT_MCONTEXT __system_mc; #endif ucontext_t cont; -#if __DARWIN_UNIX03 +#if defined(__APPLE__) && defined(HAS_UCONTEXT) _STRUCT_MCONTEXT __cont_mc; #endif
要は、「#if __DARWIN_UNIX03」となっている箇所を「#if defined(__APPLE__) && defined(HAS_UCONTEXT)」に変更するだけ。対象となるファイルは以下の 2 つ、修正箇所は計 3 つ 。
- shotgun/lib/machine.h (1 カ所)
- shotgun/lib/subtend/nmc.h (2 カ所)