On 07/16/2013 03:04 PM, Steve Hay wrote:
Jan Kaluža wrote on 2013-07-15:
On 07/15/2013 02:58 PM, Steve Hay wrote:
[...] right now I still have it crashing
on startup (with or without revision r1303215), so we obviously didn't
have the same crashing problem after all :-/ I will try to fix that
next.
I'm afraid I can't help you further here...
When running "nmake test" I'm getting:
Can't load
'D:\temp\mp2d\modperl-httpd24\blib\arch/auto/Apache2/Const/Const.dll' for
module Apache2::Const: load_file:The specified module could not be found at
D:/temp/mp2d/perl/lib/DynaLoader.pm line 190.
at D:\temp\mp2d\modperl-httpd24\t\response\TestApache\subprocess.pm line 13.
Trying a simple one-liner:
D:\temp\mp2d\perl\bin\perl.exe -Iblib\arch -Iblib\lib -MApache2::Const -e1
does much the same. That works with trunk, built against httpd-2.2. The
difference is that Apache2/Const/Const.dll now depends on mod_perl.so (it
didn't use to), and that isn't in a location in the PATH when running the test
suite.
Using dumpbin /imports to see why we have this new dependency shows that it's
due to the 'perl_module' symbol... We've been here before recently with the
APR::Brigade build failure. I wondered if Apache2::Const (and maybe others)
needed to link against libaprext.lib (with its fake 'perl_module' symbol) to
avoid this problem, but lib/ModPerl/BuildMM says:
# in order to decouple APR/APR::* from mod_perl.so,
# link these modules against the static MP_APR_LIB lib,
# rather than the mod_perl lib (which would demand mod_perl.so
# be available). For other modules, use mod_perl.lib as
# usual.
which suggests that Apache2::* modules are expected to depend on mod_perl.so
(even though this one happened not to until now), so using libaprext.lib
instead of mod_perl.lib here is probably the wrong thing to do here and would
likely break things that require a proper definitions of 'perl_module'.
So I think the answer is to add src/modules/perl (where mod_perl.so has been
built) to the PATH when running the test suite.
If I do that manually in my Command Prompt window then "nmake test" runs
normally (albeit with a *lot* of test failures [1] which I'll look at later), but I'm not
sure where is the best place to make that happen automatically within Apache-Test?
Is this an issue on other OSes, or only on Windows? (Not sure if you normally
build mod_perl dynamically or statically linked elsewhere?)
If I understand it right, we don't link modules to anything explicitly
on Linux, but when they are loaded later, all their dependencies have to
be loaded on runtime too. Since apr/apr-util and mod_perl are loaded by
httpd, there's no problem.
At least I see "LIBS => q[ ]" in MakeMaker parametrs for Apache2::* modules.
[1] The complete list of failures on this first run through (using a perl
without LWP installed, so lots more tests were skipped too) is:
Test Summary Report
-------------------
t\apache\subprocess.t (Wstat: 0 Tests: 1 Failed: 0)
Parse errors: Bad plan. You planned 5 tests but ran 1.
t\api\access2.t (Wstat: 0 Tests: 0 Failed: 0)
Parse errors: No plan found in TAP output
t\api\server_const.t (Wstat: 2304 Tests: 0 Failed: 0)
Non-zero exit status: 9
Parse errors: No plan found in TAP output
t\apr-ext\brigade.t (Wstat: 1280 Tests: 0 Failed: 0)
Non-zero exit status: 5
Parse errors: Bad plan. You planned 14 tests but ran 0.
t\apr-ext\bucket.t (Wstat: 1280 Tests: 0 Failed: 0)
Non-zero exit status: 5
Parse errors: Bad plan. You planned 21 tests but ran 0.
t\apr-ext\finfo.t (Wstat: 1280 Tests: 0 Failed: 0)
Non-zero exit status: 5
Parse errors: Bad plan. You planned 27 tests but ran 0.
t\apr-ext\perlio.t (Wstat: 1280 Tests: 0 Failed: 0)
Non-zero exit status: 5
Parse errors: No plan found in TAP output
t\apr-ext\pool.t (Wstat: 1280 Tests: 0 Failed: 0)
Non-zero exit status: 5
Parse errors: Bad plan. You planned 77 tests but ran 0.
t\apr-ext\table.t (Wstat: 1280 Tests: 0 Failed: 0)
Non-zero exit status: 5
Parse errors: Bad plan. You planned 58 tests but ran 0.
t\apr-ext\threadmutex.t (Wstat: 1280 Tests: 0 Failed: 0)
Non-zero exit status: 5
Parse errors: Bad plan. You planned 5 tests but ran 0.
t\apr-ext\threadrwlock.t (Wstat: 1280 Tests: 0 Failed: 0)
Non-zero exit status: 5
Parse errors: Bad plan. You planned 5 tests but ran 0.
t\apr-ext\uri.t (Wstat: 1280 Tests: 0 Failed: 0)
Non-zero exit status: 5
Parse errors: Bad plan. You planned 36 tests but ran 0.
t\compat\conn_rec.t (Wstat: 0 Tests: 2 Failed: 0)
Parse errors: Bad plan. You planned 4 tests but ran 2.
t\modperl\local_env.t (Wstat: 0 Tests: 6 Failed: 1)
Failed test: 6
t\modperl\merge.t (Wstat: 0 Tests: 10 Failed: 3)
Failed tests: 3, 6, 9
t\modperl\merge2.t (Wstat: 0 Tests: 10 Failed: 3)
Failed tests: 3, 6, 9
t\modperl\merge3.t (Wstat: 0 Tests: 10 Failed: 3)
Failed tests: 3, 6, 9
t\modperl\setupenv2.t (Wstat: 0 Tests: 23 Failed: 7)
Failed tests: 17-23
t\modules\cgi.t (Wstat: 0 Tests: 4 Failed: 4)
Failed tests: 1-4
t\modules\cgi2.t (Wstat: 0 Tests: 4 Failed: 4)
Failed tests: 1-4
t\modules\cgipost.t (Wstat: 0 Tests: 6 Failed: 5)
Failed tests: 2-6
t\modules\cgipost2.t (Wstat: 0 Tests: 6 Failed: 5)
Failed tests: 2-6
t\protocol\echo_block.t (Wstat: 0 Tests: 3 Failed: 2)
Failed tests: 2-3
t\protocol\echo_nonblock.t (Wstat: 0 Tests: 3 Failed: 1)
Failed test: 2
t\protocol\echo_timeout.t (Wstat: 0 Tests: 5 Failed: 4)
Failed tests: 2-5
t\protocol\pseudo_http.t (Wstat: 0 Tests: 13 Failed: 9)
Failed tests: 3-8, 11-13
Files=249, Tests=1937, 722 wallclock secs ( 2.12 usr + 0.30 sys = 2.42 CPU)
Result: FAIL
Failed 26/249 test programs. 51/1937 subtests failed.
That's my summary after the changes we've made:
t/api/access2.t (Wstat: 0 Tests: 0 Failed: 0)
Parse errors: No plan found in TAP output
t/api/server_const.t (Wstat: 512 Tests: 0 Failed: 0)
Non-zero exit status: 2
Parse errors: No plan found in TAP output
t/compat/conn_rec.t (Wstat: 0 Tests: 2 Failed: 0)
Parse errors: Bad plan. You planned 4 tests but ran 2.
t/modules/apache_resource.t (Wstat: 512 Tests: 0 Failed: 0)
Non-zero exit status: 2
Parse errors: Bad plan. You planned 1 tests but ran 0.
t/modules/apache_status.t (Wstat: 65280 Tests: 0 Failed: 0)
Non-zero exit status: 255
Parse errors: Bad plan. You planned 15 tests but ran 0.
t/modules/cgi.t (Wstat: 0 Tests: 5 Failed: 1)
Failed test: 3
t/modules/cgi2.t (Wstat: 0 Tests: 5 Failed: 2)
Failed tests: 1, 4
t/modules/cgipost.t (Wstat: 0 Tests: 6 Failed: 1)
Failed test: 5
t/modules/cgipost2.t (Wstat: 0 Tests: 6 Failed: 1)
Failed test: 5
t/modules/cgiupload.t (Wstat: 0 Tests: 2 Failed: 1)
Failed test: 2
Files=249, Tests=2754, 188 wallclock secs ( 1.38 usr 0.62 sys + 108.86
cusr 26.83 csys = 137.69 CPU)
- cgi*.t tests fails because of svn commit: r1491887 -
/perl/modperl/trunk/t/modperl/local_env.t.
- access2.t should not be run when compiled with 2.4, it contains
httpd-2.2 only code. access24.t is the same test rewritten for httpd-2.4.
- conn_rec.t does not work, because compat is not supported with
httpd-2.4. We would have to change remote_ip to cliet_ip in compat code,
but I haven't found out way how to make condition for that there.
I haven't examined other tests yet.
For comparison, following test summary is from mod_perl before Windows
related fixed. I will try to find out what changes make the tests to fail.
t/api/access2.t (Wstat: 0 Tests: 0 Failed: 0)
Parse errors: No plan found in TAP output
t/compat/conn_rec.t (Wstat: 0 Tests: 2 Failed: 0)
Parse errors: Bad plan. You planned 4 tests but ran 2.
t/modules/cgi.t (Wstat: 0 Tests: 5 Failed: 2)
Failed tests: 2, 5
t/modules/cgi2.t (Wstat: 0 Tests: 5 Failed: 1)
Failed test: 3
t/modules/cgipost.t (Wstat: 0 Tests: 6 Failed: 1)
Failed test: 4
t/modules/cgipost2.t (Wstat: 0 Tests: 6 Failed: 1)
Failed test: 4
t/modules/cgiupload.t (Wstat: 0 Tests: 2 Failed: 1)
Failed test: 1
t/modules/cgiupload2.t (Wstat: 0 Tests: 2 Failed: 1)
Failed test: 2
Regards,
Jan Kaluza
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@perl.apache.org
For additional commands, e-mail: dev-h...@perl.apache.org