2012/04/25(水)apache 2.4.1 に mod_mono 2.10 で error: 'unixd_config' undeclared
makeできなかった。
apache 2.4 から .h 側の定義が変わったらしい。
mod_mono.c を何カ所かいじってmakeできた。
参考にさせていただいた!
http://www.yazin.info/blog/archives/2012/0406_171642.html
unixd_config を ap_unixd_config にかえて、
conn_rec::remote_addr を conn_rec::client_addr にかえて
conn_rec::remote_ip を conn_rec::client_ip にかえた。
あと他にも変わってるかもしれないけどとりあえずmakeできたので見てない。
次のmonoでしれっと直るのはたぶんそうなのだろうが、
さしあたり、mod_ なんとかのmakeで困っている人が、
このページを見つければいいよということで残しておく。
makeしんでしまう。
[tu-sa@TNAS mod_mono-2.10]$ make Making all in src make[1]: Entering directory `/share/HDA_DATA/.qpkg/Optware/local/src/mod_mono-2.10/src' /bin/sh ../libtool --tag=CC --mode=compile distcc armv5tel-softfloat-linux-gnueabi-gcc -DHAVE_CONFIG_H -I. -I../include -O3 -I/opt/local/apache2/include -O3 -pthread -I/opt/local/apache2/include -pthread -I/opt/local/apache2/include -O3 -I/opt/local/apache2/include -O3 -pthread -I/opt/local/apache2/include -pthread -I/opt/local/apache2/include -O3 -I/opt/local/apache2/include -O3 -pthread -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -O3 -I/opt/local/apache2/include -O3 -pthread -I/opt/local/apache2/include -pthread -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -I/opt/local/apache2/include -Wall -DDFLT_MONO_CONFIG_DIR=\\"/opt/local/apache2/conf/mod-mono-applications\\" -O3 -I/opt/local/apache2/include -O3 -pthread -I/opt/local/apache2/include -pthread -I/opt/local/apache2/include -MT mod_mono_la-mod_mono.lo -MD -MP -MF .deps/mod_mono_la-mod_mono.Tpo -c -o mod_mono_la-mod_mono.lo `test -f 'mod_mono.c' || echo './'`mod_mono.c libtool: compile: distcc armv5tel-softfloat-linux-gnueabi-gcc -DHAVE_CONFIG_H -I. -I../include -O3 -I/opt/local/apache2/include -O3 -pthread -I/opt/local/apache2/include -pthread -I/opt/local/apache2/include -O3 -I/opt/local/apache2/include -O3 -pthread -I/opt/local/apache2/include -pthread -I/opt/local/apache2/include -O3 -I/opt/local/apache2/include -O3 -pthread -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -O3 -I/opt/local/apache2/include -O3 -pthread -I/opt/local/apache2/include -pthread -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE -D_LARGEFILE64_SOURCE -I/opt/local/apache2/include -Wall -DDFLT_MONO_CONFIG_DIR=\\"/opt/local/apache2/conf/mod-mono-applications\\" -O3 -I/opt/local/apache2/include -O3 -pthread -I/opt/local/apache2/include -pthread -I/opt/local/apache2/include -MT mod_mono_la-mod_mono.lo -MD -MP -MF .deps/mod_mono_la-mod_mono.Tpo -c mod_mono.c -fPIC -DPIC -o .libs/mod_mono_la-mod_mono.o distcc[18309] ERROR: compile mod_mono.c on 192.168.24.3/24 failed distcc[18309] (dcc_build_somewhere) Warning: remote compilation of 'mod_mono.c' failed, retrying locally distcc[18309] Warning: failed to distribute mod_mono.c to 192.168.24.3/24, running locally instead mod_mono.c: In function 'apache_get_userid': mod_mono.c:389: error: 'unixd_config' undeclared (first use in this function) mod_mono.c:389: error: (Each undeclared identifier is reported only once mod_mono.c:389: error: for each function it appears in.) mod_mono.c: In function 'apache_get_groupid': mod_mono.c:399: error: 'unixd_config' undeclared (first use in this function) mod_mono.c: In function 'apache_get_username': mod_mono.c:409: error: 'unixd_config' undeclared (first use in this function) mod_mono.c: In function 'ensure_dashboard_initialized': mod_mono.c:488: warning: implicit declaration of function 'unixd_set_global_mutex_perms' mod_mono.c: In function 'connection_get_remote_port': mod_mono.c:854: warning: implicit declaration of function 'apr_sockaddr_port_get' mod_mono.c:854: error: 'conn_rec' has no member named 'remote_addr' mod_mono.c: In function 'send_initial_data': mod_mono.c:1981: error: 'conn_rec' has no member named 'remote_ip' mod_mono.c:2029: error: 'conn_rec' has no member named 'remote_ip' distcc[18309] ERROR: compile mod_mono.c on localhost failed make[1]: *** [mod_mono_la-mod_mono.lo] Error 1 make[1]: Leaving directory `/share/HDA_DATA/.qpkg/Optware/local/src/mod_mono-2.10/src' make: *** [all-recursive] Error 1
ぱっち
--- src/mod_mono.c 2011-01-14 07:32:35.000000000 +0900 +++ src/mod_mono.c.new 2012-05-20 19:32:32.114742652 +0900 @@ -386,7 +386,7 @@ apache_get_userid () { #ifdef HAVE_UNIXD - return unixd_config.user_id; + return ap_unixd_config.user_id; #else return ap_user_id; #endif @@ -396,7 +396,7 @@ apache_get_groupid () { #ifdef HAVE_UNIXD - return unixd_config.group_id; + return ap_unixd_config.group_id; #else return ap_group_id; #endif @@ -406,7 +406,7 @@ apache_get_username () { #ifdef HAVE_UNIXD - return unixd_config.user_name; + return ap_unixd_config.user_name; #else return ap_user_name; #endif @@ -485,7 +485,7 @@ #if defined (AP_NEED_SET_MUTEX_PERMS) && defined (HAVE_UNIXD) DEBUG_PRINT (1, "Setting mutex permissions for %s", xsp->dashboard_lock_file); - rv = unixd_set_global_mutex_perms (xsp->dashboard_mutex); + rv = ap_unixd_set_global_mutex_perms (xsp->dashboard_mutex); if (rv != APR_SUCCESS) { ap_log_error (APLOG_MARK, APLOG_CRIT, STATCODE_AND_SERVER (rv), "Failed to set mutex permissions for %s", @@ -847,26 +847,13 @@ static int connection_get_remote_port (conn_rec *c) { -#if defined(APACHE22) - return c->remote_addr->port; -#else - apr_port_t port; - apr_sockaddr_port_get (&port, c->remote_addr); - return port; -#endif - + return c->client_addr->port; } static int connection_get_local_port (request_rec *r) { -#if defined(APACHE22) return r->connection->local_addr->port; -#else - apr_port_t port; - apr_sockaddr_port_get (&port, r->connection->local_addr); - return port; -#endif } static const char * @@ -1978,7 +1965,7 @@ size += sizeof (int32_t); - info.remote_ip_len = strlen (r->connection->remote_ip); + info.remote_ip_len = strlen (r->connection->client_ip); size += info.remote_ip_len + sizeof (int32_t); size += sizeof (int32_t); @@ -2026,7 +2013,7 @@ i = LE_FROM_INT (i); memcpy (ptr, &i, sizeof (i)); ptr += sizeof (int32_t); - ptr += write_string_to_buffer (ptr, 0, r->connection->remote_ip, info.remote_ip_len); + ptr += write_string_to_buffer (ptr, 0, r->connection->client_ip, info.remote_ip_len); i = connection_get_remote_port (r->connection); i = LE_FROM_INT (i); memcpy (ptr, &i, sizeof (i));
2012.05.20 破壊的修正。
ありがとうございました!
ああ、後はhttpd.confを書くだけか……めんどくさい。