こんにちは。

http://www.modruby.net/ に辿り着けず、バグ報告の先がよくわからないので、
忘れないようにここに報告します。

mod_ruby 1.1.1をapache2で使用するためのap2-rubyというNetBSDのpkgsrcを
先日(問題報告に基づいて)追加したのですが、nativeなスレッドを持たない
NetBSD 1.6.1以前でのコンパイルに問題がありました。

apache 2.0.47のライブラリの方で、スレッドのサポートがない場合は、

#define APR_HAS_THREADS           0

とヘッダファイルのapr.hに定義されます。ところが、mod_ruby.cなどでは、

#ifdef APR_HAS_THREADS
...
#endif

として判断をしているので、常にスレッドありとしてコンパイルを試みること
となります。そこでpkgsrcの方では以下のような修正を行って、コンパイルで
きるようにしました。

-- 
神戸 隆博 / Takahiro Kambe


$NetBSD: patch-aa,v 1.1 2003/07/27 08:07:06 taca Exp $

--- mod_ruby.c.orig	Mon Mar 17 11:34:23 2003
+++ mod_ruby.c
@@ -86,7 +86,7 @@ static const char *default_kcode;
 static int ruby_is_running = 0;
 array_header *ruby_required_libraries = NULL;
 
-#ifdef APR_HAS_THREADS
+#if APR_HAS_THREADS
 #include "apr_thread_cond.h"
 
 static apr_thread_t *ruby_thread;
@@ -662,7 +662,7 @@ static void ruby_finalize_interpreter()
     }
 }
 
-#ifdef APR_HAS_THREADS
+#if APR_HAS_THREADS
 static void *ruby_thread_start(apr_thread_t *t, void *data)
 {
     server_rec *s = (server_rec *) data;
@@ -731,7 +731,7 @@ apr_status_t ruby_call_interpreter(pool 
 
 static APR_CLEANUP_RETURN_TYPE ruby_child_cleanup(void *data)
 {
-#ifdef APR_HAS_THREADS
+#if APR_HAS_THREADS
     pool *p;
     apr_status_t status;
 
@@ -754,7 +754,7 @@ static void ruby_child_init(server_rec *
 #endif
 {
     if (!ruby_running()) {
-#ifdef APR_HAS_THREADS
+#if APR_HAS_THREADS
 	apr_status_t status;
 	status = apr_thread_mutex_create(&ruby_request_queue_mutex,
 					 APR_THREAD_MUTEX_DEFAULT, p);
@@ -1097,7 +1097,7 @@ static int ruby_handler(request_rec *r,
     arg->run_all = run_all;
     arg->flush = flush;
     arg->retval = 0;
-#ifdef APR_HAS_THREADS
+#if APR_HAS_THREADS
     {
 	apr_status_t status;
 	char buf[256];

$NetBSD: patch-ab,v 1.1 2003/07/27 08:07:06 taca Exp $

--- ruby_config.c.orig	Mon Mar 17 11:34:23 2003
+++ ruby_config.c
@@ -229,7 +229,7 @@ static void ruby_require(pool *p, char *
     arg->server = server;
     arg->sconf = sconf;
     arg->dconf = dconf;
-#ifdef APR_HAS_THREADS
+#if APR_HAS_THREADS
     {
 	apr_status_t status;
 	char buf[256];