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

Reply via email to