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