cvs commit: modperl-2.0/t/response/TestAPI module.pm
dougm 01/04/03 22:45:48 Added: t/response/TestAPI module.pm Log: add a test for Apache::Module Revision ChangesPath 1.1 modperl-2.0/t/response/TestAPI/module.pm Index: module.pm === package TestAPI::module; use strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::Module (); use DynaLoader (); sub handler { my $r = shift; plan $r, tests => 6; my $top_module = Apache::Module->top_module; ok $top_module; ok $top_module->version; ok $top_module->module_index; ok $top_module->name; ok $top_module->cmds; for (my $modp = $top_module; $modp; $modp = $modp->next) { if ($modp->name eq 'mod_perl.c') { ok 1; last; } } 0; } 1;
cvs commit: modperl-2.0/pod modperl_dev.pod
dougm 01/04/03 22:41:07 Modified:lib/ModPerl BuildOptions.pm MM.pm pod modperl_dev.pod Log: build extensions dynamic by default Revision ChangesPath 1.7 +1 -1 modperl-2.0/lib/ModPerl/BuildOptions.pm Index: BuildOptions.pm === RCS file: /home/cvs/modperl-2.0/lib/ModPerl/BuildOptions.pm,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- BuildOptions.pm 2001/03/26 16:17:06 1.6 +++ BuildOptions.pm 2001/04/04 05:41:06 1.7 @@ -143,7 +143,7 @@ INST_APACHE2 Install *.pm relative to Apache2/ directory PROMPT_DEFAULT Accept default value for all would-be prompts OPTIONS_FILE Read options from given file -DYNAMIC Build Apache::*.xs as dynamic extensions +STATIC_EXTS Build Apache::*.xs as static extensions APXSPath to apxs XS_GLUE_DIR Directories containing extension glue INCLUDE_DIR Add directories to search for header files 1.8 +1 -1 modperl-2.0/lib/ModPerl/MM.pm Index: MM.pm === RCS file: /home/cvs/modperl-2.0/lib/ModPerl/MM.pm,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- MM.pm 2001/03/04 18:43:09 1.7 +++ MM.pm 2001/04/04 05:41:06 1.8 @@ -98,7 +98,7 @@ #they are, unlike 1.xx where *.xs live in src/modules/perl #and are copied to subdir/ if DYNAMIC=1 -unless ($build->{MP_DYNAMIC}) { +if ($build->{MP_STATIC_EXTS}) { #skip .xs -> .so if we are linking static my $name = $self->{NAME}; unless ($always_dynamic{$name}) { 1.12 +2 -2 modperl-2.0/pod/modperl_dev.pod Index: modperl_dev.pod === RCS file: /home/cvs/modperl-2.0/pod/modperl_dev.pod,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- modperl_dev.pod 2001/04/04 04:11:44 1.11 +++ modperl_dev.pod 2001/04/04 05:41:07 1.12 @@ -55,9 +55,9 @@ Build mod_perl as a DSO -=item MP_DYNAMIC +=item MP_STATIC_EXTS -Build Apache::*.xs as dynamic extensions +Build Apache::*.xs as static extensions =item MP_USE_GTOP
cvs commit: modperl-2.0/xs/APR/APR Makefile.PL
dougm 01/04/03 22:32:34 Modified:xs/APR/APR Makefile.PL Log: disable attempt to link APR.so with apr libs for the moment, really need to wait until apr libs are installed as shared libraries anyhow Revision ChangesPath 1.2 +2 -2 modperl-2.0/xs/APR/APR/Makefile.PL Index: Makefile.PL === RCS file: /home/cvs/modperl-2.0/xs/APR/APR/Makefile.PL,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Makefile.PL 2001/03/05 03:51:16 1.1 +++ Makefile.PL 2001/04/04 05:32:33 1.2 @@ -20,10 +20,10 @@ ModPerl::MM::WriteMakefile( 'NAME' => 'APR', 'VERSION_FROM' => 'APR.pm', -'LIBS' => \@libs, +#'LIBS' => \@libs, ); -sub MY::const_loadlibs { +sub XXX::MY::const_loadlibs { my $self = shift; my $string = $self->MM::const_loadlibs;
cvs commit: modperl-2.0/lib/Apache Build.pm
dougm 01/04/03 22:27:59 Modified:.Makefile.PL lib/Apache Build.pm Log: do a better job of finding ap_release.h to parse the server version and give more diagnostics if it fails Revision ChangesPath 1.31 +6 -0 modperl-2.0/Makefile.PL Index: Makefile.PL === RCS file: /home/cvs/modperl-2.0/Makefile.PL,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- Makefile.PL 2001/04/02 09:17:40 1.30 +++ Makefile.PL 2001/04/04 05:27:59 1.31 @@ -52,6 +52,12 @@ } my $httpd_version = $build->httpd_version; +unless ($httpd_version) { +$build->phat_warn(<{dir} = $dir; } @@ -450,16 +452,16 @@ sub ap_includedir { my($self, $d) = @_; -$d ||= $self->dir; - return $self->{ap_includedir} if $self->{ap_includedir} and -d $self->{ap_includedir}; + +$d ||= $self->apxs('-q' => 'INCLUDEDIR') || $self->dir; -if (-e "$d/include/httpd.h") { +if (-e "$d/include/ap_release.h") { return $self->{ap_includedir} = "$d/include"; } -$self->{ap_includedir} = $self->apxs('-q' => 'INCLUDEDIR'); +$self->{ap_includedir} = $d; } #--- parsing apache *.h files ---
cvs commit: modperl-2.0/src/modules/perl mod_perl.c modperl_config.c modperl_types.h
dougm 01/04/03 22:12:54 Modified:src/modules/perl mod_perl.c modperl_config.c modperl_types.h Log: abort server startup if mpm is threaded and Perl is not ithreads enabled Revision ChangesPath 1.41 +8 -0 modperl-2.0/src/modules/perl/mod_perl.c Index: mod_perl.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/mod_perl.c,v retrieving revision 1.40 retrieving revision 1.41 diff -u -r1.40 -r1.41 --- mod_perl.c2001/03/25 17:42:26 1.40 +++ mod_perl.c2001/04/04 05:12:54 1.41 @@ -77,6 +77,14 @@ MP_TRACE_d_do(MpSrv_dump_flags(base_scfg, base_server->server_hostname)); +#ifndef USE_ITHREADS +if (base_scfg->threaded_mpm) { +ap_log_error(APLOG_MARK, APLOG_ERR, 0, base_server, + "cannot use threaded MPM without ithreads enabled Perl"); +exit(1); +} +#endif + if (!MpSrvENABLED(base_scfg)) { /* how silly */ return; 1.30 +4 -2 modperl-2.0/src/modules/perl/modperl_config.c Index: modperl_config.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_config.c,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- modperl_config.c 2001/03/26 01:08:29 1.29 +++ modperl_config.c 2001/04/04 05:12:54 1.30 @@ -117,9 +117,10 @@ { modperl_config_srv_t *scfg = modperl_config_srv_new(p); -#ifdef USE_ITHREADS ap_mpm_query(AP_MPMQ_IS_THREADED, &scfg->threaded_mpm); +#ifdef USE_ITHREADS + scfg->interp_pool_cfg = (modperl_tipool_config_t *) apr_pcalloc(p, sizeof(*scfg->interp_pool_cfg)); @@ -149,11 +150,12 @@ MP_TRACE_d(MP_FUNC, "basev==0x%lx, addv==0x%lx\n", (unsigned long)basev, (unsigned long)addv); +merge_item(threaded_mpm); + #ifdef USE_ITHREADS merge_item(mip); merge_item(interp_pool_cfg); merge_item(interp_lifetime); -merge_item(threaded_mpm); #else merge_item(perl); #endif 1.31 +1 -1 modperl-2.0/src/modules/perl/modperl_types.h Index: modperl_types.h === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_types.h,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- modperl_types.h 2001/03/25 17:42:27 1.30 +++ modperl_types.h 2001/04/04 05:12:54 1.31 @@ -113,11 +113,11 @@ MpAV *handlers_files[MP_HANDLER_NUM_FILES]; MpAV *handlers_process[MP_HANDLER_NUM_PROCESS]; MpAV *handlers_connection[MP_HANDLER_NUM_CONNECTION]; +int threaded_mpm; #ifdef USE_ITHREADS modperl_interp_pool_t *mip; modperl_tipool_config_t *interp_pool_cfg; modperl_interp_lifetime_e interp_lifetime; -int threaded_mpm; #else PerlInterpreter *perl; #endif
cvs commit: modperl-2.0/src/modules/perl modperl_options.c
dougm 01/04/03 21:48:02 Modified:src/modules/perl modperl_options.c Log: pass the proper value to MpSrvOPT_ITHREAD_ONLY() Revision ChangesPath 1.6 +1 -1 modperl-2.0/src/modules/perl/modperl_options.c Index: modperl_options.c === RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_options.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- modperl_options.c 2001/03/26 21:43:31 1.5 +++ modperl_options.c 2001/04/04 04:48:01 1.6 @@ -75,7 +75,7 @@ } #ifndef USE_ITHREADS else { -if (MpSrvOPT_ITHREAD_ONLY(o)) { +if (MpSrvOPT_ITHREAD_ONLY(opt)) { return apr_pstrcat(p, "PerlOption `", str, "' requires an ithreads enabled Perl", NULL); }
cvs commit: modperl-2.0/t/hooks authen.t
dougm 01/04/03 21:37:03 Modified:Apache-Test/lib/Apache Test.pm TestRequest.pm Apache-Test/t request.t t/apache post.t t/filter lc.t t/hooks authen.t Log: make test work without lwp installed Revision ChangesPath 1.2 +13 -4 modperl-2.0/Apache-Test/lib/Apache/Test.pm Index: Test.pm === RCS file: /home/cvs/modperl-2.0/Apache-Test/lib/Apache/Test.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- Test.pm 2001/04/02 08:53:05 1.1 +++ Test.pm 2001/04/04 04:36:57 1.2 @@ -7,7 +7,7 @@ use Exporter (); our @ISA = qw(Exporter); -our @EXPORT = qw(ok plan); +our @EXPORT = qw(ok plan have_lwp); our $VERSION = '0.01'; #so Perl's Test.pm can be run inside mod_perl @@ -36,9 +36,18 @@ init_test_pm(shift) if ref $_[0]; my $condition = pop @_ if ref $_[-1]; -if ($condition and ! $condition->()) { -print "0..1\n"; -exit; #XXX: Apache->exit +if ($condition) { +unless (defined &have_lwp) { +#XXX figure out a better set this up +#dont want to require Apache::TestRequest/lwp +#on the server side +require Apache::TestRequest; +*have_lwp = \&Apache::TestRequest::has_lwp; +} +unless ($condition->()) { +print "1..0\n"; +exit; #XXX: Apache->exit +} } Test::plan(@_); 1.2 +6 -0 modperl-2.0/Apache-Test/lib/Apache/TestRequest.pm Index: TestRequest.pm === RCS file: /home/cvs/modperl-2.0/Apache-Test/lib/Apache/TestRequest.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- TestRequest.pm2001/04/02 08:55:42 1.1 +++ TestRequest.pm2001/04/04 04:36:58 1.2 @@ -12,6 +12,12 @@ sub has_lwp { $have_lwp } +unless ($have_lwp) { +#need to define the shortcuts even though the wont be used +#so Perl can parse test scripts +@HTTP::Request::Common::EXPORT = qw(GET HEAD POST PUT); +} + require Exporter; *import = \&Exporter::import; our @EXPORT = @HTTP::Request::Common::EXPORT; 1.2 +1 -1 modperl-2.0/Apache-Test/t/request.t Index: request.t === RCS file: /home/cvs/modperl-2.0/Apache-Test/t/request.t,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- request.t 2001/04/02 09:01:24 1.1 +++ request.t 2001/04/04 04:36:59 1.2 @@ -4,7 +4,7 @@ use Apache::Test; use Apache::TestRequest; -plan tests => 9, \&Apache::TestRequest::has_lwp; +plan tests => 9, \&have_lwp; my $url = '/'; 1.2 +2 -2 modperl-2.0/t/apache/post.t Index: post.t === RCS file: /home/cvs/modperl-2.0/t/apache/post.t,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- post.t2001/04/02 09:08:40 1.1 +++ post.t2001/04/04 04:37:00 1.2 @@ -1,10 +1,10 @@ use strict; use warnings FATAL => 'all'; -use Test; +use Apache::Test; use Apache::TestRequest; -plan tests => 2; +plan tests => 2, \&have_lwp; my $location = "/TestApache::post"; my $str; 1.2 +2 -2 modperl-2.0/t/filter/lc.t Index: lc.t === RCS file: /home/cvs/modperl-2.0/t/filter/lc.t,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- lc.t 2001/04/03 00:28:26 1.1 +++ lc.t 2001/04/04 04:37:01 1.2 @@ -1,10 +1,10 @@ use strict; use warnings FATAL => 'all'; -use Test; +use Apache::Test; use Apache::TestRequest; -plan tests => 1; +plan tests => 1, \&have_lwp; my $location = "/pod/modperl_2.0.pod"; 1.3 +2 -2 modperl-2.0/t/hooks/authen.t Index: authen.t === RCS file: /home/cvs/modperl-2.0/t/hooks/authen.t,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- authen.t 2001/04/02 19:30:22 1.2 +++ authen.t 2001/04/04 04:37:02 1.3 @@ -1,10 +1,10 @@ use strict; use warnings FATAL => 'all'; -use Test; +use Apache::Test; use Apache::TestRequest; -plan tests => 4; +plan tests => 4, \&have_lwp; my $location = "/TestHooks::authen";
cvs commit: modperl-2.0/pod modperl_dev.pod
dougm 01/04/03 21:11:44 Modified:.00README_FIRST pod modperl_dev.pod Log: remove duplicate build instructions Revision ChangesPath 1.16 +5 -33 modperl-2.0/00README_FIRST Index: 00README_FIRST === RCS file: /home/cvs/modperl-2.0/00README_FIRST,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- 00README_FIRST2001/03/27 02:39:47 1.15 +++ 00README_FIRST2001/04/04 04:11:43 1.16 @@ -1,41 +1,13 @@ -a (nearly) complete rewrite is underway for mod_perl-2.0 +a complete rewrite is underway for mod_perl-2.0 -more detailed design docs, etc., see the pod/ directory +for more detailed design docs, etc., see the pod/ directory -if you want to try building with an interpreter pool, you'll need Perl -5.6.0 built like so: +see pod/modperl_dev.pod for build instructions. -% ./Configure -des -Dusethreads - -mod_perl-2.0 will still work with an out-of-the-box Perl, but will -only be useful if your mpm is prefork (which is much like 1.3.x) - -to build mod_perl static: -NOTE: static linking untested for several months - -% perl Makefile.PL && make - -% cd ../httpd-2.0 -% ./configure --prefix=$HOME/apache-2.0 --with-mpm=threaded -% patch -p1 < ../../modperl-2.0/patches/link-hack.pat -% make - -to build mod_perl dynamic: - -build httpd with mod_so enabled: -% cd httpd-2.0 -% ./configure --with-mpm=threaded --enable-so ... -% make -% make install - -#build libmodperl.so and extension .so's -% perl Makefile.PL MP_GENERATE_XS=1 MP_USE_DSO=1 \ -MP_APXS=$apache_prefix/bin/apxs && make - as for httpd.conf, mine looks something like so at the moment: #if dynamic build -LoadModule perl_module libexec/libmodperl.so +LoadModule perl_module modules/libmodperl.so #same as using the MOD_PERL_TRACE environment variable PerlTrace all @@ -63,4 +35,4 @@ see the examples/ directory for examples. ---dougm 03/26/01 +--dougm 04/03/01 1.11 +2 -1 modperl-2.0/pod/modperl_dev.pod Index: modperl_dev.pod === RCS file: /home/cvs/modperl-2.0/pod/modperl_dev.pod,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- modperl_dev.pod 2001/03/26 16:17:10 1.10 +++ modperl_dev.pod 2001/04/04 04:11:44 1.11 @@ -35,7 +35,8 @@ =head2 Create the build environment % cd modperl-2.0 - % perl Makefile.PL [options] + % perl Makefile.PL MP_GENERATE_XS=1 MP_USE_DSO=1 \ +MP_APXS=$apache_prefix/bin/apxs && make I an optional list of (key,value) pairs. Currently all options are boolean, set them with MP_XXX=1.
cvs commit: modperl-2.0/Apache-Test/lib/Apache TestRun.pm
dougm 01/04/03 10:24:49 Modified:Apache-Test/lib/Apache TestRun.pm Log: make "t/TEST -start t/apache/conftree.t" do the right thing Revision ChangesPath 1.3 +2 -0 modperl-2.0/Apache-Test/lib/Apache/TestRun.pm Index: TestRun.pm === RCS file: /home/cvs/modperl-2.0/Apache-Test/lib/Apache/TestRun.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- TestRun.pm2001/04/03 04:23:44 1.2 +++ TestRun.pm2001/04/03 17:24:46 1.3 @@ -159,6 +159,8 @@ $opts->{$_} = 1 for @std_run; } } + +$opts->{'run-tests'} ||= @$tests; } my $caught_sig_int = 0;
cvs commit: modperl-2.0/Apache-Test/lib/Apache TestServer.pm
dougm 01/04/03 10:17:11 Modified:Apache-Test/lib/Apache TestServer.pm Log: wait a bit longer for server to start Revision ChangesPath 1.3 +5 -3 modperl-2.0/Apache-Test/lib/Apache/TestServer.pm Index: TestServer.pm === RCS file: /home/cvs/modperl-2.0/Apache-Test/lib/Apache/TestServer.pm,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- TestServer.pm 2001/04/02 18:36:25 1.2 +++ TestServer.pm 2001/04/03 17:17:10 1.3 @@ -246,12 +246,14 @@ sleep 1; } -my $tries = 4; +my $tries = 6; for (1..$tries) { my $pid = $self->pid; -if ($pid and $_ > 1) { -print "ok\n"; +if ($pid) { +if($_ > 1) { +print "ok\n"; +} } else { if ($_ == 1) {
cvs commit: modperl-2.0/t/response/TestApache conftree.pm
dougm 01/04/03 10:01:48 Added: t/response/TestApache conftree.pm Log: add some tests for ap_conftree Revision ChangesPath 1.1 modperl-2.0/t/response/TestApache/conftree.pm Index: conftree.pm === package TestApache::conftree; use strict; use warnings FATAL => 'all'; use Apache::Test; use Apache::TestConfig (); use Apache::Directive (); sub handler { my $r = shift; my $cfg = Apache::TestConfig->thaw; plan $r, tests => 7; ok $cfg; my $vars = $cfg->{vars}; ok $vars; my $tree = Apache::Directive->conftree; ok $tree; my $port = find_config_val($tree, 'Listen'); ok $port; ok $port == $vars->{port}; my $serverroot = find_config_val($tree, 'ServerRoot'); ok $serverroot; ok $serverroot eq qq("$vars->{serverroot}"); 0; } sub find_config_val { my($tree, $directive) = @_; while ($tree) { if ($directive eq $tree->directive) { return $tree->args; } if (my $kid = $tree->first_child) { $tree = $kid; } elsif (my $next = $tree->next) { $tree = $next; } else { if (my $parent = $tree->parent) { $tree = $parent->next; } else { $tree = undef; } } } } 1;
cvs commit: modperl-2.0/t/response/TestAPI conn_rec.pm request_rec.pm server_rec.pm
dougm 01/04/03 09:59:11 Modified:t/response/TestAPI conn_rec.pm request_rec.pm server_rec.pm Log: add missing strictness Revision ChangesPath 1.2 +3 -0 modperl-2.0/t/response/TestAPI/conn_rec.pm Index: conn_rec.pm === RCS file: /home/cvs/modperl-2.0/t/response/TestAPI/conn_rec.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- conn_rec.pm 2001/04/02 09:05:00 1.1 +++ conn_rec.pm 2001/04/03 16:59:08 1.2 @@ -1,5 +1,8 @@ package TestAPI::conn_rec; +use strict; +use warnings FATAL => 'all'; + use Apache::Test; sub handler { 1.2 +3 -0 modperl-2.0/t/response/TestAPI/request_rec.pm Index: request_rec.pm === RCS file: /home/cvs/modperl-2.0/t/response/TestAPI/request_rec.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- request_rec.pm2001/04/02 09:05:01 1.1 +++ request_rec.pm2001/04/03 16:59:09 1.2 @@ -1,5 +1,8 @@ package TestAPI::request_rec; +use strict; +use warnings FATAL => 'all'; + use Apache::Test; sub handler { 1.2 +3 -0 modperl-2.0/t/response/TestAPI/server_rec.pm Index: server_rec.pm === RCS file: /home/cvs/modperl-2.0/t/response/TestAPI/server_rec.pm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- server_rec.pm 2001/04/02 09:05:01 1.1 +++ server_rec.pm 2001/04/03 16:59:09 1.2 @@ -1,5 +1,8 @@ package TestAPI::server_rec; +use strict; +use warnings FATAL => 'all'; + use Apache::Test; sub handler {