diff --git a/0001-fix-compile-with-httpd-trunk-and-AP_DEBUG.patch b/0001-fix-compile-with-httpd-trunk-and-AP_DEBUG.patch new file mode 100644 index 0000000..c39a137 --- /dev/null +++ b/0001-fix-compile-with-httpd-trunk-and-AP_DEBUG.patch @@ -0,0 +1,28 @@ +From 473acbf4ecb1aef09485f2f1cb35988a52c0e274 Mon Sep 17 00:00:00 2001 +From: Stefan Fritsch +Date: Sun, 22 Apr 2012 21:26:01 +0200 +Subject: [PATCH 01/28] fix compile with httpd trunk and AP_DEBUG + +some palloc debugging feature doesn't work within XS +--- + src/modules/perl/modperl_apache_includes.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/modules/perl/modperl_apache_includes.h b/src/modules/perl/modperl_apache_includes.h +index c93decc..dd39bf6 100644 +--- a/src/modules/perl/modperl_apache_includes.h ++++ b/src/modules/perl/modperl_apache_includes.h +@@ -23,6 +23,10 @@ + #define CORE_PRIVATE + #endif + ++#ifdef MP_IN_XS ++#define AP_DEBUG_NO_ALLOC_POISON ++#endif ++ + #include "ap_mmn.h" + #include "httpd.h" + #include "http_config.h" +-- +1.7.11.4 + diff --git a/0002-per-module-loglevel-config.patch b/0002-per-module-loglevel-config.patch new file mode 100644 index 0000000..9eb33fa --- /dev/null +++ b/0002-per-module-loglevel-config.patch @@ -0,0 +1,26 @@ +From 5ba6d0494511bcf69f056e3ded705607585ed11a Mon Sep 17 00:00:00 2001 +From: Stefan Fritsch +Date: Sun, 22 Apr 2012 21:48:57 +0200 +Subject: [PATCH 02/28] per-module loglevel config + +tell httpd that we are logging for mod_perl +--- + src/modules/perl/modperl_apache_includes.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/modules/perl/modperl_apache_includes.h b/src/modules/perl/modperl_apache_includes.h +index dd39bf6..a4209c5 100644 +--- a/src/modules/perl/modperl_apache_includes.h ++++ b/src/modules/perl/modperl_apache_includes.h +@@ -43,4 +43,8 @@ + + #include "util_script.h" + ++#ifndef MP_IN_XS ++APLOG_USE_MODULE(perl); ++#endif ++ + #endif /* MODPERL_APACHE_INCLUDES_H */ +-- +1.7.11.4 + diff --git a/0003-adjust-test-to-new-error-log-format.patch b/0003-adjust-test-to-new-error-log-format.patch new file mode 100644 index 0000000..572cf23 --- /dev/null +++ b/0003-adjust-test-to-new-error-log-format.patch @@ -0,0 +1,92 @@ +From 1de38957898198918e4576da7499fc9cfbae9d69 Mon Sep 17 00:00:00 2001 +From: Stefan Fritsch +Date: Sun, 22 Apr 2012 21:57:28 +0200 +Subject: [PATCH 03/28] adjust test to new error log format + +--- + t/response/TestAPI/aplog.pm | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/t/response/TestAPI/aplog.pm b/t/response/TestAPI/aplog.pm +index f2a4e19..1357311 100644 +--- a/t/response/TestAPI/aplog.pm ++++ b/t/response/TestAPI/aplog.pm +@@ -93,7 +93,7 @@ sub handler { + APR::Const::ENOTIME, "log_rerror test"); + # can't match against the error string, since a locale may kick in + ok t_cmp $logdiff->diff, +- qr/\[crit\] .*?: log_rerror test/, ++ qr/\[\w*:crit\] \[pid[^]]+\] .*?: \[[^]]+\] log_rerror test/, + '$r->log_rerror(LOG_MARK, LOG_CRIT, APR::Const::ENOTIME...)'; + + # log_error +@@ -101,13 +101,13 @@ sub handler { + t_server_log_error_is_expected(); + $r->log_error('$r->log_error test'); + ok t_cmp $logdiff->diff, +- qr/\[error\] \$r->log_error test/, ++ qr/\[\w*:error\] \[pid[^]]+\] \$r->log_error test/, + '$r->log_error(...)'; + + t_server_log_error_is_expected(); + $s->log_error('$s->log_error test'); + ok t_cmp $logdiff->diff, +- qr/\[error\] \$s->log_error test/, ++ qr/\[\w*:error\] \[pid[^]]+\] \$s->log_error test/, + '$s->log_error(...)'; + } + +@@ -116,13 +116,13 @@ sub handler { + t_server_log_error_is_expected(); + $r->log_reason('$r->log_reason test'); + ok t_cmp $logdiff->diff, +- qr/\[error\] access to.*failed.*reason: \$r->log_reason test/, ++ qr/\[\w*:error\] \[pid[^]]+\] access to.*failed.*reason: \$r->log_reason test/, + '$r->log_reason(msg)'; + + t_server_log_error_is_expected(); + $r->log_reason('$r->log_reason filename test','filename'); + ok t_cmp $logdiff->diff, +- qr/\[error\] access to filename failed.*\$r->log_reason filename test/, ++ qr/\[\w*:error\] \[pid[^]]+\] access to filename failed.*\$r->log_reason filename test/, + '$r->log_reason(msg, filename)'; + } + +@@ -177,7 +177,7 @@ sub handler { + t_server_log_warn_is_expected(); + $s->warn('$s->warn test'); + ok t_cmp $logdiff->diff, +- qr/\[warn\] \$s->warn test/, ++ qr/\[\w*:warn\] \[pid[^]]+\] \$s->warn test/, + '$s->warn()'; + + { +@@ -185,7 +185,7 @@ sub handler { + # this uses global server to get $s internally + Apache2::ServerRec::warn("Apache2::ServerRec::warn test"); + ok t_cmp $logdiff->diff, +- qr/\[warn\] Apache2::ServerRec::warn test/, ++ qr/\[\w*:warn\] \[pid[^]]+\] Apache2::ServerRec::warn test/, + 'Apache2::ServerRec::warn() w/o Apache2::RequestUtil->request '; + + Apache2::RequestUtil->request($r); +@@ -193,14 +193,14 @@ sub handler { + # this uses the global $r to get $s internally + Apache2::ServerRec::warn("Apache2::ServerRec::warn test"); + ok t_cmp $logdiff->diff, +- qr/\[warn\] Apache2::ServerRec::warn test/, ++ qr/\[\w*:warn\] \[pid[^]]+\] Apache2::ServerRec::warn test/, + 'Apache2::ServerRec::warn() w/ Apache2::RequestUtil->request '; + } + + t_server_log_warn_is_expected(); + warn "warn test"; + ok t_cmp $logdiff->diff, +- qr/\[warn\] warn test/, ++ qr/\[\w*:warn\] \[pid[^]]+\] warn test/, + 'overriden via export warn()'; + + Apache2::Const::OK; +-- +1.7.11.4 + diff --git a/0004-ignore-some-new-stuff-from-httpd-2.4-and-trunk-and-n.patch b/0004-ignore-some-new-stuff-from-httpd-2.4-and-trunk-and-n.patch new file mode 100644 index 0000000..f31b843 --- /dev/null +++ b/0004-ignore-some-new-stuff-from-httpd-2.4-and-trunk-and-n.patch @@ -0,0 +1,38 @@ +From b26bfa434d6b84346c291ef3e3a3162546ad053c Mon Sep 17 00:00:00 2001 +From: Stefan Fritsch +Date: Tue, 24 Apr 2012 22:28:57 +0200 +Subject: [PATCH 04/28] ignore some new stuff from httpd 2.4 and trunk, and + newer aprs + +these confuse "make source_scan" +--- + lib/Apache2/ParseSource.pm | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/lib/Apache2/ParseSource.pm b/lib/Apache2/ParseSource.pm +index 8027548..f35c2a8 100644 +--- a/lib/Apache2/ParseSource.pm ++++ b/lib/Apache2/ParseSource.pm +@@ -139,7 +139,8 @@ sub find_includes { + apr_optional mod_include mod_cgi + mod_proxy mod_ssl ssl_ apr_anylock + apr_rmm ap_config mod_log_config +- mod_perl modperl_ apreq); ++ mod_perl modperl_ apreq mod_cache ++ mod_serf mod_dav); + $unwanted = qr|^$unwanted|; + my $wanted = ''; + +@@ -280,6 +281,9 @@ my %enums_wanted = ( + + my $defines_unwanted = join '|', qw{ + HTTP_VERSION APR_EOL_STR APLOG_MARK APLOG_NOERRNO APR_SO_TIMEOUT ++APR_HOOK_PROBES_ENABLED APR_HOOK_INT_DCL_UD ++APLOG_MAX_LOGLEVEL ++APR_BEGIN_DECLS APR_END_DECLS + }; + + sub get_constants { +-- +1.7.11.4 + diff --git a/0005-workaround-CScan-choking-on-glibc-s-headers.patch b/0005-workaround-CScan-choking-on-glibc-s-headers.patch new file mode 100644 index 0000000..7701020 --- /dev/null +++ b/0005-workaround-CScan-choking-on-glibc-s-headers.patch @@ -0,0 +1,27 @@ +From 2fb38b336c8a449463c0cec02a256d38a7e5e4b6 Mon Sep 17 00:00:00 2001 +From: Stefan Fritsch +Date: Tue, 24 Apr 2012 22:31:18 +0200 +Subject: [PATCH 05/28] workaround CScan choking on glibc's headers + +CScan gets rather confused if cpp's line number markers appear in the middle +of a function declaration +--- + lib/ModPerl/CScan.pm | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/ModPerl/CScan.pm b/lib/ModPerl/CScan.pm +index 6789af3..a7314c9 100644 +--- a/lib/ModPerl/CScan.pm ++++ b/lib/ModPerl/CScan.pm +@@ -943,7 +943,7 @@ sub new { + my ($sym) = gensym; + my $cmd = WIN32 ? + "$Cpp->{cppstdin} $Defines $addincludes $Cpp->{cppflags} $filename |" : +- "echo '\#include \"$filename\"' | $Cpp->{cppstdin} $Defines $addincludes $Cpp->{cppflags} $Cpp->{cppminus} |"; ++ "echo '\#include \"$filename\"' | $Cpp->{cppstdin} $Defines $addincludes $Cpp->{cppflags} $Cpp->{cppminus} | grep -v '^#' |"; + #my $cmd = "echo '\#include <$filename>' | $Cpp->{cppstdin} $Defines $addincludes $Cpp->{cppflags} $Cpp->{cppminus} |"; + + (open($sym, $cmd) or die "Cannot open pipe from `$cmd': $!") +-- +1.7.11.4 + diff --git a/0006-Add-U16-type-to-make-make-xs_generate-happy.patch b/0006-Add-U16-type-to-make-make-xs_generate-happy.patch new file mode 100644 index 0000000..0bbacab --- /dev/null +++ b/0006-Add-U16-type-to-make-make-xs_generate-happy.patch @@ -0,0 +1,25 @@ +From 95087e1867cfaa93f1418bae13a83552c27d2dd7 Mon Sep 17 00:00:00 2001 +From: Stefan Fritsch +Date: Sun, 22 Apr 2012 22:39:33 +0200 +Subject: [PATCH 06/28] Add U16 type to make 'make xs_generate' happy + +--- + xs/maps/modperl_types.map | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/xs/maps/modperl_types.map b/xs/maps/modperl_types.map +index 3b02f02..8c6d541 100644 +--- a/xs/maps/modperl_types.map ++++ b/xs/maps/modperl_types.map +@@ -7,6 +7,8 @@ struct modperl_filter_t | Apache2::OutputFilter + SV * | SV + I32 | IV + I32 * | IV ++U16 | UV ++U16 * | UV + U32 | UV + U32 * | UV + +-- +1.7.11.4 + diff --git a/0007-add-new-constant-CRLF_ASCII.patch b/0007-add-new-constant-CRLF_ASCII.patch new file mode 100644 index 0000000..e32f15b --- /dev/null +++ b/0007-add-new-constant-CRLF_ASCII.patch @@ -0,0 +1,26 @@ +From 303ab6e8babc56ca8453ae62e87492592dc7e2f1 Mon Sep 17 00:00:00 2001 +From: Stefan Fritsch +Date: Sun, 22 Apr 2012 22:48:31 +0200 +Subject: [PATCH 07/28] add new constant CRLF_ASCII + +--- + lib/ModPerl/Code.pm | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/lib/ModPerl/Code.pm b/lib/ModPerl/Code.pm +index e43f77c..98b037d 100644 +--- a/lib/ModPerl/Code.pm ++++ b/lib/ModPerl/Code.pm +@@ -889,7 +889,8 @@ EOF + + if ($name eq 'DECLINE_CMD' || + $name eq 'DIR_MAGIC_TYPE' || +- $name eq 'CRLF') { ++ $name eq 'CRLF' || ++ $name eq 'CRLF_ASCII') { + print $c_fh < +Date: Sun, 22 Apr 2012 22:58:48 +0200 +Subject: [PATCH 08/28] workaround APR_ENOKEY not found + +there should be a better solution... +--- + src/modules/perl/modperl_apache_includes.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/modules/perl/modperl_apache_includes.h b/src/modules/perl/modperl_apache_includes.h +index a4209c5..c2fb6de 100644 +--- a/src/modules/perl/modperl_apache_includes.h ++++ b/src/modules/perl/modperl_apache_includes.h +@@ -38,6 +38,7 @@ + #include "http_core.h" + #include "http_vhost.h" + #include "ap_mpm.h" ++#include "apu_errno.h" + + #include "util_filter.h" + +-- +1.7.11.4 + diff --git a/0009-Parse-PROXY-constants-and-search-for-APR_INCLUDEDIR-.patch b/0009-Parse-PROXY-constants-and-search-for-APR_INCLUDEDIR-.patch new file mode 100644 index 0000000..e00c21c --- /dev/null +++ b/0009-Parse-PROXY-constants-and-search-for-APR_INCLUDEDIR-.patch @@ -0,0 +1,35 @@ +From 6ea1a75b3c595d5f5dc65095de1d81a12d38ccbf Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Wed, 25 Jul 2012 09:54:50 +0200 +Subject: [PATCH 09/28] Parse PROXY* constants and search for APR_INCLUDEDIR + instead of INCLUDEDIR + +--- + lib/Apache2/ParseSource.pm | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/lib/Apache2/ParseSource.pm b/lib/Apache2/ParseSource.pm +index f35c2a8..4e7cc08 100644 +--- a/lib/Apache2/ParseSource.pm ++++ b/lib/Apache2/ParseSource.pm +@@ -115,7 +115,7 @@ sub scan { + + sub include_dirs { + my $self = shift; +- ($self->config->apxs('-q' => 'INCLUDEDIR'), ++ ($self->config->apxs('-q' => 'APR_INCLUDEDIR'), + $self->config->mp_include_dir); + } + +@@ -230,7 +230,7 @@ sub generate_cscan_file { + + my %defines_wanted = ( + 'Apache2::Const' => { +- common => [qw{OK DECLINED DONE}], ++ common => [qw{OK DECLINED DONE PROXYREQ PROXYREQ_REVERSE}], + config => [qw{DECLINE_CMD}], + context => [qw(NOT_IN_ GLOBAL_ONLY)], + http => [qw{HTTP_}], +-- +1.7.11.4 + diff --git a/0010-Parse-C-inlines-methods-in-CScan.patch b/0010-Parse-C-inlines-methods-in-CScan.patch new file mode 100644 index 0000000..8c9cc43 --- /dev/null +++ b/0010-Parse-C-inlines-methods-in-CScan.patch @@ -0,0 +1,39 @@ +From e6e33420c23d666d479ecd3769384a86478c7d1e Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Wed, 25 Jul 2012 09:56:42 +0200 +Subject: [PATCH 10/28] Parse C inlines methods in CScan + +--- + lib/Apache2/ParseSource.pm | 2 ++ + lib/ModPerl/CScan.pm | 2 ++ + 2 files changed, 4 insertions(+) + +diff --git a/lib/Apache2/ParseSource.pm b/lib/Apache2/ParseSource.pm +index 4e7cc08..7eafab5 100644 +--- a/lib/Apache2/ParseSource.pm ++++ b/lib/Apache2/ParseSource.pm +@@ -402,6 +402,8 @@ sub get_functions { + my $c = $self->{c}; + + my $fdecls = $c->get($key); ++ my $inlines = $c->get('parsed_inlines'); ++ push @{$fdecls}, @{$inlines}; + + my %seen; + my $wanted = $self->wanted_functions; +diff --git a/lib/ModPerl/CScan.pm b/lib/ModPerl/CScan.pm +index a7314c9..a57acf3 100644 +--- a/lib/ModPerl/CScan.pm ++++ b/lib/ModPerl/CScan.pm +@@ -136,6 +136,8 @@ my $recipes + vdecl_hash => { filter => [ \&vdecl_hash, 'vdecls', 'mdecls' ], }, + parsed_fdecls => { filter => [ \&do_declarations, 'fdecls', + 'typedef_hash', 'keywords'], }, ++ parsed_inlines => { filter => [ \&do_declarations, 'inlines', ++ 'typedef_hash', 'keywords'], }, + keywords_rex => { filter => [ sub { my @k = keys %{ shift() }; + local $" = '|'; + my $r = "(?:@k)"; +-- +1.7.11.4 + diff --git a/0011-Call-ap_reserve_module_slots_directive.patch b/0011-Call-ap_reserve_module_slots_directive.patch new file mode 100644 index 0000000..18ce7b1 --- /dev/null +++ b/0011-Call-ap_reserve_module_slots_directive.patch @@ -0,0 +1,27 @@ +From bcf93a1ab084f69ca199108d2ab091682adeea6e Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Wed, 25 Jul 2012 09:58:00 +0200 +Subject: [PATCH 11/28] Call ap_reserve_module_slots_directive + +--- + src/modules/perl/mod_perl.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/modules/perl/mod_perl.c b/src/modules/perl/mod_perl.c +index d3245bf..b18e0fd 100644 +--- a/src/modules/perl/mod_perl.c ++++ b/src/modules/perl/mod_perl.c +@@ -658,6 +658,10 @@ int modperl_hook_pre_config(apr_pool_t *p, apr_pool_t *plog, + /* perl 5.8.1+ */ + modperl_hash_seed_init(p); + ++#if AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4 ++ ap_reserve_module_slots_directive("PerlModule"); ++#endif ++ + return OK; + } + +-- +1.7.11.4 + diff --git a/0012-Remove-OPT_INCNOEXEC.patch b/0012-Remove-OPT_INCNOEXEC.patch new file mode 100644 index 0000000..ab5e302 --- /dev/null +++ b/0012-Remove-OPT_INCNOEXEC.patch @@ -0,0 +1,37 @@ +From 4923846b1a340bd332ecb231a4ebc2560059f945 Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Mon, 4 Jun 2012 12:57:18 +0200 +Subject: [PATCH 12/28] Remove OPT_INCNOEXEC + +--- + src/modules/perl/modperl_apache_compat.h | 1 - + t/response/TestAPI/add_config.pm | 1 - + 2 files changed, 2 deletions(-) + +diff --git a/src/modules/perl/modperl_apache_compat.h b/src/modules/perl/modperl_apache_compat.h +index 78a9cb3..072ae79 100644 +--- a/src/modules/perl/modperl_apache_compat.h ++++ b/src/modules/perl/modperl_apache_compat.h +@@ -68,7 +68,6 @@ AP_DECLARE(const char *) ap_get_server_version(void); + #define MP_HTTPD_OVERRIDE_OPTS_UNSET (-1) + #define MP_HTTPD_OVERRIDE_OPTS_DEFAULT (OPT_UNSET | \ + OPT_ALL | \ +- OPT_INCNOEXEC | \ + OPT_SYM_OWNER | \ + OPT_MULTI) + +diff --git a/t/response/TestAPI/add_config.pm b/t/response/TestAPI/add_config.pm +index ff52cbc..c5f2d37 100644 +--- a/t/response/TestAPI/add_config.pm ++++ b/t/response/TestAPI/add_config.pm +@@ -100,7 +100,6 @@ sub handler : method { + + my $expect = Apache2::Const::OPT_ALL | + Apache2::Const::OPT_UNSET | +- Apache2::Const::OPT_INCNOEXEC | + Apache2::Const::OPT_MULTI | + Apache2::Const::OPT_SYM_OWNER; + +-- +1.7.11.4 + diff --git a/0013-Fixed-logleve.patch b/0013-Fixed-logleve.patch new file mode 100644 index 0000000..083dbdb --- /dev/null +++ b/0013-Fixed-logleve.patch @@ -0,0 +1,46 @@ +From e370d2309c2a4df920d4618fdb30811dda00d15b Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Wed, 6 Jun 2012 08:47:21 +0200 +Subject: [PATCH 13/28] Fixed logleve + +--- + xs/Apache2/Log/Apache2__Log.h | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +diff --git a/xs/Apache2/Log/Apache2__Log.h b/xs/Apache2/Log/Apache2__Log.h +index 1866315..4a3bb4d 100644 +--- a/xs/Apache2/Log/Apache2__Log.h ++++ b/xs/Apache2/Log/Apache2__Log.h +@@ -36,6 +36,7 @@ static void mpxs_ap_log_error(pTHX_ int level, SV *sv, SV *msg) + int lmask = level & APLOG_LEVELMASK; + server_rec *s; + request_rec *r = NULL; ++ int loglevel = 0; + + if (SvROK(sv) && sv_isa(sv, "Apache2::Log::Request")) { + r = INT2PTR(request_rec *, SvObjIV(sv)); +@@ -48,13 +49,19 @@ static void mpxs_ap_log_error(pTHX_ int level, SV *sv, SV *msg) + s = modperl_global_get_server_rec(); + } + +- if ((lmask == APLOG_DEBUG) && (s->loglevel >= APLOG_DEBUG)) { ++#if AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4 ++ loglevel = s->log.level; ++#else ++ loglevel = s->loglevel; ++#endif ++ ++ if ((lmask == APLOG_DEBUG) && (loglevel >= APLOG_DEBUG)) { + COP *cop = PL_curcop; + file = CopFILE(cop); /* (caller)[1] */ + line = CopLINE(cop); /* (caller)[2] */ + } + +- if ((s->loglevel >= lmask) && ++ if ((loglevel >= lmask) && + SvROK(msg) && (SvTYPE(SvRV(msg)) == SVt_PVCV)) { + dSP; + ENTER;SAVETMPS; +-- +1.7.11.4 + diff --git a/0014-Use-module-name-in-ap_add_loaded_module.patch b/0014-Use-module-name-in-ap_add_loaded_module.patch new file mode 100644 index 0000000..e4f884b --- /dev/null +++ b/0014-Use-module-name-in-ap_add_loaded_module.patch @@ -0,0 +1,28 @@ +From 90d6a5f5a7c2de28a577145828ecb762a93ba54b Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Mon, 4 Jun 2012 13:12:40 +0200 +Subject: [PATCH 14/28] Use module name in ap_add_loaded_module + +--- + src/modules/perl/modperl_module.c | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/modules/perl/modperl_module.c b/src/modules/perl/modperl_module.c +index da148ca..aa1a851 100644 +--- a/src/modules/perl/modperl_module.c ++++ b/src/modules/perl/modperl_module.c +@@ -832,7 +832,11 @@ const char *modperl_module_add(apr_pool_t *p, server_rec *s, + + modperl_module_insert(modp); + ++#if AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4 ++ ap_add_loaded_module(modp, p, modp->name); ++#else + ap_add_loaded_module(modp, p); ++#endif + + apr_pool_cleanup_register(p, modp, modperl_module_remove, + apr_pool_cleanup_null); +-- +1.7.11.4 + diff --git a/0015-unixd_config-renamed-to-ap_unixd_config.patch b/0015-unixd_config-renamed-to-ap_unixd_config.patch new file mode 100644 index 0000000..7a9f0a7 --- /dev/null +++ b/0015-unixd_config-renamed-to-ap_unixd_config.patch @@ -0,0 +1,30 @@ +From 7b3c626470ad4ed907ef7581d7c9af805f18d1dd Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Mon, 4 Jun 2012 13:14:52 +0200 +Subject: [PATCH 15/28] unixd_config renamed to ap_unixd_config + +--- + xs/Apache2/ServerUtil/Apache2__ServerUtil.h | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/xs/Apache2/ServerUtil/Apache2__ServerUtil.h b/xs/Apache2/ServerUtil/Apache2__ServerUtil.h +index e222c1b..f000502 100644 +--- a/xs/Apache2/ServerUtil/Apache2__ServerUtil.h ++++ b/xs/Apache2/ServerUtil/Apache2__ServerUtil.h +@@ -162,8 +162,13 @@ SV *mpxs_Apache2__ServerRec_get_handlers(pTHX_ server_rec *s, + #define mpxs_Apache2__ServerUtil_server(classname) modperl_global_get_server_rec() + + #if !defined(OS2) && !defined(WIN32) && !defined(BEOS) && !defined(NETWARE) ++#if AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4 ++#define mpxs_Apache2__ServerUtil_user_id(classname) ap_unixd_config.user_id ++#define mpxs_Apache2__ServerUtil_group_id(classname) ap_unixd_config.group_id ++#else + #define mpxs_Apache2__ServerUtil_user_id(classname) unixd_config.user_id + #define mpxs_Apache2__ServerUtil_group_id(classname) unixd_config.group_id ++#endif + #else + #define mpxs_Apache2__ServerUtil_user_id(classname) 0 + #define mpxs_Apache2__ServerUtil_group_id(classname) 0 +-- +1.7.11.4 + diff --git a/0016-remote_ip-renamed-to-client_ip.patch b/0016-remote_ip-renamed-to-client_ip.patch new file mode 100644 index 0000000..ef43349 --- /dev/null +++ b/0016-remote_ip-renamed-to-client_ip.patch @@ -0,0 +1,36 @@ +From d23ec0b35fd2c09ba07ca66b19d8fb4f5bb11c44 Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Mon, 4 Jun 2012 13:17:03 +0200 +Subject: [PATCH 16/28] remote_ip renamed to client_ip + +--- + src/modules/perl/modperl_interp.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/src/modules/perl/modperl_interp.c b/src/modules/perl/modperl_interp.c +index dfff32e..6ec9b56 100644 +--- a/src/modules/perl/modperl_interp.c ++++ b/src/modules/perl/modperl_interp.c +@@ -496,11 +496,19 @@ modperl_interp_t *modperl_interp_select(request_rec *r, conn_rec *c, + + set_interp(p); + ++#if AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4 ++ MP_TRACE_i(MP_FUNC, ++ "set interp 0x%lx in %s 0x%lx (%s request for %s)\n", ++ (unsigned long)interp, desc, (unsigned long)p, ++ (r ? (is_subrequest ? "sub" : "main") : "conn"), ++ (r ? r->uri : c->client_ip)); ++#else + MP_TRACE_i(MP_FUNC, + "set interp 0x%lx in %s 0x%lx (%s request for %s)\n", + (unsigned long)interp, desc, (unsigned long)p, + (r ? (is_subrequest ? "sub" : "main") : "conn"), + (r ? r->uri : c->remote_ip)); ++#endif + } + + /* set context (THX) for this thread */ +-- +1.7.11.4 + diff --git a/0017-remove-apu_error.h-include.patch b/0017-remove-apu_error.h-include.patch new file mode 100644 index 0000000..b7857f9 --- /dev/null +++ b/0017-remove-apu_error.h-include.patch @@ -0,0 +1,26 @@ +From 50dc3ffe06d2a869b7cfc4997c56e9f4a368cce0 Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Mon, 4 Jun 2012 13:20:07 +0200 +Subject: [PATCH 17/28] remove apu_error.h include + +--- + src/modules/perl/modperl_apache_includes.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/modules/perl/modperl_apache_includes.h b/src/modules/perl/modperl_apache_includes.h +index c2fb6de..6f7bd8b 100644 +--- a/src/modules/perl/modperl_apache_includes.h ++++ b/src/modules/perl/modperl_apache_includes.h +@@ -38,7 +38,9 @@ + #include "http_core.h" + #include "http_vhost.h" + #include "ap_mpm.h" ++#if !(AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4) + #include "apu_errno.h" ++#endif + + #include "util_filter.h" + +-- +1.7.11.4 + diff --git a/0018-svav_getstr-has-to-return-apr_status_t.patch b/0018-svav_getstr-has-to-return-apr_status_t.patch new file mode 100644 index 0000000..6e23658 --- /dev/null +++ b/0018-svav_getstr-has-to-return-apr_status_t.patch @@ -0,0 +1,43 @@ +From b9de67fbee1401309e020de44b37aad7fe94b594 Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Wed, 25 Jul 2012 10:02:04 +0200 +Subject: [PATCH 18/28] svav_getstr has to return apr_status_t + +--- + src/modules/perl/modperl_config.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/modules/perl/modperl_config.c b/src/modules/perl/modperl_config.c +index c4ef81f..e182f2d 100644 +--- a/src/modules/perl/modperl_config.c ++++ b/src/modules/perl/modperl_config.c +@@ -479,7 +479,7 @@ typedef struct { + PerlInterpreter *perl; + } svav_param_t; + +-static void *svav_getstr(void *buf, size_t bufsiz, void *param) ++static apr_status_t svav_getstr(void *buf, size_t bufsiz, void *param) + { + svav_param_t *svav_param = (svav_param_t *)param; + dTHXa(svav_param->perl); +@@ -488,7 +488,7 @@ static void *svav_getstr(void *buf, size_t bufsiz, void *param) + STRLEN n_a; + + if (svav_param->ix > AvFILL(av)) { +- return NULL; ++ return APR_EOF; + } + + sv = AvARRAY(av)[svav_param->ix++]; +@@ -496,7 +496,7 @@ static void *svav_getstr(void *buf, size_t bufsiz, void *param) + + apr_cpystrn(buf, SvPVX(sv), bufsiz); + +- return buf; ++ return APR_SUCCESS; + } + + const char *modperl_config_insert(pTHX_ server_rec *s, +-- +1.7.11.4 + diff --git a/0019-Remove-proxy-from-constants.t.patch b/0019-Remove-proxy-from-constants.t.patch new file mode 100644 index 0000000..48a391b --- /dev/null +++ b/0019-Remove-proxy-from-constants.t.patch @@ -0,0 +1,25 @@ +From 563636c8a77c37c22979097de04594f4e2a203c8 Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Wed, 25 Jul 2012 10:03:18 +0200 +Subject: [PATCH 19/28] Remove :proxy from constants.t + +--- + t/apache/constants.t | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/t/apache/constants.t b/t/apache/constants.t +index 97a3e6a..74e2fe5 100644 +--- a/t/apache/constants.t ++++ b/t/apache/constants.t +@@ -6,7 +6,7 @@ use Apache::Test; + use Apache::TestUtil; + + # -compile puts constants into the Apache2:: namespace +-use Apache2::Const -compile => qw(:http :common :mpmq :proxy ++use Apache2::Const -compile => qw(:http :common :mpmq + TAKE23 &OPT_EXECCGI + DECLINE_CMD DIR_MAGIC_TYPE + CRLF); +-- +1.7.11.4 + diff --git a/0020-Link-APR.so-against-libaprutil-1.patch b/0020-Link-APR.so-against-libaprutil-1.patch new file mode 100644 index 0000000..c5a5524 --- /dev/null +++ b/0020-Link-APR.so-against-libaprutil-1.patch @@ -0,0 +1,25 @@ +From 45cfa54bad40d06d61b4d617ead3e377d9e9bd4a Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Wed, 25 Jul 2012 10:04:51 +0200 +Subject: [PATCH 20/28] Link APR.so against libaprutil-1 + +--- + xs/APR/APR/Makefile.PL | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/xs/APR/APR/Makefile.PL b/xs/APR/APR/Makefile.PL +index 99ac3d4..79a0a0e 100644 +--- a/xs/APR/APR/Makefile.PL ++++ b/xs/APR/APR/Makefile.PL +@@ -66,6 +66,8 @@ if (SOLARIS && $libs) { + $libs =~ s{-R\S+}{}g; + } + ++# FIXME: This should be done automatically somewhere in Apache2::Build ++$libs .= qq{ -laprutil-1 }; + $args{LIBS} = [$libs] if $libs; + + my $srcdir = '../../../src/modules/perl'; +-- +1.7.11.4 + diff --git a/0021-Fix-APR__Socket-building.patch b/0021-Fix-APR__Socket-building.patch new file mode 100644 index 0000000..4ae3fed --- /dev/null +++ b/0021-Fix-APR__Socket-building.patch @@ -0,0 +1,29 @@ +From 08b6ef043f45a0db5d9c47135061c2bf95a0b304 Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Wed, 25 Jul 2012 10:05:33 +0200 +Subject: [PATCH 21/28] Fix APR__Socket building + +--- + xs/APR/Socket/APR__Socket.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/xs/APR/Socket/APR__Socket.h b/xs/APR/Socket/APR__Socket.h +index dfc681c..d59fce6 100644 +--- a/xs/APR/Socket/APR__Socket.h ++++ b/xs/APR/Socket/APR__Socket.h +@@ -118,10 +118,10 @@ apr_status_t mpxs_APR__Socket_poll(apr_socket_t *socket, + } + + #ifndef WIN32 +-static MP_INLINE int mpxs_APR__Socket_fileno(pTHX_ apr_socket_t *sock) ++static MP_INLINE int mpxs_APR__Socket_fileno(pTHX_ apr_socket_t *socket) + { + apr_os_sock_t s; +- apr_os_sock_get(&s, sock); ++ apr_os_sock_get(&s, socket); + return s; + } + #endif +-- +1.7.11.4 + diff --git a/0022-Use-APLOG_MODULE_INDEX-in-ap_log_error.patch b/0022-Use-APLOG_MODULE_INDEX-in-ap_log_error.patch new file mode 100644 index 0000000..3a67ab8 --- /dev/null +++ b/0022-Use-APLOG_MODULE_INDEX-in-ap_log_error.patch @@ -0,0 +1,60 @@ +From 9f11a060179d4b1f5765cae30ce970d603be712f Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Wed, 25 Jul 2012 10:08:47 +0200 +Subject: [PATCH 22/28] Use APLOG_MODULE_INDEX in ap_log_error + +--- + xs/Apache2/Log/Apache2__Log.h | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +diff --git a/xs/Apache2/Log/Apache2__Log.h b/xs/Apache2/Log/Apache2__Log.h +index 4a3bb4d..8281e8e 100644 +--- a/xs/Apache2/Log/Apache2__Log.h ++++ b/xs/Apache2/Log/Apache2__Log.h +@@ -78,12 +78,21 @@ static void mpxs_ap_log_error(pTHX_ int level, SV *sv, SV *msg) + str = SvPV(msg,n_a); + } + ++#if AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4 ++ if (r) { ++ ap_log_rerror(file, line, APLOG_MODULE_INDEX, level, 0, r, "%s", str); ++ } ++ else { ++ ap_log_error(file, line, APLOG_MODULE_INDEX, level, 0, s, "%s", str); ++ } ++#else + if (r) { + ap_log_rerror(file, line, level, 0, r, "%s", str); + } + else { + ap_log_error(file, line, level, 0, s, "%s", str); + } ++#endif + + if (svstr) { + SvREFCNT_dec(svstr); +@@ -264,12 +273,21 @@ MP_STATIC XS(MPXS_Apache2__Log_log_xerror) + + msgstr = SvPV(msgsv, n_a); + ++#if AP_SERVER_MAJORVERSION_NUMBER >= 2 && AP_SERVER_MINORVERSION_NUMBER >= 4 ++ if (r) { ++ ap_log_rerror(file, line, APLOG_MODULE_INDEX, level, status, r, "%s", msgstr); ++ } ++ else { ++ ap_log_error(file, line, APLOG_MODULE_INDEX, level, status, s, "%s", msgstr); ++ } ++#else + if (r) { + ap_log_rerror(file, line, level, status, r, "%s", msgstr); + } + else { + ap_log_error(file, line, level, status, s, "%s", msgstr); + } ++#endif + + SvREFCNT_dec(msgsv); + +-- +1.7.11.4 + diff --git a/0023-Define-perl_module-in-Const.xs.patch b/0023-Define-perl_module-in-Const.xs.patch new file mode 100644 index 0000000..936705a --- /dev/null +++ b/0023-Define-perl_module-in-Const.xs.patch @@ -0,0 +1,34 @@ +From d848421f2a8fd7741cecf78de9d946256da424bc Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Wed, 25 Jul 2012 10:10:04 +0200 +Subject: [PATCH 23/28] Define perl_module in Const.xs + +--- + xs/ModPerl/Const/Const.xs | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/xs/ModPerl/Const/Const.xs b/xs/ModPerl/Const/Const.xs +index 33a4c0c..15fa36d 100644 +--- a/xs/ModPerl/Const/Const.xs ++++ b/xs/ModPerl/Const/Const.xs +@@ -17,6 +17,17 @@ + #include "mod_perl.h" + #include "modperl_const.h" + ++/* To define extern perl_module to something so Const.so can be loaded later */ ++module AP_MODULE_DECLARE_DATA perl_module = { ++ STANDARD20_MODULE_STUFF, ++ NULL, /* dir config creater */ ++ NULL, /* dir merger --- default is to override */ ++ NULL, /* server config */ ++ NULL, /* merge server config */ ++ NULL, /* table of config file commands */ ++ NULL, /* register hooks */ ++}; ++ + MODULE = ModPerl::Const PACKAGE = ModPerl::Const + + PROTOTYPES: disable +-- +1.7.11.4 + diff --git a/0024-Include-apu_errno.h.patch b/0024-Include-apu_errno.h.patch new file mode 100644 index 0000000..da4c6b4 --- /dev/null +++ b/0024-Include-apu_errno.h.patch @@ -0,0 +1,23 @@ +From cf0debea3e4af3a58cdf8d08fa1ddc7e1869ae49 Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Wed, 25 Jul 2012 10:24:53 +0200 +Subject: [PATCH 24/28] Include apu_errno.h + +--- + src/modules/perl/modperl_apr_includes.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/modules/perl/modperl_apr_includes.h b/src/modules/perl/modperl_apr_includes.h +index f5ae341..8e69776 100644 +--- a/src/modules/perl/modperl_apr_includes.h ++++ b/src/modules/perl/modperl_apr_includes.h +@@ -35,5 +35,6 @@ + #include "apr_general.h" + #include "apr_uuid.h" + #include "apr_env.h" ++#include "apu_errno.h" + + #endif /* MODPERL_APR_INCLUDES_H */ +-- +1.7.11.4 + diff --git a/0025-Include-also-from-INCLUDEDIR-disable-test_loglevel.patch b/0025-Include-also-from-INCLUDEDIR-disable-test_loglevel.patch new file mode 100644 index 0000000..8e85e9d --- /dev/null +++ b/0025-Include-also-from-INCLUDEDIR-disable-test_loglevel.patch @@ -0,0 +1,42 @@ +From bf10d54a6d544eb36b3d4baf895ad86c28f43841 Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Wed, 25 Jul 2012 10:36:25 +0200 +Subject: [PATCH 25/28] Include also from INCLUDEDIR, disable test_loglevel + +--- + lib/Apache2/ParseSource.pm | 3 ++- + t/conf/post_config_startup.pl | 4 +++- + 2 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/lib/Apache2/ParseSource.pm b/lib/Apache2/ParseSource.pm +index 7eafab5..4412d76 100644 +--- a/lib/Apache2/ParseSource.pm ++++ b/lib/Apache2/ParseSource.pm +@@ -115,7 +115,8 @@ sub scan { + + sub include_dirs { + my $self = shift; +- ($self->config->apxs('-q' => 'APR_INCLUDEDIR'), ++ ($self->config->apxs('-q' => 'INCLUDEDIR'), ++ $self->config->apxs('-q' => 'APR_INCLUDEDIR'), + $self->config->mp_include_dir); + } + +diff --git a/t/conf/post_config_startup.pl b/t/conf/post_config_startup.pl +index 391a0e2..5ab1bfc 100644 +--- a/t/conf/post_config_startup.pl ++++ b/t/conf/post_config_startup.pl +@@ -31,7 +31,9 @@ test_apache_resource(); + + test_apache_status(); + +-test_loglevel(); ++# FIXME: httpd-2.4 does not have loglevel setting in ServerRec ++# This test has to be fixed. ++#test_loglevel(); + + test_perl_ithreads(); + +-- +1.7.11.4 + diff --git a/0026-Disable-LimitExcept.patch b/0026-Disable-LimitExcept.patch new file mode 100644 index 0000000..8a6ec6c --- /dev/null +++ b/0026-Disable-LimitExcept.patch @@ -0,0 +1,27 @@ +From a260ec691abdd2fda799ecbe4efa658041878104 Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Wed, 25 Jul 2012 10:40:21 +0200 +Subject: [PATCH 26/28] Disable LimitExcept + +--- + t/response/TestDirective/cmdparms.pm | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/t/response/TestDirective/cmdparms.pm b/t/response/TestDirective/cmdparms.pm +index 72e0d33..8dc0e73 100644 +--- a/t/response/TestDirective/cmdparms.pm ++++ b/t/response/TestDirective/cmdparms.pm +@@ -134,6 +134,7 @@ TestCmdParms "Vhost" + + TestCmdParms "Location" + +- +- TestCmdParms "Limit" +- ++#FIXME! httpd 2.4 does not allow LimitExcept here ++# ++# TestCmdParms "Limit" ++# +-- +1.7.11.4 + diff --git a/0027-Do-no-cscan-expat-and-byteswap.patch b/0027-Do-no-cscan-expat-and-byteswap.patch new file mode 100644 index 0000000..8fc7b04 --- /dev/null +++ b/0027-Do-no-cscan-expat-and-byteswap.patch @@ -0,0 +1,26 @@ +From 20bafd1dd5604ba87f5f5890d0366af1350f5e9b Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Wed, 25 Jul 2012 12:46:19 +0200 +Subject: [PATCH 27/28] Do no cscan expat and byteswap + +--- + lib/Apache2/ParseSource.pm | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/lib/Apache2/ParseSource.pm b/lib/Apache2/ParseSource.pm +index 4412d76..0664af1 100644 +--- a/lib/Apache2/ParseSource.pm ++++ b/lib/Apache2/ParseSource.pm +@@ -73,6 +73,9 @@ my @c_scan_defines = ( + 'CORE_PRIVATE', #so we get all of apache + 'MP_SOURCE_SCAN', #so we can avoid some c-scan barfing + '_NETINET_TCP_H', #c-scan chokes on netinet/tcp.h ++ '_BYTESWAP_H', #c-scan chokes on byteswap.h ++ '_BITS_BYTESWAP_H', #c-scan chokes on byteswap.h ++ 'Expat_INCLUDED', #c-scan chokes on expath.h + # 'APR_OPTIONAL_H', #c-scan chokes on apr_optional.h + 'apr_table_do_callback_fn_t=void', #c-scan chokes on function pointers + ); +-- +1.7.11.4 + diff --git a/0028-Set-DefaultRuntimeDir-to-run-and-create-it.patch b/0028-Set-DefaultRuntimeDir-to-run-and-create-it.patch new file mode 100644 index 0000000..2e12a14 --- /dev/null +++ b/0028-Set-DefaultRuntimeDir-to-run-and-create-it.patch @@ -0,0 +1,36 @@ +From d7ab9880979feac37cea1184259d6510317e5e4f Mon Sep 17 00:00:00 2001 +From: Jan Kaluza +Date: Tue, 25 Sep 2012 13:27:31 +0200 +Subject: [PATCH 28/28] Set DefaultRuntimeDir to run/ and create it + +--- + Apache-Test/lib/Apache/TestConfig.pm | 1 + + t/conf/extra.conf.in | 1 + + 2 files changed, 2 insertions(+) + +diff --git a/Apache-Test/lib/Apache/TestConfig.pm b/Apache-Test/lib/Apache/TestConfig.pm +index 65d8515..1e07878 100644 +--- a/Apache-Test/lib/Apache/TestConfig.pm ++++ b/Apache-Test/lib/Apache/TestConfig.pm +@@ -1559,6 +1559,7 @@ sub generate_httpd_conf { + + $self->gendir($vars->{t_logs}); + $self->gendir($vars->{t_conf}); ++ $self->gendir($vars->{t_dir} . "/run"); + + my @very_last_postamble = (); + if (my $extra_conf = $self->generate_extra_conf) { +diff --git a/t/conf/extra.conf.in b/t/conf/extra.conf.in +index 3e8b005..94a1e26 100644 +--- a/t/conf/extra.conf.in ++++ b/t/conf/extra.conf.in +@@ -1,5 +1,6 @@ + # needed to test $r->psignature + ServerSignature On ++DefaultRuntimeDir run/ + + # The following tests require more than one interpreter during the + # same request: +-- +1.7.11.4 + diff --git a/README.md b/README.md index 4393104..9e09164 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,4 @@ # apache-mod_perl +Apache module interface to PERL. + diff --git a/apache-mod_perl.spec b/apache-mod_perl.spec new file mode 100644 index 0000000..4d4d398 --- /dev/null +++ b/apache-mod_perl.spec @@ -0,0 +1,227 @@ +Name: apache-mod_perl +Version: 2.0.7 +Release: 2mamba +Summary: Apache module interface to PERL +Group: Development/Libraries/Perl +Vendor: openmamba +Distribution: openmamba +Packager: Silvan Calarco +Source: http://perl.apache.org/dist/mod_perl-%{version}.tar.gz +URL: http://www.cpan.org +License: GPL +## AUTOBUILDREQ-BEGIN +BuildRequires: glibc-devel +BuildRequires: libapr-devel +BuildRequires: libaprutil-devel +BuildRequires: libuuid-devel +BuildRequires: perl-BSD-Resource +BuildRequires: perl-Data-Flow +BuildRequires: perl-devel +## AUTOBUILDREQ-END +BuildRequires: perl-Compress-Zlib +BuildRequires: apache-devel +BuildRequires: libsasl-devel +# Patches against apache 2.4 (see http://www.gossamer-threads.com/lists/modperl/dev/104676) +Patch0: 0001-fix-compile-with-httpd-trunk-and-AP_DEBUG.patch +Patch1: 0002-per-module-loglevel-config.patch +Patch2: 0003-adjust-test-to-new-error-log-format.patch +Patch3: 0004-ignore-some-new-stuff-from-httpd-2.4-and-trunk-and-n.patch +Patch4: 0005-workaround-CScan-choking-on-glibc-s-headers.patch +Patch5: 0006-Add-U16-type-to-make-make-xs_generate-happy.patch +Patch6: 0007-add-new-constant-CRLF_ASCII.patch +Patch7: 0008-workaround-APR_ENOKEY-not-found.patch +Patch8: 0009-Parse-PROXY-constants-and-search-for-APR_INCLUDEDIR-.patch +Patch9: 0010-Parse-C-inlines-methods-in-CScan.patch +Patch10: 0011-Call-ap_reserve_module_slots_directive.patch +Patch11: 0012-Remove-OPT_INCNOEXEC.patch +Patch12: 0013-Fixed-logleve.patch +Patch13: 0014-Use-module-name-in-ap_add_loaded_module.patch +Patch14: 0015-unixd_config-renamed-to-ap_unixd_config.patch +Patch15: 0016-remote_ip-renamed-to-client_ip.patch +Patch16: 0017-remove-apu_error.h-include.patch +Patch17: 0018-svav_getstr-has-to-return-apr_status_t.patch +Patch18: 0019-Remove-proxy-from-constants.t.patch +Patch19: 0020-Link-APR.so-against-libaprutil-1.patch +Patch20: 0021-Fix-APR__Socket-building.patch +Patch21: 0022-Use-APLOG_MODULE_INDEX-in-ap_log_error.patch +Patch22: 0023-Define-perl_module-in-Const.xs.patch +Patch23: 0024-Include-apu_errno.h.patch +Patch24: 0025-Include-also-from-INCLUDEDIR-disable-test_loglevel.patch +Patch25: 0026-Disable-LimitExcept.patch +Patch26: 0027-Do-no-cscan-expat-and-byteswap.patch +Patch27: 0028-Set-DefaultRuntimeDir-to-run-and-create-it.patch +Requires: apache >= 2.0.48 +Provides: perl(Apache2::FunctionTable), perl(Apache2::StructureTable) +Provides: perl(Apache::TestConfigParse), perl(Apache::TestConfigPerl) +Provides: perl-Apache-Reload +Obsoletes: perl-Apache-Reload +BuildRoot: %{_tmppath}/perl-root + +%description +Apache module interface to PERL. + +%prep +%setup -q -n mod_perl-%{version} +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 +%patch14 -p1 +%patch15 -p1 +%patch16 -p1 +%patch17 -p1 +%patch18 -p1 +%patch19 -p1 +%patch20 -p1 +%patch21 -p1 +%patch22 -p1 +%patch23 -p1 +%patch24 -p1 +%patch25 -p1 +%patch26 -p1 +%patch27 -p1 + +%define _use_internal_dependency_generator 0 +%define __find_provides %{_builddir}/mod_perl-%{version}/find_provides.sh + +cat > find_provides.sh << _EOF +#! /bin/sh +%{_prefix}/lib/rpm/find-provides %{buildroot} %{_target_cpu} | \ +grep -v "perl(warnings)" +_EOF + +chmod +x find_provides.sh + +%build +perl Makefile.PL \ + PREFIX=%{_prefix} \ + MP_APXS=%{_bindir}/apxs \ + MP_APR_CONFIG=%{_bindir}/apr-1-config \ + INSTALLDIRS=vendor + +make source_scan +make xs_generate + +perl Makefile.PL \ + PREFIX=%{_prefix} \ + MP_APXS=%{_bindir}/apxs \ + MP_APR_CONFIG=%{_bindir}/apr-1-config \ + INSTALLDIRS=vendor + +%make +##% make test + +%install +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" +mkdir -p %{buildroot}%{_includedir}/apache +mkdir -p %{buildroot}%{_libdir}/apache + +%makeinstall_perl \ + MODPERL_AP_INCLUDEDIR=%{_includedir}/apache \ + MODPERL_AP_LIBEXECDIR=%{_libdir}/apache +packlist=`find %{buildroot} -name .packlist` +[ -z "$packlist" ] && exit 1 || cat $packlist | \ + sed "s,%buildroot,,g;s,.*/man/.*,&.gz,g" | \ + sort -u > .packlist && rm $packlist + +strid=`echo $packlist | sed 's,.*auto\(.*\)/.packlist,\1,'` +for dir in `find %{buildroot} -type d | grep $strid`; do + echo "%dir ${dir#%buildroot}" >> .packlist +done + +%clean +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" +rm -f .packlist + +%post -n apache-mod_perl +if [ $1 -eq 1 ]; then +#install + apxs -e -a -n perl %{_libdir}/apache/mod_perl.so +# sed -i -e "/^AddType image\/x-icon .*/a\ +#AddType application/x-httpd-php .php" /etc/httpd/httpd.conf + test -e /var/lock/subsys/httpd && + %{_initrddir}/httpd restart +fi +exit 0 + +%preun +if [ $1 -eq 0 ]; then +#erase + apxs -e -A -n perl %{_libdir}/apache/mod_perl.so +fi +exit 0 + +%postun +if [ $1 -eq 1 ]; then +#upgrade + test -e /var/lock/subsys/httpd && + %{_initrddir}/httpd restart +fi +exit 0 + +%files -f .packlist +%defattr(-,root,root) +%{_includedir}/apache/* +%{_libdir}/apache/mod_perl.so + +%changelog +* Thu Nov 15 2012 Silvan Calarco 2.0.7-2mamba +- perl 5.16 mass rebuild + +* Wed Jun 06 2012 Automatic Build System 2.0.7-1mamba +- automatic version update by autodist + +* Thu Apr 26 2012 Automatic Build System 2.0.6-1mamba +- automatic version update by autodist + +* Mon Feb 14 2011 Silvan Calarco 2.0.5-2mamba +- obsolete perl-Apache-Reload + +* Tue Feb 08 2011 Automatic Build System 2.0.5-1mamba +- automatic update by autodist + +* Thu Jan 01 2009 Silvan Calarco 2.0.4-3mamba +- automatic rebuild by autodist + +* Thu Nov 06 2008 Silvan Calarco 2.0.4-2mamba +- rebuilt with perl 5.10 + +* Thu Jun 12 2008 Silvan Calarco 2.0.4-1mamba +- update to 2.0.4 + +* Thu Nov 15 2007 Silvan Calarco 2.0.3-1mamba +- update to 2.0.3 + +* Mon Nov 22 2004 Silvan Calarco 2.0-2qilnx +- rebuilt with perl 5.8.5 + +* Mon Nov 15 2004 Silvan Calarco 2.0-1qilnx +- new version build +- remove provide of perl(warning) + +* Thu Jul 01 2004 Davide Madrisan 1.99_12-3qilnx +- specfile modified using the new perl template for QiLinux perl specfiles + +* Thu Jan 08 2004 Davide Madrisan 1.99_12-2qilnx +- rebuild with Perl 5.8.2 + +* Fri Jan 02 2004 Davide Madrisan 1.99_12-1qilnx +- updated to version 1.99._12, Perl 5.8.1 compatible (see the "hash seed" + feature in Perl 5.8.1 to avoid "algorithmic complexity attacks") +- rebuild with Perl 5.8.1 +- specfile updated, added missing requirements and provides entries +- security fix: only restart httpd daemon if it's running +- fix typo in preun script (apsx versus apxs) + +* Mon Sep 15 2003 Silvan Calarco 1.99_09-1qilnx +- first build