Ok, this is pretty long, but I was trying to make sure 
I included everything relevant to the problem.

Is there a simple answer to getting 'make test' for 
mod_perl to work when all extra perl modules are in a 
custom 

location?  Simply having PERL5LIB=/appl/perl/lib 
exported when running the builds doesn't seem to 
suffice. It 

works fine for everything else perlish, just not the 
mod_perl 'make test'.

I'm building apache 1.3.23 and mod_perl 1.26 (with 
latest mod_ssl - but that doesn't seem to be part of 
the 

problem).  I have all the modules not included with 
perl installed in /appl/perl/lib.  This is a Solaris 8 
64-bit 

system.  perl was built with 'sh Configure -des -
Duseshrplib' (useshrplib was for postgres, I'm building 
modperl 

statically).  I used gcc 3.0.3 for everything 
(installed latest binutils first then gcc - both from 
sunfreeware).

mod_perl:

<<file:makepl_args.mod_perl>>
APACHE_SRC=/data/build/WEB/apache
SSL_BASE=/usr/local/ssl
EVERYTHING=1
DO_HTTPD=1
PREP_HTTPD=1
USE_APACI=1
PERL_SSI=1

#perl Makefile.PL PERL5LIB=/appl/perl/lib && make

apache:

#SSL_BASE=/usr/local/ssl \
        ./configure \
        --with-layout=Apache \
        --server-uid=web \
        --server-gid=web \
        --disable-rule=EXPAT \
        --disable-module=asis \
        --disable-module=imap \
        --disable-module=negotiation \
        --disable-module=userdir \
        --enable-module=proxy \
        --enable-module=rewrite \
        --enable-module=define \
        --activate-module=src/modules/perl/libperl.a \
        --enable-module=perl \
        --enable-module=ssl
#make

mod_perl:

#PERL_HTTP_URI_CLASS=URI::URL make test

Now that you have all the background, some deatils on 
the problem:

My symptoms are that the httpd process (and the 
module/cgi and module/include subtests once the httpd 
issue was 

fixed) complains that the CGI modules can't be found. 
At the end I've included a capture of the make test 
output, 

both unmodified, and modified (that's coming) - I 
ignored the Net::HTTP errors since they just looked 
like 

warnings, rather than errors - please let me know if 
that's really a problem.  

I added a few BEGIN{print $ENV{PERL5LIB},"\n"} lines 
here and there in various places and found that my 
PERL5LIB 

wasn't getting picked up by either the httpd/mod_perl 
process, or the scripts run via cgi.

I finally got it to work by modifying Makefile.PL and 
httpd.conf-dist, as well as creating a t/docs/local.pl.

In Makefile.PL I noticed that at line 1273 it reads:


        PERL5LIB => "PERL5LIB=$ENV{PERL5LIB}",


Shouldn't this be like this instead?  


        PERL5LIB => "$ENV{PERL5LIB}",


Maybe I don't understand the purpose, but it seems 
wrong, especially given the errors below where 

../PERL5LIB=/data/web/xxx is actually shown in @INC for 
t/TEST.  I can't see an immediate reason to have 

../VAR=/path in the @INC. Anyway... I made that change 
and in that same file I modified line 99 so instead of 


        $ENV{PERL5LIB} = "$PWD/lib";


it reads


        $ENV{PERL5LIB} = "$PWD/lib" . ($ENV
{PERL5LIB} ? ":$ENV{PERL5LIB}" : "");


This way it preserves any local PERL5LIB settings while 
adding the mod_perl build location.  I'm not sure if 
the 

$PWD/lib is even needed since it didn't seem to be 
right in the first place.  Maybe the $PWD/lib part 
could just 

be dropped altogether.

In httpd.conf-dist (or httpd.conf if I wasn't rerunning 
the whole build again but just the 'make run-tests') I 

had to add 


        PassEnv PERL5LIB


or the tests run through normal cgi instead of mod_perl 
don't work.  I placed it in the #mod_perl section, 
right 

before 'PerlPassEnv PERl5LIB'.


Finally, I created a local.pl, since that's looked for 
by the startup.pl in t/docs:


        use lib '/appl/perl/lib';
        1;


So, I got all the tests to work, but I was wondering if 
there was a build option I was missing, or something 
that 

wasn't documented yet?  I did spend 2 days researching 
this before posting, so I really hope I didn't miss 

something in the docs, the FAQ or the mod_perl guide.  
In making the changes, I tried to change things in as 
few 

places as possible.  If there's a better way to do 
this, please, show me how!

Also, since mod_perl and LWP still don't seem to play 
well together in their current versions, I used the 

PERL_HTTP_URI_CLASS=URI::URL "hack" to things to work. 
(I found that in the mod_perl list archives...)

Thanks for anything you can help with on this.

Jim

<<<< PERL_HTTP_URI_CLASS=URI::URL make test >>>>
<<<< cut out make dir recursion/iterations  >>>>

<<<< unmodified mod_perl-1.26 >>>>
cp t/conf/mod_perl_srm.conf t/conf/srm.conf
../apache/src/httpd -f `pwd`/t/conf/httpd.conf -X -d 
`pwd`/t &
httpd listening on port 8529
will write error_log to: t/logs/error_log
letting apache warm up...[Wed Mar 27 16:19:06 2002] 
[error] Can't locate CGI.pm in @INC (@INC contains: 

/v01/data/build/WEB/mod_perl-
1.26/blib/lib /v01/data/build/WEB/mod_perl-
1.26/blib/arch 

/v01/data/build/WEB/mod_perl-1.26/t/docs blib/arch 
blib/lib /usr/local/lib/perl5/5.6.1/sun4-solaris 

/usr/local/lib/perl5/5.6.1 /usr/local/lib/perl5/site_per
l/5.6.1/sun4-
solaris /usr/local/lib/perl5/site_perl/5.6.1 

/usr/local/lib/perl5/site_perl /v01/data/build/WEB/mod_p
erl-1.26/t/ /v01/data/build/WEB/mod_perl-
1.26/t/lib/perl) 

at /v01/data/build/WEB/mod_perl-
1.26/t/net/perl/qredirect.pl line 2.
BEGIN failed--compilation aborted 
at /v01/data/build/WEB/mod_perl-
1.26/t/net/perl/qredirect.pl line 2.
Compilation failed in require 
at /v01/data/build/WEB/mod_perl-1.26/t//docs/startup.pl 
line 101.
Compilation failed in require at (eval 1) line 1.

Syntax error on line 62 of /v01/data/build/WEB/mod_perl-
1.26/t/conf/httpd.conf:
Can't locate CGI.pm in @INC (@INC 
contains: /v01/data/build/WEB/mod_perl-1.26/blib/lib 

/v01/data/build/WEB/mod_perl-
1.26/blib/arch /v01/data/build/WEB/mod_perl-1.26/t/docs 
blib/arch blib/lib 

/usr/local/lib/perl5/5.6.1/sun4-
solaris /usr/local/lib/perl5/5.6.1 

/usr/local/lib/perl5/site_perl/5.6.1/sun4-
solaris /usr/local/lib/perl5/site_perl/5.6.1 

/usr/local/lib/perl5/site_perl /v01/data/build/WEB/mod_p
erl-1.26/t/ /v01/data/build/WEB/mod_perl-
1.26/t/lib/perl) 

at /v01/data/build/WEB/mod_perl-
1.26/t/net/perl/qredirect.pl line 2.
BEGIN failed--compilation aborted 
at /v01/data/build/WEB/mod_perl-
1.26/t/net/perl/qredirect.pl line 2.
Compilation failed in require 
at /v01/data/build/WEB/mod_perl-1.26/t//docs/startup.pl 
line 101.
Compilation failed in require at (eval 1) line 1.

done
/bin/perl t/TEST 0
Can't locate LWP/UserAgent.pm in @INC (@INC 
contains: ../blib/lib ../blib/arch 

../PERL5LIB=/v01/data/build/WEB/mod_perl-
1.26/lib /usr/local/lib/perl5/5.6.1/sun4-solaris 

/usr/local/lib/perl5/5.6.1 /usr/local/lib/perl5/site_per
l/5.6.1/sun4-
solaris /usr/local/lib/perl5/site_perl/5.6.1 

/usr/local/lib/perl5/site_perl ../.) at t/TEST line 48.

I still can't find LWP::UserAgent, try:
/bin/perl -MCPAN -e install LWP

                or

http://www.perl.com/cgi-bin/cpan_mod?module=LWP

Must skip important tests without LWP...

kill `cat t/logs/httpd.pid`
cat: cannot open t/logs/httpd.pid
/bin/sh: usage: kill [ [ -sig ] id ... | -l ]
make: *** [kill_httpd] Error 1


<<<< modified as per above  - make test output>>>
cp t/conf/mod_perl_srm.conf t/conf/srm.conf
../apache/src/httpd -f `pwd`/t/conf/httpd.conf -X -d 
`pwd`/t &
httpd listening on port 8529
will write error_log to: t/logs/error_log
letting apache warm up...done
/bin/perl t/TEST 0
still waiting for server to warm up......ok
ok
ok
modules/actions.....ok                                  
                     
modules/cgi.........ok                                  
                     
modules/constants...ok                                  
                     
modules/cookie......skipped test on this platform
modules/file........ok                                  
                     
modules/httpdconf...ok                                  
                     
modules/include.....ok                                  
                     
modules/log.........ok                                  
                     
modules/module......skipped test on this platform
modules/perlrun.....ok                                  
                     
modules/psections...skipped test on this platform
modules/request.....skipped test on this platform
modules/src.........ok                                  
                     
modules/ssi.........ok                                  
                     
modules/stage.......skipped test on this platform
modules/status......ok                                  
                     
modules/symbol......skipped test on this platform
modules/uri.........ok                                  
                     
modules/util........ok                                  
                     
internal/api........ok                                  
                     
internal/auth.......ok                                  
                     
internal/croak......ok                                  
                     
internal/dirmagic...ok                                  
                     
internal/error......ok                                  
                     
internal/headers....ok                                  
                     
internal/hooks......ok                                  
                     
internal/http-get...Use of uninitialized value in 
substitution (s///) 
at /appl/perl/lib/Net/HTTP/Methods.pm line 

425.
Use of uninitialized value in substitution (s///) 
at /appl/perl/lib/Net/HTTP/Methods.pm line 426.
Use of uninitialized value in hex 
at /appl/perl/lib/Net/HTTP/Methods.pm line 427.
internal/http-get...ok 7/16Use of uninitialized value 
in substitution (s///) at 

/appl/perl/lib/Net/HTTP/Methods.pm line 425.
Use of uninitialized value in substitution (s///) 
at /appl/perl/lib/Net/HTTP/Methods.pm line 426.
Use of uninitialized value in hex 
at /appl/perl/lib/Net/HTTP/Methods.pm line 427.
Use of uninitialized value in substitution (s///) 
at /appl/perl/lib/Net/HTTP/Methods.pm line 425.
Use of uninitialized value in substitution (s///) 
at /appl/perl/lib/Net/HTTP/Methods.pm line 426.
Use of uninitialized value in hex 
at /appl/perl/lib/Net/HTTP/Methods.pm line 427.
Use of uninitialized value in substitution (s///) 
at /appl/perl/lib/Net/HTTP/Methods.pm line 425.
Use of uninitialized value in substitution (s///) 
at /appl/perl/lib/Net/HTTP/Methods.pm line 426.
Use of uninitialized value in hex 
at /appl/perl/lib/Net/HTTP/Methods.pm line 427.
Use of uninitialized value in substitution (s///) 
at /appl/perl/lib/Net/HTTP/Methods.pm line 425.
Use of uninitialized value in substitution (s///) 
at /appl/perl/lib/Net/HTTP/Methods.pm line 426.
Use of uninitialized value in hex 
at /appl/perl/lib/Net/HTTP/Methods.pm line 427.
Use of uninitialized value in substitution (s///) 
at /appl/perl/lib/Net/HTTP/Methods.pm line 425.
Use of uninitialized value in substitution (s///) 
at /appl/perl/lib/Net/HTTP/Methods.pm line 426.
Use of uninitialized value in hex 
at /appl/perl/lib/Net/HTTP/Methods.pm line 427.
internal/http-
get...ok                                                
       
internal/http-
post..ok                                                
       
internal/proxy......ok                                  
                     
internal/redirect...ok                                  
                     
internal/rwrite.....ok                                  
                     
internal/stacked....ok                                  
                     
internal/table......ok                                  
                     
internal/taint......ok                                  
                     
All tests successful, 6 tests skipped.
Files=34, Tests=390, 32 wallclock secs (25.09 cusr +  
3.92 csys = 29.01 CPU)
kill `cat t/logs/httpd.pid`
rm -f t/logs/httpd.pid
rm -f t/logs/error_log

Reply via email to