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 カ所)